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

📄 clock.asm

📁 AVR开发板范例程序,WS开发板配套_51_汇编源程序
💻 ASM
字号:
;/********************************************************************
; *  主    页 :  HTTP://WWW.QLMCU.COM
; *
; *  程序功能 :  时钟程序
; *
; *  应用软件 :  KEIL C
; *
; *  版    本 :  KEIL 7.06
; *
; *  硬    件 :  WS803、WS804、WS806
 ;*
 ;;*  创建时间 :  2005-07-28
; *
; *  程序整理 :  benladn911
; *
; *  注:为了有更多实用的实验程序供大家学习,部分程序参考网上的资源,
; *      在此谢谢这些无私奉献的朋友!!!
 ;*
; ********************************************************************/
;/* 程序详细功能介绍:时钟的 小时 和 分钟 通过数码管显示出来, 时钟的调节通过 P3.3(INT1) 的按键调节 .
;  显示缓冲单元在70H—75H,70H—71H显示秒,72H—73H显示分,74H—75H显示时
;  时间计数单元在70H—71H(秒)、76H—77H(分)、78H—79H(时),7AH单元放熄灭符(#0AH)
;  计数单元采用BCD码计数,定时器T0设置为50MS溢出中断,为秒计数用,定时器T1为调整时闪烁用
;;  P3.3(INT1)为调整按钮,按住2秒以上进入校准时间状态及换档和退出,快速点触用于调节时间数值。
; * 具体的硬件结构,大家可以看 WS 系列产品的原理图
; * 如果你要提高本时钟的精度,建议使用 12 MHz 的晶振
; */

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;           中断入口程序              ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

              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.3,SETMM1
                   SJMP  Start1
            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.3,CLOSEDIS
                   MOV  R2,#06H
                   SETB ET1
                   SETB TR1

            SET2:  JNB P3.3,SET1
                   SETB  00H

            SET4:  JB  P3.3,SET3
                   LCALL   DL05S
                   JNB    P3.3,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.3,CLOSE
                   LCALL DISPLAY
                   JB    P3.3,CLOSE

   WAITH:          JNB   P3.3,WAITH
                   LJMP  START1
           SETHH:  CLR   00H
          SETHH1:  JNB P3.3,SET5
                   SETB         01H

            SET6:  JB  P3.3,SET7
                   LCALL   DL05S
                   JNB    P3.3,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.3,SETOUT1
                   LCALL DISPLAY
                   JNB   P3.3,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 DPTR,#TAB

CLR P1.3
MOV A,72H
MOVC A,@A+DPTR
ANL A,#7FH   ;小数点处理
MOV P0,A
LCALL DL1MS
SETB P1.3

CLR P1.2
MOV A,73H
MOVC A,@A+DPTR
ANL A,#7FH   ;小数点处理
MOV P0,A
LCALL DL1MS
SETB P1.2

CLR P1.1
MOV A,74H
MOVC A,@A+DPTR
ANL A,#7FH   ;小数点处理
MOV P0,A
LCALL DL1MS
SETB P1.1

CLR P1.0
MOV A,75H
MOVC A,@A+DPTR
ANL A,#7FH   ;小数点处理
MOV P0,A
LCALL DL1MS
SETB P1.0



MOV P0,#0FFH
RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;           延时程序                  ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

             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 + -