⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at89c2051日期闹钟.asm

📁 用at89c2051时间加日期显示的闹钟
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                     ;带日期的闹钟;
                        ORG       0000H              ;程序开始入口 
                        LJMP      START 
                        ORG       0003H              ;外中断0中断程序入口 
                        RETI 
                        ORG       000BH              ;定时器T0中断程序入口 
                        LJMP      INTT0              ;跳至INTTO执行 
                        ORG       0013H              ;外中断1中断程序入口 
                        RETI 
                        ORG       001BH              ;定时器T1中断程序入口 
                        LJMP      INTT1 
                        ORG       0023H              ;串行中断程序入口地址 
                        RETI 
      ;;;;;;;;;;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
                   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              ;默认时间为12:00,闹钟6:30 
                         MOV     79H,#1 
                         mov     76h,#0
                         mov     77h,#0
                         MOV     74H,#2              ;防止上电时数码管显示00小时 
                         MOV     75H,#1 
                         MOV     66H,#1        ;中断退出时66H为1时,分、时计时单元数据移入显存标志 
                         MOV     68H,#1              ;上电默认闹钟开状态
 								 MOV     69H,#0
                         MOV     7DH,#6              ;1闹钟6:30 
                         MOV     7CH,#3
MOV     50H,#1     ;2闹钟6:31
MOV     51H,#3
MOV     52H,#6
MOV     53H,#0
MOV     54H,#2     ;3闹钟6:32
MOV     55H,#3
MOV     56H,#6
MOV     57H,#0 
                         MOV     41H,#1;R G  日期07-10-01
                         MOV     42H,#0;R S
                         MOV     43H,#0;Y G
                         MOV     44H,#1;Y S
                         MOV     45H,#7;N G
                         MOV     46H,#0;N S
                         mov     30h,#0;
                         MOV     31H,#01H         ;时间和日期显示选择1显示时间0日期
                         MOV     7AH,#0AH            ;放入"熄灭符"数据 
                         MOV     TMOD,#11H           ;设T0、T1为16位定时器 
                         MOV     TL0,#0DCH           ;62。5MS定时初值(T0计时用) 
                         MOV     TH0,#0BH 
                         SETB    EA                  ;总中断开放 
                         SETB    ET0                 ;允许T0中断 
                         SETB    TR0                 ;T0定时器开始计时 
                         MOV     R4,#10H            ;1秒定时用初值(50MS×20) 
                  START1:LCALL   DISPLAY             ;显示子程序 
                         LCALL   BEEP                ;闹钟查询 
                         LCALL   BJ                  ;显示查询
                         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 ;1 闹钟显示
                         MOV          73H,7CH 
                         MOV          74H,7DH 
                         MOV          75H,7EH 
                         LCALL        DDL 
                         LCALL        DDL
                         MOV          72H,50H ;2 闹钟显示
                         MOV          73H,51H 
                         MOV          74H,52H 
                         MOV          75H,53H 
                         LCALL        DDL 
                         LCALL        DDL
                         MOV          72H,54H;3 闹钟显示
                         MOV          73H,55H 
                         MOV          74H,56H 
                         MOV          75H,57H 
                         LCALL        DDL 
                         LCALL        DDL                         
                         MOV          72H,68H  ;闹钟开关状态显示
                         MOV          73H,69H 
                         MOV          74H,7AH 
                         MOV          75H,7AH 
                         LCALL        DDL 
                         LCALL        DDL 
                         MOV          66H,#1 
                         LJMP         START1 
                 SETTIME:LCALL        DDL 
                         JB           P1.7,NFLAG     ;键按下小于1秒,设置闹钟状态并查看闹钟时间,大于1秒调时
