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

📄 001.asm

📁 时钟电路程序代码,从12点整开始计时,可以调整时间.有三个按钮.
💻 ASM
📖 第 1 页 / 共 2 页
字号:

                   ACALL CLR0

                   MOV  R0,#79H               ;指向小时计时单元(78H-79H)

                   ACALL ADD1

                   MOV   A,R3

                   CLR   C

                   CJNE  A,#24H,HOUR

             HOUR: JC    OUTT0

                   ACALL CLR0

            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

                   SETB  ET0                   ;开放T0

                   RETI                        ;中断返回

;---------------------------加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          ;放回前一地址单元

                   MOV          A,R3           ;取回R3中暂存数据

                   INC            R0             ;指向当前地址单元

                   SWAP         A              ;A中数据高四位与低四位交换

                   ANL           A,#0FH         ;高四位变0

                   MOV          @R0,A          ;数据放入当削地址单元中

                   RET

             CLR0: CLR          C

                   CLR          A              ;清累加器

                   MOV               @R0,A          ;清当前地址单元

                   DEC         R0             ;指向前一地址

                   MOV               @R0,A          ;前一地址单元清0

                   RET                         ;子程序返回

;-------------------------调时闪烁程序----------------------;

INTT1:          PUSH    ACC

                PUSH    PSW

                MOV     TL1,#0B0H

                MOV     TH1,#3CH

                DJNZ    R2,INTT1OUT                ;0.3秒未到退出中断(50MS中断6次)

                MOV     R2,#06H               ;重装0.3秒定时用初值

                CPL     02H                    ;0.3秒定时到对闪烁标志取反

                JB      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

                LJMP    NLL

            NLL:MOV     72H,76H

                MOV     73H,77H

                MOV     74H,78H

                MOV     75H,79H

                AJMP    INTT1OUT

           NNN1:MOV     72H,7BH

                MOV     73H,7CH

                MOV     74H,7DH

                MOV     75H,7EH

       INTT1OUT:POP     PSW                       ;恢复现场

                POP     ACC

                RETI                         ;中断退出

         FLASH1:MOV     A,R5

                CJNE    A,#01H,ML

                LJMP    MNN1

             ML:CJNE    A,#02H,ML1

                LJMP    MNN2

            ML1:CJNE    A,#03H,MN

                LJMP    MLL

             MN:CJNE    A,#04H,INTT1OUT

                LJMP    MHL

            MLL:MOV     72H,7AH

                MOV     73H,7AH               ;显示单元(72-73H),将不显示分数据

                MOV     74H,78H

                MOV     75H,79H

                AJMP    INTT1OUT

            MHL:MOV     72H,76H

                MOV     73H,77H

                MOV     74H,7AH               ;显示单元(74-75H),小时数据将不显示

                MOV     75H,7AH

                AJMP    INTT1OUT

           MNN1:MOV     72H,7AH

                MOV     73H,7AH               ;显示单元(72-73H),将不显示闹钟分数据

                MOV     74H,7DH

                MOV     75H,7EH

                AJMP    INTT1OUT

           MNN2:MOV     72H,7BH

                MOV     73H,7CH

                MOV     74H,7AH

                MOV     75H,7AH               ;显示单元(74-75H),闹钟小时数据将不显示

                AJMP    INTT1OUT

;-------------------------显示-------------------------------;

 DISPLAY:MOV    DPTR,#DISDATA   ;显示时的十位

         MOV    A,70H

         MOVC   A,@A+DPTR

         MOV    P2,A

         CLR    P3.3

         NOP

         NOP

         NOP

         SETB   P3.3

         MOV    A,71H

         MOVC   A,@A+DPTR   ;显示时的个位

         MOV    P2,A

         CLR    P3.2

         NOP

         NOP

         NOP

         SETB   P3.2    

         MOV    A,72H

         MOVC   A,@A+DPTR   ;显示分的十位

         MOV    P2,A

         CLR    P3.1

         NOP

         NOP

         NOP

         SETB   P3.1

         MOV    A,73H

         MOVC   A,@A+DPTR   ;显示分的个位

         MOV    P2,A

         CLR    P3.0

         NOP

         NOP

         NOP

         SETB   P3.0

         MOV    A,74H

         MOVC   A,@A+DPTR  ;显示秒

         MOV    P2,A

         CLR    P2.4

         NOP

         NOP

         NOP

         SETB   P2.4

         MOV    A,75H

         MOVC   A,@A+DPTR

         MOV    P2,A

         CLR    P1.5

         NOP

         NOP

         NOP

         SETB   P1.5

         RET

    BEEP:MOV   A,68H           ;查询标志

         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

         LCALL DDL

         SETB  P1.6

         LCALL DDL

         JNB   P2.4,BEERR

   BEERE:RET

   BEERR:SETB  P1.6

         MOV   68H,#0

         LCALL DISPLAY

         JNB   P2.4,BEERR

         JMP   BEERE

 DISDATA:DB 0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H,50H,0FFH   ;0123456789空白

       END

⌨️ 快捷键说明

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