已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
;/;本程序源代码由湖南工程职业技术学院提供.;专业单片机培训,让你学习单片机更容易.;程序员:蒋庆桥 ;QQ:xxxxxxxxx;本程序用汇编实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历,H_ADJ BIT P3.0 ;时/年调整M_ADJ BIT P3.1 ;分/月调整S_ADJ BIT P1.4 ;秒/日调整DT_SET BIT P1.6 ;时间/日期选择STR BIT P1.5;启动走时T_RST BIT P1.0 ;实时时钟复位线引脚T_CLK BIT P1.1 ;实时时钟时钟线引脚T_IO BIT P1.2 ;实时时钟数据线引脚 HH_BIT EQU 40H ;时高位HL_BIT EQU 41H ;时低位MH_BIT EQU 42H ;分高位ML_BIT EQU 43H ;分低位SH_BIT EQU 44H ;秒高位SL_BIT EQU 45H ;秒低位TEMPER_L EQU 46HTEMPER_H EQU 47HYH_BIT EQU 48H ;年高位YL_BIT EQU 49H ;年低位MOH_BIT EQU 4aH ;月高位 MOL_BIT EQU 4bH ;月低位DH_BIT EQU 4cH ;日高位DL_BIT EQU 4dH ;日低位SEC EQU 30H MIN EQU 31HHOUR EQU 32HDAY EQU 33HMONTH EQU 34HWEEK EQU 35HYEAR EQU 36HTEMPERequ 37hFLAG1 BIT 20h.0 ;DS18B20存在标志位DQ BIT P1.3A_BIT EQU 55HB_BIT EQU 56HDS1302_ADDR EQU 5EHDS1302_DATA EQU 5FHORG 00HLJMP STARTSTART:MOV SP,#60HMOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0HMOV R0,#10SETB EASETB ET0SETB TR0MOV R1,37HMOV YEAR,#13H ;上电预置日期、时间MOV WEEK,#03H ;周1 MONMOV MONTH,#07H ;2011 04 25 12:00:00 MOV DAY,#05HMOV HOUR,#23HMOV MIN,#00HMOV SEC,#00HMOV 50H,#0 / MAIN: LCALL KEY/MAIN2:CALL FENLILCALL INIT_18B20 LCALL GET_TEMPER call CHANGEcall dispcalldisplayAJMP MAIN FENLI:MOV A,YEAR MOV B,#10HDIV ABMOV YL_BIT,BMOV YH_BIT,A MOV A,MONTHMOV B,#10HDIV ABMOV MOL_BIT,BMOV MOH_BIT,AMOV A,DAYMOV B,#10HDIV AB MOV DL_BIT,BMOV DH_BIT,AMOV A,HOUR MOV B,#10HDIV ABMOV HL_BIT,BMOV HH_BIT,AMOV A,MINMOV B,#10HDIV AB MOV ML_BIT,BMOV MH_BIT,AMOV A,SECMOV B,#10HDIV ABMOV SL_BIT,BMOV SH_BIT,ARETKEY: ;按键子程序JB F0,MAIN10 ;F0=1,开始走时。走时前写,不读。走时后读,不写。LCALL WR1302 AJMP key_setMAIN10:LCALL RD1302KEY_SET:JB DT_SET,KEY_HACALL D10MSJNB DT_SET,$-2CPL 7FHAJMP RTKEY_H: JB H_ADJ,KEY_MACALL D10MSJNB H_ADJ,$-2AJMP H_ADDKEY_M:JB M_ADJ,KEY_SACALL D10MSJNB M_ADJ,$-2AJMP M_ADDKEY_S:JB S_ADJ,KEY_STACALL D10MSJNB S_ADJ,$-2AJMP S_ADDKEY_ST:JB STR,RTACALL D10MSJNB STR,$-2AJMP K_STRRT:RETH_ADD:JB 7FH,Y_ADD ;7FH为日期/时间切换键标志。1为年月日。MOV A,HOURADD A,#01HDA ACJNE A,#24H,H_ADD1MOV A,#0H_ADD1:MOV HOUR,AAJMP RTY_ADD:MOV A,YEARADD A,#01HDA A CJNE A,#20H,Y_ADD1MOV A,#0Y_ADD1:MOV YEAR,AAJMP RTM_ADD:JB 7FH,MO_ADD MOV A,MINADD A,#01HDA ACJNE A,#60H,M_ADD1MOV A,#00HM_ADD1:MOV MIN,AAJMP RTMO_ADD: MOV A,MONTHADD A,#01HDA ACJNE A,#13H,MO_ADD1MOV A,#1MO_ADD1:MOV MONTH,AAJMP RTS_ADD:JB 7FH,D_ADDMOV A,SECADD A,#01HDA ACJNE A,#60H,S_ADD1MOV A,#00HS_ADD1:MOV SEC,AAJMP RTD_ADD:MOV A,DAYADD A,#01HDA ACJNE A,#32H,D_ADD1MOV A,#01HD_ADD1:MOV DAY,AAJMP RTW_ADD:MOV A,WEEKADD A,#01HDA ACJNE A,#7H,W_ADD1MOV A,#0W_ADD1:MOV WEEK,AAJMP RTK_STR:MOV DS1302_ADDR,#80H ;开始振荡MOV DS1302_DATA,SECLCALL WRITEMOV DS1302_ADDR,#8EH ;禁止写入1302MOV DS1302_DATA,#80HLCALL WRITEcpl f0/SETB F0CLR P2.7AJMP RT WR1302: MOV DS1302_ADDR,#8EH MOV DS1302_DATA,#00H ;允许写1302LCALL WRITEMOV DS1302_ADDR,#80HMOV DS1302_DATA,#80H ;1302停止振荡LCALL WRITEMOV DS1302_ADDR,#8CH ;年写入1302MOV DS1302_DATA,YEARLCALL WRITE MOV DS1302_ADDR,#8AH ;周写入1302MOV DS1302_DATA,WEEKLCALL WRITEMOV DS1302_ADDR,#88H ;月写入1302MOV DS1302_DATA,MONTHLCALL WRITEMOV DS1302_ADDR,#86H ;日写入1302MOV DS1302_DATA,DAYLCALL WRITEMOV DS1302_ADDR,#84H ;时写入1302MOV DS1302_DATA,HOURLCALL WRITEMOV DS1302_ADDR,#82H ;分写入1302MOV DS1302_DATA,MINLCALL WRITEMOV DS1302_ADDR,#82H ;秒写入1302MOV DS1302_DATA,MINLCALL WRITERETWRITE: CLR T_CLKNOPSETB T_RSTNOPMOV A,DS1302_ADDRMOV R4,#8WRITE1:RRC A NOPNOPCLR T_CLKNOPNOPNOPMOV T_IO,CNOPNOPNOPSETB T_CLKNOPNOPDJNZ R4,WRITE1CLR T_CLKNOPMOV A,DS1302_DATAMOV R4,#8WRITE2: RRC ANOP CLR T_CLKNOPNOPMOV T_IO,CNOPNOPNOPSETB T_CLKNOPNOPDJNZ R4,WRITE2CLR T_RSTRETRD1302:MOV DS1302_ADDR,#8DH ;年读出LCALL READMOV YEAR,DS1302_DATAMOV DS1302_ADDR,#8BH ;周读出 LCALL READMOV WEEK,DS1302_DATAMOV DS1302_ADDR,#89H ;月读出 LCALL READMOV MONTH,DS1302_DATAMOV DS1302_ADDR,#87H ;日读出LCALL READMOV DAY,DS1302_DATAMOV DS1302_ADDR,#85H ;时读出LCALL READMOV HOUR,DS1302_DATAMOV DS1302_ADDR,#83H ;分读出LCALL READMOV MIN,DS1302_DATAMOV DS1302_ADDR,#81H ;秒读出LCALL READMOV SEC,DS1302_DATARET READ: CLR T_CLKNOPNOPSETB T_RSTNOPMOV A,DS1302_ADDRMOV R4,#8 READ1: RRC AMOV T_IO,CNOPNOPNOPSETB T_CLKNOPNOPNOPCLR T_CLKNOPNOPDJNZ R4,READ1MOV R4,#8 READ2: CLR T_CLKNOPNOPNOPMOV C,T_IONOPNOPNOPNOPNOPRRC ANOPNOPNOPNOPSETB T_CLKNOPDJNZ R4,READ2MOV DS1302_DATA,ACLR T_RSTRETDISP: MOVP2,#0FFHMOV A,YH_BITMOV DPTR,#TABMOVC A,A+DPTRMOV P2,AMOV P3,#11111011BCALL DELAY MOV P3,#0FFHMOVP2,#0FFHMOV A,YL_BITMOVC A,A+DPTRMOV P2,AMOV P3,#11110111BCALL DELAYMOV P3,#0FFHMOVP2,#0FFHMOV A,MOH_BITMOVC A,A+DPTRMOV P2,AMOV P3,#11101111BCALL DELAYMOV P3,#0FFHMOVP2,#0FFHMOV A,MOL_BITMOVC A,A+DPTRMOV P2,AMOV P3,#11011111B CALL DELAY MOV P3,#0FFH MOVP2,#0FFHMOV A,DH_BITMOVC A,A+DPTRMOV P2,AMOV P3,#10111111BCALL DELAY MOV P3,#0FFHMOVP2,#0FFHMOV A,DL_BITMOVC A,A+DPTRMOV P2,AMOV P3,#01111111BCALL DELAY MOV P3,#0FFHMOVP2,#0FFHMOV A,HH_BITMOVC A,A+DPTRMOV P2,AMOV P0,#11111110BCALL DELAY MOV P0,#0FFHMOVP2,#0FFHMOV A,Hl_BITMOVC A,A+DPTRMOV P2,AMOV P0,#11111101BCALL DELAY MOV P0,#0FFHMOVP2,#0FFH MOV A,mH_BITMOVC A,A+DPTRMOV P2,AMOV P0,#11111011BCALL DELAY MOV P0,#0FFHMOVP2,#0FFHMOV A,ml_BITMOVC A,A+DPTRMOV P2,AMOV P0,#11110111BCALL DELAY MOV P0,#0FFH MOVP2,#0FFHMOV A,sH_BITMOVC A,A+DPTRMOV P2,AMOV P0,#11101111BCALL DELAY MOV P0,#0FFH MOVP2,#0FFHMOV A,sl_BITMOVC A,A+DPTRMOV P2,AMOV P0,#11011111BCALL DELAY MOV P0,#0FFHMOVP2,#0FFHMOV A,weekMOVC A,A+DPTRMOV P2,Aclr p1.7CALL DELAY setb p1.7RETD1MS: MOV R7,#250LOOP0: NOPNOPDJNZ R7,LOOP0RETD10MS:MOV R4,#4MOV R3,#200DJNZ R3,$DJNZ R2,$-4RET ;/表的制作/tab:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h; /1-6共阴代码 ;/延时子程序/;输入:无;输出: 无;实现的功能:延时一段时间delay: ;=1s ov MOV r6,#30D: MOV r7,#20 DJNZ r7,$ DJNZ r6,D RET ;/ds18b20复位子程序/;输入:dq;输出:dp;实现的功能:将ds18b20 复位INIT_18B20: SETB DQ NOP CLR DQ MOV R0,#0FBHTSR1: DJNZ R0,TSR1 ;延时 SETB DQ MOV R0,#25HTSR2: JNB DQ ,TSR3 DJNZ R0,TSR2TSR3: SETB FLAG1 ;置标志位,表明DS18B20存在 CLR P2.0 ;二极管指示 AJMP TSR5TSR4: CLR FLAG1 LJMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,TSR6TSR7:SETB DQ ;表明不存在 RET/*;*设定DS18B20暂存器设定值*RE_CONFIG: JB FLAG1,RE_CONFIG1 RETRE_CONFIG1: MOV A,#0CCH ;放跳过ROM命令 LCALL WRITE_18B20 MOV A,#4EH LCALL WRITE_18B20 ;写暂存器命令 MOV A,#00H ;报警上限中写入00H LCALL WRITE_18B20 MOV A,#00H ;报警下限中写入00H LCALL WRITE_18B20 MOV A,#1FH ;选择九位温度分辨率 LCALL WRITE_18B20 RET */ ;/读温度子程序/;输入:;输出:温度;实现的功能:读转换后的温度值GET_TEMPER: SETB DQ LCALL INIT_18B20 JB FLAG1,TSS2 RET ;若不存在则返回 TSS2: MOV A,#0CCH ;跳过ROM LCALL WRITE_18B20 MOV A,#44H ;发出温度转换命令 LCALL WRITE_18B20 ; LCALL DISPLAY ;延时 LCALL INIT_18B20 MOV A,#0CCH ;跳过ROM LCALL WRITE_18B20 MOV A,#0BEH ;发出读温度换命令 LCALL WRITE_18B20 LCALL READ2_18B20 ;读两个字节的温度 RET ;/写入ds18b20子程序/;输入:c;输出:;实现的功能:将数据写入ds18b20中 WRITE_18B20: MOV R2,#8 CLR C WR1: CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古工程项目管理有限公司招聘6人考试笔试模拟试题及答案解析
- 首都医科大学附属北京儿童医院面向2026年应届毕业生(含社会人员)招聘135人笔试考试备考试题及答案解析
- 2025年安徽师范大学附属肥西外国语学校(初中部)教师招聘1人考试笔试模拟试题及答案解析
- 2025黑龙江佳木斯北大荒华源资产管理有限公司招聘1人笔试考试参考题库及答案解析
- 山东省菏泽市高三上学期期中考试英语试题(B)
- 2025四川乐山沐川县人力资源和社会保障局招聘城镇公益性岗位人员2人笔试考试备考题库及答案解析
- 2025年中国广电甘肃网络股份有限公司临夏州分公司招聘考试笔试备考试题及答案解析
- 2025贵州贵阳市乌当区实验小学招聘临聘教师1人考试笔试备考题库及答案解析
- 2026内蒙古鄂尔多斯市东胜区卫生健康系统事业单位引进紧缺和成熟型控制数工作人员36人笔试考试备考试题及答案解析
- 2025云南丽江宁蒗县大兴街道办事处面向社会公开招聘公益性岗位11人考试笔试模拟试题及答案解析
- 《NBT 33001 电动汽车非车载传导式充电机技术条件》
- 四川大学中国现代文学30年期末复习总结
- 民用建筑外门窗应用技术标准
- EPC项目设计管理机构的构成和设计力量的配备
- 机电安装工程安全管理
- 核电专业英语试题库来自工程公司
- 复混肥料质量手册
- 美容院员工培训课件:美容院服务礼仪
- 综合考试真题集锦-老年人能力评估师(50题,含答案)
- 天津工业大学804物理化学历年考研真题14-16
- 大学课件-机电传动控制(完整)
评论
0/150
提交评论