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

📄 clock.asm

📁 LED灯的一些源码
💻 ASM
字号:
;6位数字钟。键盘复用,p32调整
;***************************************************************************
;*  sxj1974@163.com		     (51c51 test web)     www.8951.com     *
;*  Create by :石学军      www.51c51.com 更多例程请登陆网站        	   *
;***************************************************************************
;
;显示缓冲单元在70H—75H,70H—71H显示秒,72H—73H显示分,74H—75H显示时
;时间计数单元在70H—71H(秒)、76H—77H(分)、78H—79H(时),7AH单元放熄灭符(#0AH)
;计数单元采用BCD码计数,定时器T0设置为50MS溢出中断,为秒计数用,定时器T1为调整时闪烁用
;P3.2为调整按钮,P1口为字符输出口,采用共阳显示管。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           中断入口程序              ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
              ORG 0000H
              LJMP      START
              ORG 0003H
             RETI
              ORG 000BH
              LJMP      INTT0
              ORG 0013H
              RETI
              ORG 001BH
             LJMP      INTT1
              ORG 0023H
              RETI
              ORG 002BH
              RETI
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;           主 程 序                 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            START: MOV   R0,  #70H
                   MOV   R7,  #0BH
                   MOV   20H,  #00H
       CLEARDISP:  MOV   @R0, #00H
                   INC   R0
                   DJNZ  R7,CLEARDISP
                   MOV   7AH,#0AH
                   MOV TMOD,#11H
                   MOV   TL0,   #0B0H
                   MOV   TH0,   #3CH
                   MOV   TL1,   #0B0H
                   MOV   TH1,   #3CH
                   SETB  EA
                   SETB  ET0
                   SETB  TR0
                   MOV   R4,#14H
           start1: LCALL DISPLAY
                   JNB P3.2,SETMM1
                   SJMP  Start
           SETMM1: LJMP SETMM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           1秒定时程 序             ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            INTT0: PUSH  ACC
                   PUSH  PSW
                   CLR   ET0
                   CLR   TR0
                  MOV   A,#0B7H        ;中断同步修正
                   ADD   A,TL0
                   MOV   TL0,A
                   MOV   A,#3CH
                   ADD   A,TH0
                   MOV   TH0,A
                   SETB  TR0
                   DJNZ    R4, OUTT0
           ADDSS:  MOV R4,#14H
                   MOV R0,#71H
                   ACALL ADD1           ;加1程序
                   MOV A,R3
                   CLR C
                   CJNE A,#60H,ADDMM
           ADDMM:  JC   OUTT0
                  ACALL CLR0
                  MOV R0,#77H
                   ACALL ADD1
                   MOV A,R3
                   CLR C
                   CJNE A,#60H,ADDHH
            ADDHH: JC OUTT0
                   ACALL CLR0
                   MOV R0,#79H
                   ACALL ADD1
                   MOV A,R3
                   CLR C
                   CJNE A,#24H,HOUR
             HOUR: JC OUTT0
                   ACALL CLR0
            OUTT0: MOV   72H,76H
                   MOV   73H,77H
                   MOV   74H,78H
                   MOV   75H,79H
                   POP PSW
                   POP ACC
                   SETB   ET0
                   RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           闪动调时程 序            ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTT1:          PUSH    ACC
                PUSH    PSW
                MOV   TL1,   #0B0H
                MOV   TH1,   #3CH
                DJNZ    R2,INTT1OUT
                MOV     R2,#06H
                CPL     02H
                JB      02H,FLASH1
                MOV     72H,76H
                MOV     73H,77H
                MOV     74H,78H
                MOV     75H,79H
INTT1OUT:       POP     PSW
                POP     ACC
                RETI
FLASH1:         JB      01H,FLASH2
                MOV     72H,7AH
                MOV     73H,7AH
                MOV     74H,78H
                MOV     75H,79H
                AJMP    INTT1OUT
FLASH2:         MOV     72H,76H
                MOV     73H,77H
                MOV     74H,7AH
                MOV     75H,7AH
                AJMP    INTT1OUT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           加1程序                   ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
             ADD1: MOV A,@R0
                   DEC R0
                   SWAP A
                   ORL A,@R0
                   ADD A,#01H
                   DA A
                   MOV R3,A
                   ANL A,#0FH
                   MOV @R0,A
                   MOV A,R3
                   INC R0
                   SWAP A
                   ANL A,#0FH
                   MOV @R0,A
                   RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           清零程序                  ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
             CLR0: CLR A
                   MOV @R0,A
                   DEC R0
                   MOV @R0,A
                   RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           时钟调整程序              ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          SETMM:   cLR  ET0
                   CLR  TR0
                   LCALL  DL1S
                   JB  P3.2,CLOSEDIS    
                   MOV  R2,#06H
                   SETB ET1
                   SETB TR1
            SET2:  JNB P3.2,SET1
                   SETB  00H
            SET4:  JB  P3.2,SET3
                   LCALL   DL05S
                   JNB    P3.2,SETHH
                   MOV R0,#77H          ;加1分程序
                   LCALL ADD1
                   MOV A,R3
                   CLR C
                   CJNE A,#60H,HHH
              HHH: JC SET4
                   LCALL CLR0
                   CLR C
                   AJMP  SET4
        CLOSEDIS:  SETB  ET0
                   SETB  TR0
        CLOSE:     JB    P3.2,CLOSE
                   LCALL DISPLAY
                  JB    P3.2,CLOSE
   WAITH:          JNB   P3.2,WAITH
                   LJMP  START1
           SETHH:  CLR   00H
          SETHH1:  JNB P3.2,SET5
                   SETB         01H
            SET6:  JB  P3.2,SET7
                   LCALL   DL05S
                   JNB    P3.2,SETOUT
                   MOV R0,#79H
                   LCALL ADD1
                   MOV A,R3
                   CLR C
                   CJNE A,#24H,HOUU
            HOUU: JC SET6
                   LCALL CLR0
                   AJMP  SET6
           SETOUT: JNB   P3.2,SETOUT1
                   LCALL DISPLAY
                  JNB   P3.2,SETOUT
                   CLR   01H
                   CLR   00H
                   CLR   02H
                   CLR   TR1
                   CLR   ET1
                   SETB  TR0
                   SETB  ET0
                   LJMP START1
             SET1:  LCALL        DISPLAY
                   AJMP         SET2
             SET3:  LCALL        DISPLAY
                    AJMP         SET4
             SET5:  LCALL        DISPLAY
                    AJMP         SETHH1
             SET7:  LCALL        DISPLAY
                    AJMP         SET6
           SETOUT1:  LCALL        DISPLAY
                    AJMP         SETOUT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           显示程序                  ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          DISPLAY: MOV R1,#70H
                   MOV R5,#0BFH
             PLAY: MOV A,R5
                   MOV P2,A
                   MOV A,@R1
                   MOV DPTR,#TAB
                   MOVC A,@A+DPTR
                   MOV P0,A
                   LCALL DL1MS
                   INC R1
                   MOV A,R5
                   JNB ACC.1,ENDOUT
                   RR A
                   MOV R5,A
                   AJMP PLAY
           ENDOUT: SETB P2.1
                   MOV  P0,#0FFH
                   RET
             TAB: DB   28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           延时程序                  ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
             DL1MS: MOV R6,#14H
             DL1:   MOV R7,#19H
             DL2:   DJNZ R7,DL2
                    DJNZ R6,DL1
                    RET
             DS20MS: ACALL DISPLAY
                     ACALL DISPLAY
                     ACALL DISPLAY
                     RET
             DL1S:   LCALL      DL05S
                     LCALL      DL05S
                     RET
             DL05S:   MOV        R3,#20H
             DL05S1:  LCALL      DISPLAY
                     DJNZ       R3,DL05S1
                     RET
                     END


     

⌨️ 快捷键说明

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