![单片机数字时钟课程设计代码_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/d4b48646-f070-4e1c-a4a1-5ba792d9001b/d4b48646-f070-4e1c-a4a1-5ba792d9001b1.gif)
![单片机数字时钟课程设计代码_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/d4b48646-f070-4e1c-a4a1-5ba792d9001b/d4b48646-f070-4e1c-a4a1-5ba792d9001b2.gif)
![单片机数字时钟课程设计代码_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/d4b48646-f070-4e1c-a4a1-5ba792d9001b/d4b48646-f070-4e1c-a4a1-5ba792d9001b3.gif)
![单片机数字时钟课程设计代码_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/d4b48646-f070-4e1c-a4a1-5ba792d9001b/d4b48646-f070-4e1c-a4a1-5ba792d9001b4.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、字,显示有;当R6=02时为显示拆字;当R6=03时为闹钟拆字,只手动切换,不自动*/ CZ:CJNE R6,#01H,L0 MOV R0,#30H MOV R1,#3AH CZ1:MOV A,R1 ANL A,#0FH MOV R0,A INC R0 MOV A,R1 ANL A,#0F0H SWAP A MOV R0,A INC R0 MOV R0,#10 ;查表中的第十位是-,32H,35H中为- INC R1 INC R0 CJNE R1,#3DH,CZ1 RET L0:CJNE R6,#02H,L2 MOV R1,#41H MOV R0,#30H CZ2:MOV A,R1 ANL A
2、,#0FH MOV R0,A INC R0 MOV A,R1 ANL A,#0F0H SWAP A MOV R0,A INC R0 INC R1 CJNE R1,#45H,CZ2 RET L2: CJNE R6,#03H,L1 CZ3:MOV A,4BH MOV B,A ANL A,#0FH MOV 30H,A MOV A,B SWAP A ANL A,#0FH MOV 31H,A MOV 32H,#0AH MOV A,4CH MOV B,A ANL A,#0FH MOV 33H,A MOV A,B SWAP A ANL A,#0FH MOV 34H,A MOV 35H,#0BH MOV 36
3、H,#0BH ; JNB 20H.1 ,BK ;判断闹钟开关,当开的时候38H显示0 MOV 37H,#00H SJMP L1 BK: MOV 37H,#0BH L1: RET ; 显示更新子程序 DISP:MOV R0,#30H ;显示更新子程序。显示缓冲单元首地址 MOV R3,#01H ;字位码初值(从最右位起) MOV A,R3 DISP1:MOV DPTR,#0FEFDH ; 8255-B口(字位码输出口) MOVX DPTR,A ; 输出当前字位码 MOV A,R0 ADD A,#TAB-NEXTPC ; 加TAB与NEXTPC差址 MOVC A,A+PC ; 查表得相应字段码 N
4、EXTPC:LCALL JIAD ;日期加点 MOV DPTR,#0FEFCH ; 8255-A口(字段码输出口) MOVX DPTR,A ; 输出字段码 LCALL D1MS ; 保持显示1毫秒 INC R0 ; 指向下一显示缓冲单元 MOV A,R3 ; 取出字位码 JB ACC.7,DISP2 ; 判已显示到最左位否 RL A ; 未完,字位码左移1位 MOV R3,A ; 回存新字位码 LJMP DISP1 ; 转下一位的显示驱动 DISP2:RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;"0"&q
5、uot;9" 显示字段码表 DB 0BFH,0FFH ;- 灭 JIAD:CJNE R6, #02H,JIND2 ;当显示日期时,加小数点 CJNE R0 ,#30H ,DIAN1 ANL A,#7FH DIAN1:CJNE R0,#32H,DIAN2 ANL A,#7FH DIAN2:CJNE R0,#34H,JIND2 ANL A,#7FH JIND2:RET ; 显示定时控制程序 IT0P:PUSH ACC ;定时器0服务子程序。保护现场 PUSH PSW INC 38H ;每200uS加1 MOV A,38H CJNE A,#50,DONE4 ;满10mS? MOV 38H,
6、#0 ;200uS计数单元清0 INC 39H ;每10mS加1 MOV A,39H CJNE A,#25,DONE8 ;与250ms比较 CLR 20H.0 LJMP DONE11 DONE8:CJNE A,#50,DONE9 SETB 20H.0 LJMP DONE11 DONE9:CJNE A,#75,DONE10 CLR 20H.0 LJMP DONE11 DONE10:CJNE A,#100,DONE11 SETB 20H.0 DONE11:CJNE A,#100,DONE4 ;满1S? MOV 39H,#0 ;10mS计数单元清0 MOV A,23H ADD A,#1 DA A M
7、OV 23H,A MOV A,5DH ADD A,#1 DA A MOV 5DH,A LCALL ZD ;时间日期自动切换 MOV A,3AH ;秒单元(按BCD码)加1 ADD A,#1 DA A MOV 3AH,A CJNE A,#60H,DONE4 ;满1分钟? SETB 20H.3 MOV 3AH,#0 ;秒单元清零 MOV A,3BH ;分钟单元(按BCD码)加1 ADD A,#1 DA A MOV 3BH,A CJNE A,#60H,DONE4 ;满1小时? MOV 3BH,#0 ;分钟单元清零 MOV A,3CH ;小时单元(按BCD码)加1 ADD A,#1 DA A MOV
8、3CH,A CJNE A,#24H,DONE4 ;满24小时? MOV 3CH,#0 ;小时单元清零 MOV A,41H ADD A,#01H ;日期加1 DA A MOV 41H,A LCALL NYR DONE4: POP PSW ;恢复现场 POP ACC RETI ;中断返回 ZD:CJNE R6,#01H,ZD1 MOV A,5DH ;秒计数单元 CJNE A,5AH,ZD3 ;时间保持时间 MOV R6,#02H MOV 5DH,#00H ZD1:CJNE R6,#02H,ZD3 MOV A,5DH CJNE A,5BH,ZD3 ;日期显示时间 MOV R6,#01H MOV 5D
9、H,#00H ZD3:RET NYR:MOV A,42H CJNE A,#02H,TD1 ;判断是否为2月 LCALL RUN ;判断是闰年还是平年 MOV A,65H ;闰年标志位存65H TD0:CJNE A,#00H,DAY28 LJMP DAY29 TD1: CJNE A,#04,TD2 ;4月30天 LJMP DAY30 TD2:CJNE A,#06H,TD3 LJMP DAY30 ;6月30天 TD3:CJNE A,#09H,TD4 LJMP DAY30 ;9月30天 TD4: CJNE A,#11H,TD5 LJMP DAY30 ;11月30天 TD5:LJMP DAY31 ;其
10、他月31天 DAY28:MOV A,41H CJNE A,#29H,TS0 ;日期是否等于29 MOV 41H,#01H ;日期等于29置1 MOV A,42H ;月份加1 ADD A,#01H DA A MOV 42H,A LJMP TS0 DAY29: MOV A,41H CJNE A,#30H,TS0 ;日期是否等于30 MOV 41H,#01H ;日期等于30置1 MOV A,42H ;月份加1 ADD A,#01H DA A MOV 42H,A LJMP TS0 DAY30:MOV A,41H CJNE A,#31H,TS ;加1后日期是否等于31 MOV 41H,#01H ;日期等
11、于31时置1 MOV A,42H ;月份加1 ADD A,#01H DA A MOV 42H,A LJMP NYSD DAY31: MOV A,41H CJNE A,#32H,TS ;加1后日期是否等于32 MOV 41H,#01H ;日期等于32是置1 MOV A,42H ;月份加1 ADD A,#01H DA A MOV 42H,A NYSD: CJNE A,#13H,TS0 ;加1后月份是否等于13 MOV 42H,#01H ;月份置1 MOV A,43H ADD A,#01H ;年份加1 DA A MOV 43H,A TS0: RET ; 年份判断,闰年 RUN:MOV A,43H ;
12、闰年判断,求标志位 ANL A,#0FH ;因为固定为20XX年,选后一个X MOV 68H,A ;暂存后两位于68H MOV A,43H ANL A,#0F0H ;因为固定为20XX年,选前一个X SWAP A MOV 69H,A ;暂存后两位于69HH MOV A,69H MOV B,#10 MUL AB ;前X乘以10 ADD A,68H ;前X乘以10+后X MOV B,#4 DIV AB MOV 65H,B ;存余数,也就是闰年标志位是否为零,为零为闰年 TS: RET ; 延时子程序 D1S:MOV R7,#8 ;软件延时1S子程序 D1S2:MOV R4,#200 D1S1:MO
13、V R5,#200 D1S0:NOP DJNZ R5,D1S0 DJNZ R4,D1S1 DJNZ R7,D1S2 RET D02S:MOV R7,#8 ;软件延时0.2S子程序 D02S2:MOV R4,#40 D02S1:MOV R5,#200 D02S0:NOP DJNZ R5,D02S0 DJNZ R4,D02S1 DJNZ R7,D02S2 RET D1MS:MOV R7,#154 ;软件延时约1mS子程序 D1MS1:NOP NOP NOP NOP NOP NOP DJNZ R7,D1MS1 RET END ;-键盘扫描子程序- ; KEY:MOV 26H,25H ;键号存于25H
14、 ; MOV A,#81H ;键盘扫描子程序 ; MOV DPTR,#0FEFFH ; MOVX DPTR,A ;C口先初始化为高4位输出驱键行线、低4位输入键列线 ; MOV DPTR,#0FEFEH ;键盘行线(高4位输出驱动全'0' ; MOV A,#00H ; MOVX DPTR,A ; MOVX A,DPTR ;输入键盘列线电平(低4位 ; MOV 24H,A ; MOV A,#88H ;C口改初始化为高4位输入驱键行线、低4位输出驱键列线 ; MOV DPTR,#0FEFFH ; MOVX DPTR,A ; MOV DPTR,#0FEFEH ;键盘列线(低4位输出驱
15、动全'0' ; MOV A,#00H ; MOVX DPTR,A ; MOVX A,DPTR ;输入键盘行线电平(高4位 ; ANL 24H,#0FH ;列线电平值保留所在的低4位 ; ANL A,#0F0H ;行线电平值保留所在的高4位 ; ORL 24H,A ;两次输入的列线、行线电平组合成8位行列码 ; MOV 27H,#00H ;键号初值为00H ; MOV R5,#10H ;将进行16个键码查表 ; MOV DPTR,#KEY_N ;键码表首地址 ; KY:MOV A,#00H ; MOVC A,A+DPTR ;查表读取键码表中当前位置键码 ; CJNE A,24H,
16、NK ;与8位行列码比较,不同则转NK查下一个 ; MOV 25H,27H ;相同则转KN根据已获 取的键号进行相应处理 ; RET ; NK:INC 27H ;键号加1 ; INC DPTR ;指向键值表下一个位置 ; DJNZ R5,KY ;未查完,继续 ; MOV 25H,#0FFH ; RET ;查完,说明无按键或出现异常行列码直接返回 ; KEY_N:DB 0EEH,0EDH,0EBH,0E7H ;键码K0,K1,K2,K3 ; DB 0DEH,0DDH,0DBH,0D7H ;键码K4,K5,K6,K7 ; DB 0BEH,0BDH,0BBH,0B7H ;键码K8,K9,K10,K1
17、1 ; DB 7EH,7DH,7BH,77H ;键码K12,K13,K14,K15 ;-手动切换- ; KEY100000:MOV A,26H ; CJNE A,#0FFH,P102 ; MOV A,25H ; CJNE A,#0AH,P102 ; CJNE R6,#01H,P100 ; MOV R6,#02H ; MOV 5DH,#00H ; SJMP P102 ; P100:CJNE R6,#02H,P101 ; MOV R6,#03H ; MOV 5DH,#00H ; SJMP P102 ; P101:CJNE R6,#03H,P102 ; MOV R6,#01H ; MOV 5DH,#00H ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合伙干股协议书
- 三农政策下的乡村旅游发展作业指导书
- 矿业与资源开发技术作业指导书
- 技术服务合同
- 管理咨询专业服务协议书
- 贷款担保书的
- 三农村合作社应急管理方案
- 小学三年级口算题两三位数乘除一位数
- 2025年阳泉资格证模拟考试
- 小学六年级数学口算竞赛试题
- 智能RPA财务机器人开发教程-基于来也UiBot 课件 第1章-机器人流程自动化概述
- 2024-2025学年天津市河东区高一上学期期末质量检测数学试卷(含答案)
- 信永中和笔试题库及答案
- 甲流乙流培训课件
- 《视网膜静脉阻塞》课件
- 2025《省建设工程档案移交合同书(责任书)》
- 《大学英语1》期末考试试卷及答案(专科)
- 《石油钻井基本知识》课件
- 2024新沪教版英语(五四学制)七年级上单词默写单
- 电力两票培训
- TCCEAS001-2022建设项目工程总承包计价规范
评论
0/150
提交评论