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

📄 ck.asm

📁 一个本人编写的时钟程序
💻 ASM
字号:
                LED4    BIT     P1.7
                LED3    BIT     P1.6
                EXTRA   BIT     P1.5
                LED2    BIT     P1.4
                LED1    BIT     P1.3
                CLOCK   BIT     P3.1
                SIAB    BIT     P3.0

                KEYD    BIT     p3.5
                KEYC    BIT     p3.7

                BUFFER  EQU     30H;  30--LED4  31--LED3  32 LED2 33---LED1
                SCOUNT  EQU     40H
                 COUNT  EQU     41H
                MCOUNT  EQU     42H
                HCOUNT  EQU     43H

                FLAGD   EQU     45H
                FLAGC   EQU     46H

                ORG     0
                AJMP    START
                ORG     03H
                RETI
                ORG     0BH
                AJMP    SETTIME
                ORG     013H
                RETI
                ORG     01BH
                RETI
                ORG     023H
                RETI

                ORG     030H
       START:
                MOV     R0,     #70H
                MOV     A,      #0
      ClearRAM: MOV     @R0,    A
                DJNZ    R0,     ClearRAM
                MOV     SP,     #6FH
                MOV     P1,     #0FFH
                MOV     SCOUNT, #16
                MOV     COUNT,  #59
                
                MOV     MCOUNT, #0
                MOV     HCOUNT, #0
                MOV     FLAGC,  #-1
                MOV     FLAGD,  #0

                MOV     TMOD,   #01H
                MOV     TH0,    #0
                MOV     TL0,    #0
                SETB    EA
                SETB    ET0
                SETB    TR0
     SHOWLED:

                ;LCALL   Display
                MOV     A,     BUFFER
                CLR     LED4
                LCALL   SETLED234
                LCALL   Delay

                SETB    LED4
                MOV     A,      BUFFER+1
                CLR     LED3
                LCALL   SETLED234
                LCALL   Delay
 
                SETB    LED3

                AJMP    SHOWLED
;------------------------------------------------------------------
SETTIME:
                PUSH    PSW
                PUSH    ACC
                SETB    RS1
                MOV     TH0,    #0
                MOV     TL0,    #0
                DJNZ    SCOUNT, EXIT
                MOV     SCOUNT, #14
                DJNZ    COUNT,  EXIT
                MOV     COUNT,  #60
                MOV     A,      MCOUNT
                CJNE    A,      #59,    Mgo
                MOV     MCOUNT, #0
                MOV     A,      HCOUNT
                CJNE    A,      #23,    Hgo
                MOV     HCOUNT, #0
                AJMP    EXIT

      Hgo:
                INC    HCOUNT
                AJMP   EXIT

      Mgo:      INC    MCOUNT

      EXIT:     LCALL  DELAY
                LCALL   CHOICE
                LCALL   DECIDE
                LCALL   DOKEY

                POP    ACC
                POP    PSW
                NOP
                NOP
                RETI
;----------------------------------------------------------------------------
SETLED:
                MOV     R0,     #08H
         Again: RLC     A
                MOV     SIAB,   C
                SETB    CLOCK
                CLR     CLOCK
                DJNZ    R0,  Again
                NOP
                NOP
                RET
;------------------------------------------------------------------------------
Display:
                MOV     A,              MCOUNT
                MOV     B,              #10
                DIV     AB
                MOV     BUFFER,         B
                MOV     BUFFER+1,       A
                MOV     A,              HCOUNT
                MOV     B,              #10
                DIV     AB
                MOV     BUFFER+2,       B
                MOV     BUFFER+3,       A
                NOP
                NOP
                RET
;----------------------------------------------------------------------------------
 SETLED234:
                MOV     DPTR,           #TABLE_LED234
                MOVC    A,              @A+DPTR
                LCALL   SETLED
                NOP
                NOP
                RET

SETLED1:
                MOV     DPTR,           #TABLE_LED1
                MOVC    A,              @A+DPTR
                LCALL   SETLED
                NOP
                NOP
                RET
;-------------------------------------------------------------------------------------
CHOICE:
                SETB     C
                ANL      C,     KEYC
                JNC      Doup
                JMP      Next
      Doup:     LCALL    DELY10US
                SETB     C
                ANL      C,     KEYC
                JNC      DO_CHOICE
                JMP      Next
    DO_CHOICE:
                INC      FLAGC
                MOV      A,     FLAGC
                MOV      B,     #2
                DIV      AB
                MOV      FLAGC, B
     Next:
                NOP
                NOP
                RET
;-----------------------------------------------------------------------------------
DECIDE:
                SETB    C
                ANL     C,      KEYD
                JNC     Doudong
                JMP     Return
       Doudong:
                LCALL   DELY10US
                SETB    C
                ANL     C,      KEYD
                JNC     DO_WHAT
                JMP     Return
     DO_WHAT:   MOV     FLAGD,  #1

       Return:
                NOP
                NOP
                RET
;-----------------------------------------------------------------------------------
 DOKEY:
                MOV     A,  FLAGC
                CJNE    A,  #0, XIA
                MOV     A,  FLAGD
                CJNE    A,  #1, WAIT
                MOV     A,  MCOUNT
                CJNE    A,  #59,  MCHU
                MOV     MCOUNT, #0
                JMP     WAIT
         MCHU:  INC     MCOUNT
                JMP     WAIT
          XIA:  MOV     A,  FLAGC
                CJNE    A,  #1, WAIT
                MOV     A,  FLAGD
                CJNE    A,  #1, WAIT
                MOV     A,  HCOUNT
                CJNE    A,  #23,  HCHU
                MOV     HCOUNT,   #0
                JMP     WAIT
          HCHU: INC     HCOUNT
          WAIT:
                MOV     FLAGD,    #0
                NOP
                NOP
                RET
;-------------------------------------------------------------------------------------
DELAY:
                MOV     R0, #0DFH
          D1:   MOV     R1, #2
          D2:   DJNZ    R1, D2
                DJNZ    R0, D1
                RET
;------------------------------------------------------------------------------------
DELY10US:
            MOV       R6,#0FFH
   Huan:    MOV       R5,#4
   XUN:     DJNZ      R5,XUN
            DJNZ      R6, Huan
            RET
;------------------------------------------------------------------------------------
 TABLE_LED1:
;LED1段码       0           1        2           3        4          5        6           7       8          9
          DB  01010000b,11111001b,00110100b,10110000b,10011001b,10010010b,00010010b,11111000b,00010000b,10010000b,0ffh
 TABLE_LED234:
;LED234段码
          DB  11000000b,11111001b,10100100b,10110000b,10011001b,10010010b,10000010b,11111000b,10000000b,10010000b,0ffh
 TABLE_extra:
          DB  11111110B,11111101B,11111011B, 11110111B,11101111B,11011111B,10111111B,0h,0ffh,0ffh,0ffh

                END


⌨️ 快捷键说明

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