完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
ORG 0000H
AJMP MAIN // ;跳转到主程序 ORG 000BH // ;T0中断入口 AJMP PTF0 // ;中断处理首地址 //主程序 MAIN: MOV SP,#05FH MOV 30H,#0 // ;缓冲单元设置初值12:00:00 MOV 31H,#0 MOV 32H,#0 CLR F0 MOV 36H,#0FH // ; 设置4000次中断计数 MOV 37H,#0A0H MOV TMOD,#02H // ;定时器启动 MOV TL0,#6 MOV TH0,#6 SETB TR0 // 启动T0计时器 MOV IE,#82H MOV IP,#20H //数码管动态显示 LED6: LCALL DISPLAY JNB P1.0,CLEAR //;判断键盘输入 JNB P1.1,SET_MINUTE JNB P1.2,SET_HOUR AJMP LED6 CLEAR: LCALL DISPLAY JNB P1.0,CLEAR MOV 30H,#12H //;时钟显示复位 A键 MOV 31H,#0 MOV 32H,#0 SJMP LED6 SET_MINUTE: LCALL DISPLAY JNB P1.1,SET_MINUTE MOV A,31H //;调节分加1 B键 CJNE A,#59H,MIN MOV 31H,#0 SJMP LED6 SET_HOUR: LCALL DISPLAY JNB P1.2,SET_HOUR MOV R1,#30H //;调节时加1 C键 MOV A,@R1 CJNE A,#23H,HOUR // 比较立即数和A,不相等则转移 MOV 30H,#0 MIN: ADD A ,#1 //将1加到累加器 DA A // 累加器十进制调整 MOV 31H,A LCALL DELAY1 AJMP LED6 HOUR: ADD A,#1 DA A MOV 30H,A LCALL DELAY1 AJMP LED6 DISPLAY: MOV DPTR,#TAB //;表的首地址给16位数据指针寄存器DPTR MOV A,30H // ;时为的十位显示 SWAP A // A的高四位和低四位互换 ANL A,#0FH // A与00001111相与 MOVC A,@A+DPTR // 程序存储器代码字节传送到累加器 MOV P2,#7FH MOV P0,A LCALL DELAY //调用延时子程序 MOV A,30H // ;时位的个位显示 ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0BFH MOV P0,A LCALL DELAY MOV P2,#0DFH //显示间隔 MOV P0,#40H LCALL DELAY MOV A,31H // ;分位的十位显示 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0EFH MOV P0,A LCALL DELAY MOV A,31H //;分位的个位显示 ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0F7H MOV P0,A LCALL DELAY MOV P2,#0FBH //显示间隔 MOV P0,#40H LCALL DELAY MOV A,32H // ;秒位的十位显示 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A LCALL DELAY MOV A,32H //;秒位的个位显示 ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY RET //中断程序 PTF0: PUSH PSW ;中断处理 PUSH ACC MOV PSW,#8 DJNZ 37H,PTF0R DJNZ 36H,PTF0R MOV 36H,#0FH MOV 37H,#0A0H MOV R0,#32H //;定时到一秒 MOV A,@R0 ADD A,#1 DA A MOV @R0,A CJNE A,#60H,PTF0R MOV @R0,0 DEC R0 MOV A,@R0 ADD A,#1 DA A MOV @R0,A CJNE A,#60H,PTF0R MOV @R0,#0 DEC R0 MOV A,@R0 ADD A,#1 DA A MOV @R0,A CJNE A,#24H,PTF0R MOV @R0,#0 PTF0R: POP ACC // 保护现场 POP PSW REti // 中断返回 DELAY: MOV R6,#10 //;动态显示延时 L0: MOV R7,#250 DJNZ R7,$ DJNZ R6,L0 // 寄存器减一,不为0则转移 RET // 子程序返回 DELAY1: MOV R5,#1BH //;调整时、分显示延时 L1: MOV R6,#9H L2: MOV R7,#19H DJNZ R7,$ DJNZ R6,L2 DJNZ R5,L1 RET DELAY2: MOV R2,#17 L3: MOV R3,#98 L4: MOV R4,#46 DJNZ R7,$ DJNZ R6,L4 DJNZ R5,L3 RET //数码显示表 TAB: DB 3FH,06H,5BH,4FH,66H // ; 0,1,2,3,4 DB 6DH,7DH,07H,7FH,6FH // ; 5,6,7,8,9 END
|
|
相关推荐
1个回答
|
|
求帮助,帮忙修改一下程序,让中间的间隔符实现点闪功能
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
494 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1050 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1151 浏览 0 评论
887 浏览 0 评论
928 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11847 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 20:37 , Processed in 0.509709 second(s), Total 74, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号