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

📄 电子时钟。1.asm

📁 电子时钟实例,但是还不够完美
💻 ASM
字号:
;选择定时器T0,方式一,定时一秒,50MS中断一次
;P3口送位码,P1口送段码

        SEC1 	  EQU 	30H       ; 秒存储器(个位)
        SEC10 	  EQU 	31H       ; 秒存储器(十位)
        MIN1 	  EQU 	32H       ; 分存储器(个位)
        MIN10 	  EQU 	33H       ; 分存储器(十位)
        HOU1 	  EQU 	34H       ; 时存储器(个位)
        HOU10 	  EQU 	35H       ; 时存储器(十位)
        SEC  	  EQU 	41H       ; 秒计数器
        MIN  	  EQU 	42H       ; 分计数器
        HOU   	  EQU 	43H       ; 时计数器
        ORG 	  0000H
        LJMP 	  START
        ORG 	  000BH
        LJMP 	  INT_T0
        ORG       0100H

START:
        MOV	  SP,#60H        ; 调整指针
        MOV	  P3,#0FFH       ; 关闭显示
        MOV	  R2,#20
        MOV	  SEC,#00H       ; 时间初始化为零
        MOV	  MIN,#00H
        MOV 	  HOU,#00H

        MOV   	  TMOD,#01H      ; 选择方式1
        MOV	  TH0,#3CH       ; 设置定时常数
        MOV	  TL0,#0B0H
        SETB	  EA
        SETB	  ET0		 ; 开中断
        SETB	  TR0

MAIN:                            ; 读数据程序
        MOV 	  A,SEC          ; 读取秒数据,并把计数器的内容分为个位和十位
        MOV 	  B,#0AH
        DIV 	  AB
        MOV 	  SEC1,A
        MOV 	  SEC10,B

        MOV 	  A,MIN          ; 读取分数据
        MOV 	  B,#0AH
        DIV 	  AB
        MOV 	  MIN1,A
        MOV 	  MIN10,B

        MOV  	  A,HOU          ; 读取小时数据
        MOV 	  B,#0AH
        DIV 	  AB
        MOV 	  HOU1,A
        MOV   	  HOU10,B

        ACALL 	  DISPLAY        ; 调用显示子程序
        LJMP 	  MAIN

DISPLAY:                         ; 显示子程序
        MOV 	  R0,#SEC1       ; 指向数据首址
        MOV   	  R3,#00000001B  ; 位码

DISP1:
        MOV 	  A,R3
        MOV 	  P3,A           ; 送位码

        MOV 	  A,@R0
        MOV 	  DPTR,#TABLE
        MOVC 	  A,@A+DPTR
        MOV 	  P1,A           ; 送段码

        ACALL 	  DELAY       	 ; 调用延时程序,实现2MS延时
        MOV 	  A,R3
        JB 	  ACC.5,EXIT2
        RL 	  A
        MOV 	  R3,A
        INC 	  R0
        AJMP 	  DISP1
EXIT2:
        RET

INT_T0:                           ;中断程序
        PUSH 	  ACC
        PUSH      PSW
        MOV 	  TH0,#3CH        ; 重装定时常数
        MOV       TL0,#0B0H
        DJNZ 	  R2,EXIT1        ; 判断1秒循环次数

        MOV       R2,#20
        INC 	  SEC             ; 秒值加1
        MOV 	  A,SEC
        CJNE	  A,#60,EXIT1     ; 判断60秒

        MOV	  SEC,#00H        ; 秒值清0
        INC 	  MIN             ; 分值加1
        MOV 	  A,MIN
        CJNE 	  A,#60,EXIT1     ; 判断60分

        MOV 	  MIN,#00H        ; 分值清0
        INC 	  HOU             ; 小时值加1
        MOV 	  A,HOU
        CJNE 	  A,#24,EXIT1     ; 判断24小时
        MOV   	  HOU,#00H

EXIT1:
        POP       PSW
        POP 	  ACC
        RETI

DELAY:                            ;2毫秒的廷时子程序
        MOV 	  R7,#10
DELAY1:
        MOV	  R6,#100
        DJNZ 	  R6,$
        DJNZ      R7,DELAY1
        RET
TABLE:  DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;位码0-9 共阳极
;TABLE:  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H, 7FH,6FH    ;位码0-9 共阴极

⌨️ 快捷键说明

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