1、 LJMP START ORG 0003H ;外中断0中断程序入口 RETI ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ORG 0023H ;串行中断程序入口地址 ;-主程序-; START:MOV R0,#70H ;70给R0,清70-7FH显示内存 MOV R7,#0FH CLEARDISP:MOV R0,#00H ;0给R0中的数为地址的内存中存放(70H) INC R0 DJNZ R7,CLEARDISP MOV 78H,#2
2、;默认时间为12:00,闹钟5:00 MOV 79H,#1 MOV 74H,#2 ;防止上电时数码管显示00小时 MOV 75H,#1 MOV 66H,#1 ;中断退出时66H为1时,分、时计时单元数据移入显存标志 MOV 68H,#1 ;上电默认闹钟开状态 MOV 7DH,#6 ;闹钟时十位 MOV 7CH,#3 MOV 69H,#0 MOV 7AH,#0AH ;放入熄灭符数据 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SET
3、B TR0 ;T0定时器开始计时 MOV R4,#14H ;1秒定时用初值(50MS20) START1:LCALL DISPLAY ;显示子程序 LCALL BEEP ;闹钟查询 JNB P1.7,SETTIME ;P1.7口为0时转时间调整程序 JMP START1 ;P1.7口为1时跳回START1 -时间闹钟调整系统-; NFLAG:MOV A,68H ;设置闹钟开关状态 CJNE A,#1,BEE68 MOV 68H,#0 JMP E6 BEE68:MOV 68H,#1 E6:MOV 66H,#8 ;中断退出66H不为1时分、时计时单元数据移入显存标志 MOV 72H,7BH MOV
4、 73H,7CH MOV 74H,7DH MOV 75H,7EH LCALL DDL MOV 72H,68H MOV 73H,69H MOV 74H,7AH MOV 75H,7AH MOV 66H,#1 LJMP START1 SETTIME:LCALL DDL P1.7,NFLAG ;键按下时间小于1秒,设置闹钟开关状态并查看闹钟时间,不关走时,确保准确,大于1秒调时 MOV TL1,#0B0H ;T1闪烁定时初值 MOV TH1,#3CH MOV R2,#06H ;进入调时状态,赋闪烁定时初值 MOV 66H,#8 ;调闹钟时保持走时,关闭时钟显示数据 SETB ET1 ;允许T1中断 S
5、ETB TR1 ;开启定时器T1 SET1:调用显示,防止键按下无显示 JNB P1.7,SET1 ;P1.7口为0等待键释放 MOV R5,#00H ;清设置类型闪烁标志 SETN1:INC R5 ;闹钟分调整 SET5:LCALL DISPLAY P1.7,SET5 SEETN1:LCALL DDL ;有键按下大于1秒分时间连续加(0.5秒加1),小于1秒转调时状态 P1.7,SET6 ;键释放查询,键释放自动转调时 MOV R0,#7CH LCALL ADD1 MOV A,R3 CLR C CJNE A,#60H,HHN1 HHN1:JC SEETN1 LCALL CLR0 JMP SE
6、ETN1 SET6:闹钟时调整 SEET6: P1.7,SEET6 SEETNH1: P1.7,SETF MOV R0,#7EH CJNE A,#24H,HOUU1 HOUU1:JC SEETNH1 JMP SEETNH1 SETF: JNB P1.7,SETOUT ;短按调时,长按退出 CLR ET0 CLR TR0 MOV 70H,#00H ;设定后的时间从00秒开始走时 MOV 71H,#00H INC R5 SET3: P1.7,SET3 SETMM: P1.7,SET4 MOV R0,#77H CJNE A,#60H,MMH MMH:JC SETMM AJMP SETMM SET4:
7、INC R5 SEET4: P1.7,SEET4 SETHH: P1.7,SETOUT1 MOV R0,#79H CJNE A,#24H,HOUU HOUU:JC SETHH AJMP SETHH SETOUT1:SETB ET0 计时开始 SETOUT:MOV R5,#00H ; CLR TR1 ;关闭T1 CLR ET1 ;关T1中断 SETOUT2: JNB P1.7,SETOUT2 -延时1秒钟-; DDL:MOV 18H,#36 DDL0:MOV 17H,#239 DDL1: DJNZ 17H,DDL1 DJNZ 18H,DDL0 RET -T0中断程序-; INTT0: PUSH
8、ACC ;打包 PUSH PSW MOV A,#0B7H ADD A,TL0 MOV TL0,A MOV A,#3CH ADDC A,TH0 MOV TH0,A SETB TR0 DJNZ R4, OUTT0 ;20次中断未到中断退出 ADDSS:20次中断到(1秒)重赋初值 MOV R0,#71H ;指向秒计时单元(70-71H) ACALL ADD1 ;调用加1程序(加1秒操作) MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志 CJNE A,#60H,ADDMM ADDMM: JC OUTT01 ;小于60秒退出 ACALL CLR0 ;等于或大于60
9、秒清0 MOV R0,#77H ;指向分计时单元(76H-77H) ACALL ADD1 CJNE A,#60H,ADDHH ADDHH: JC OUTT0 ACALL CLR0 MOV R0,#79H ;指向小时计时单元(78H-79H) CJNE A,#24H,HOUR HOUR: OUTT0: MOV A,66H ;查询标志 CJNE A,#1,OUTT01 MOV 72H,76H ;中断退出时将分、时计时单元数据移入对应显示单元 MOV 73H,77H MOV 74H,78H MOV 75H,79H OUTT01:POP PSW ;出栈 POP ACC 开放T0 RETI ;中断返回
10、-加1程序-; ADD1: MOV A,R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ;A中数据高四位与低四位交换 ORL A,R0 ;前一地址中数据放入A中低四位 ADD A,#01H ;A加1操作 DA A ;十进制调整 MOV R3,A ;移入R3寄存器 ANL A,#0FH ;高四位变0 MOV R0,A ;放回前一地址单元 取回R3中暂存数据 INC R0 ;指向当前地址单元 数据放入当削地址单元中 CLR0: CLR A ;清累加器 清当前地址单元 前一地址单元清0 RET ;子程序返回 -调时闪烁程序-;INTT1: PUSH ACC MOV TL1
11、,#0B0H DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次) 重装0.3秒定时用初值 CPL 02H ;0.3秒定时到对闪烁标志取反 02H,FLASH1 ;02H位为1时显示单元熄灭 MOV A,R5 CJNE A,#01H,NL JMP NNN1 NL:CJNE A,#02H,NL1 LJMP NNN1 NL1:CJNE A,#03H,NL2 LJMP NLL NL2:CJNE A,#04H,INTT1OUT NLL:MOV 72H,76H AJMP INTT1OUT NNN1:MOV 72H,7BH INTT1OUT:恢复现场 中断退出 FLASH1:MOV
12、 A,R5 CJNE A,#01H,ML LJMP MNN1 ML:CJNE A,#02H,ML1 LJMP MNN2 ML1:CJNE A,#03H,MN LJMP MLL MN: LJMP MHL MLL:MOV 72H,7AH MOV 73H,7AH ;显示单元(72-73H),将不显示分数据 MHL: MOV 74H,7AH ;显示单元(74-75H),小时数据将不显示 MNN1:显示单元(72-73H),将不显示闹钟分数据 MNN2: MOV 75H,7AH ;显示单元(74-75H),闹钟小时数据将不显示 -显示-; DISPLAY:MOV DPTR,#DISDATA MOV A,
13、70H MOVC A,A+DPTR MOV P3,A CLR P1.0 NOP SETB P1.0 MOV A,71H CLR P1.1 SETB P1.1 MOV A,72H CLR P1.2 SETB P1.2 MOV A,73H CLR P1.3 SETB P1.3 MOV A,74H CLR P1.4 SETB P1.4 MOV A,75H CLR P1.5 SETB P1.5 BEEP: CJNE A,#1,BEERE MOV A,78H ;查询闹钟时个位 CJNE A,7DH,BEERE MOV A,79H ;查询闹钟时十位 CJNE A,7EH,BEERE MOV A,76H ;查询闹钟分个位 CJNE A,7BH,BEERE MOV A,77H ;查询闹钟分十位 CJNE A,7CH,BEERE BB:CLR P1.6 SETB P1.6 JNB P1.7,BEERR BEERE:RET BEERR:SETB P1.6 LCALL DISPLAY JMP BEERE DISDATA:DB 0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H,50H,0FFH ;0123456789空白
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1