文档详情

at89c51实现的数字钟.doc

发布:2018-02-26约4.54千字共11页下载文档
文本预览下载声明
ALB EQU 20H.0 S_SET BIT P1.0;秒键 M_SET BIT P1.1;分键 H_SET BIT P1.2;时键 T_SET BIT P1.3;设定时间键 A_SET BIT P1.4;确认键键 AM_SET BIT P1.5;闹铃设定键 SPK BIT P1.6 SECOND EQU 30H MINUTE EQU 31H HOUR EQU 32H TCNT EQU 34H HH EQU 35H MM EQU 36H SS EQU 37H ORG 00H JMP START ORG 0BH JMP INT_T0 START: CLR ALB MOV DPTR,#TABLE MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 MOV TCNT,#0 LCALL INIT LCALL BZ LCALL BZ LCALL BZ ;---------------判断是否有键按下---- LOOP: ACALL DISPLAY ACALL TIME_PR0 ACALL DISPLAY JB T_SET,L2 ACALL DELAY JNB T_SET,L1 JMP LOOP L1: ACALL DISPLAY LCALL SET_TIME JMP LOOP L2: JB AM_SET,LOOP ACALL DELAY JB AM_SET,LOOP LCALL SET_ALARM JMP LOOP ;-------------------------------设定表时间--------------------------------------------------------- SET_TIME: CLR TR0 MOV SECOND,#0 A1: ACALL DISPLAY ;---秒键 JNB S_SET,S1 JNB M_SET,S2 JNB H_SET,S3 JNB A_SET,S4 LJMP A1 S1:ACALL DELAY;--消除颤抖 JB S_SET,A1 INC SECOND;--秒设定 MOV A,SECOND CJNE A,#60,J0 MOV SECOND,#0 LJMP K1 S2:ACALL DELAY;------分键 JB M_SET,A1 K1:INC MINUTE MOV A,MINUTE CJNE A,#60,J1 MOV MINUTE,#0 JMP K2 S3:ACALL DELAY;-------时键 JB H_SET,A1 K2:INC HOUR MOV A,HOUR CJNE A,#24,J2 MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 JMP A1 S4:ACALL DELAY JB A_SET,BACKK JMP S4 ;-------------- J0:JB S_SET,A1;秒设置键松开 ACALL DISPLAY JMP J0 J1:JB M_SET,A1 ACALL DISPLAY JMP J1 J2: JB H_SET,A1 ACALL DISPLAY JMP J2 BACKK:ACALL BZ ACALL BZ ACALL BZ SETB TR0 RET ;--------------------------中断断服务程序----------------------------------------------------------- INT_T0:MOV TL0,#0B0H MOV TH0,#3CH INC TCNT MOV A,TCNT CJNE A,#20,RETURN INC SECOND MOV TCNT,#0 MOV A,SECOND CJNE A,#60,RETURN INC MINUTE MOV SECOND,#0 MOV A,MINUTE CJNE A,#60,RETURN INC HOUR MOV MINUTE,#0 MOV A,HOUR CJNE A,#24,RETURN
显示全部
相似文档