;;;;;;;;;;;;;;;;;;;调整程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                         MOV          TL1,#0B0H      ;T1闪烁定时初值 
                         MOV          TH1,#3CH 
                         MOV          R2,#05H        ;进入调时状态,赋闪烁定时初值 
                         MOV          66H,#8         ;调闹钟时保持走时,关闭时钟显示数据 
                         SETB         ET1            ;允许T1中断 
                         SETB         TR1            ;开启定时器T1 
                    SET1:LCALL        DISPLAY        ;调用显示,防止键按下无显示 
                         JNB          P1.7,SET1      ;P1.7口为0等待键释放 
                         MOV          R5,#00H        ;清设置类型闪烁标志 
                   SETN1:INC          R5             ;1闹钟分调整 R5=1
                    SET11:LCALL        DISPLAY 
                         JB           P1.7,SET11 
                  SEETN1:LCALL        DDL        ;按下大于1秒1闹钟分+1,小于1秒转调1闹钟时 
                         JB           P1.7,SET2      ;键释放自动转调闹钟时 
                         MOV          R0,#7CH        ;1闹钟分+1
                         LCALL        ADD1 
                         MOV          A,R3 
                        CJNE         A,#60H,SEETN1 
                        LCALL        CLR0 
                         JMP          SEETN1 
                    SET2:INC          R5             ;闹钟时调整r5=2 
                   SEET22:LCALL        DISPLAY 
                         JB           P1.7,SEET22 
                 SEETNH1:LCALL        DDL 
                         JB           P1.7,SETF1 
                         MOV          R0,#7EH      ;1闹钟时+1  
                         LCALL        ADD1 
                         MOV          A,R3 
                         CJNE         A,#24H,SEETNH1 
                         LCALL        CLR0 
                         LJMP         SEETNH1
                   SETF1:LCALL        DISPLAY 
                         JB             P1.7,SETF1 
                         LCALL        DDL 
                         JNB          P1.7,OUT1     ;短按调2闹钟分时间,长按退出
                 setn11: inc         r5;R5=3
                  set55: lcall       display;
                         jb          p1.7,set55;
                 seetn11:lcall       ddl;
				         jb          p1.7,set66;按下大于1秒2闹钟分+1,小于1秒转调2闹钟时
                         mov         r0,#51h;2闹钟分+1
                         lcall       add1;
                         mov         a,r3;
                         cjne        a,#60h,seetn11;
                         lcall       clr0;
                         jmp         seetn11;
                 set66:  inc         r5;R5=4
                 seet66: lcall       display;
                         jb          p1.7,seet66;
                seetnh11:lcall       ddl;
                         jb          p1.7,setfA;
                         mov         r0,#53h;2闹钟时+1  
                         lcall       add1;
                         mov         a,r3;
                         cjne        a,#24h,seetnh11;
                          lcall       clr0;
                          jmp         seetnh11;
                   SETFA:LCALL        DISPLAY 
                         JB           P1.7,SETFA 
                         LCALL        DDL 
                         JNB          P1.7,OUT1     ;短按调3闹钟分时间,长按退出
                         jmp          SETN12;
                  OUT1: JMP SETOUT
                 setn12: inc         r5;R5=5
                  set52: lcall       display;
                         jb          p1.7,set52;
                 seetn12:lcall       ddl;
                         jb          p1.7,set62;按下大于1秒3闹钟分+1,小于1秒转调3闹钟时
                         mov         r0,#55h;3闹钟分+1
                         lcall       add1;
                         mov         a,r3;
                         cjne        a,#60h,seetn12;
                         lcall       clr0;
                         jmp         seetn12;
                 set62:  inc         r5;R5=6
                 seet62: lcall       display;
                         jb          p1.7,seet62;
                seetnh12:lcall       ddl;
                         jb          p1.7,SETFB;
                         mov         r0,#57h;3闹钟时+1  
                         lcall       add1;
                         mov         a,r3;
                         cjne        a,#24h,seetnh12;
                         lcall       clr0;
                          jmp         seetnh12;
                  SETFB:LCALL        DISPLAY 
                         JB           P1.7,SETFB 
                         LCALL        DDL 
                         JNB          P1.7,SETOUT     ;短按调日期,长按退出
SET555:  INC          R5;R5=7
		   CLR          TR0             ;关闭T0 
         CLR          ET0             ;关T0中断 
         MOV 70H,#1
         MOV 71H,#0
SETT5:   LCALL        DISPLAY;
        mov 31h,#1
        JB           P1.7,SETT5;
SETH55: LCALL        DDL;
        JB          P1.7,SET666;
        MOV         R0,#42H;日+1
        LCALL       ADD1;
        MOV        A,R3;
        CJNE        A,#32H,SETH55;
        LCALL      CLR0;
        MOV 41H,#01H
        AJMP      SETH55;
SET666:   INC          R5;R5=8
SETT6:  LCALL        DISPLAY;
        JB           P1.7,SETT6;
SETH6:  LCALL        DDL;
        JB          P1.7,SET7;
        MOV         R0,#44H;月+1
        LCALL       ADD1;
        MOV        A,R3;
        CJNE        A,#13H,SETH6;
        LCALL      CLR0;
        MOV 43H,#01H
        AJMP      SETH6;
SET7:   INC      R5;R5=9
SETT7:  LCALL        DISPLAY;
        JB           P1.7,SETT7;
SETH7:  LCALL        DDL;
        JB          P1.7,SETfC;
        MOV         R0,#46H;年+1
        LCALL       ADD1;
        MOV        A,R3;
        CJNE        A,#99H,SETH7;
        LCALL      CLR0;
        AJMP      SETH7;
SETOUT1:SETB         ET0 
        SETB         TR0             ;计时开始 
SETOUT: MOV          R5,#00H         ;清设置类型闪烁标志 
        CLR          TR1             ;关闭T1 
        CLR          ET1             ;关T1中断 
        MOV          66H,#1
        mov 30h,#00H
        MOV 31H,#01H 
        LJMP         START1 
SETFC:  LCALL        DISPLAY 
        JB           P1.7,SETFC 
        LCALL        DDL 
        JNB          P1.7,SETOUT1     ;短按分时间调整,长按退出
SETF: INC         R5;R5=A
      MOV      70H,#00H        ;设定后的时间从00秒开始走时 
      MOV       71H,#00H
		CLR          TR0             ;关闭T0 
      CLR          ET0             ;关T0中断 
SETF3:LCALL        DISPLAY 
      JB        P1.7,SETF3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -