📄 电子时钟。3.asm
字号:
;选择定时器T0,方式一,定时一秒,50MS中断一次
;PA口送位码,PB口送段码
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 0003H
LJMP INT0
ORG 000BH
LJMP INT_T0
ORG 0100H
START:
MOV SP,#60H ; 调整指针
MOV R2,#20
MOV SEC,#00H ; 时间初始化为zz零
MOV MIN,#00H
MOV HOU,#00H
MOV DPTR,#7F00H ;赋初值选命令/状态寄存器
MOV A,#03H
MOVX @DPTR,A ;定义PA,PB口为输出口
;MOV DPTR,#7F02H
;MOV A,#0FFH
;MOVX @DPTR,A ;关闭显示
MOV TMOD,#01H ; 选择方式1
MOV TH0,#3CH ; 设置定时常数
MOV TL0,#0B0H
MOV IE,#83H ; 开中断
SETB IT0
SETB ET0
SETB TR0
MAIN: ; 读数据程序
MOV A,SEC ; 读取秒数据,并把计数器的内容分为个位和十位
MOV B,#0AH
DIV AB
MOV SEC10,A
MOV SEC1,B
MOV A,MIN ; 读取分数据
MOV B,#0AH
DIV AB
MOV MIN10,A
MOV MIN1,B
MOV A,HOU ; 读取小时数据
MOV B,#0AH
DIV AB
MOV HOU10,A
MOV HOU1,B
ACALL DISPLAY ; 调用显示子程序
LJMP MAIN
DISPLAY: ; 显示子程序
MOV R0,#SEC1 ; 指向数据首址
MOV R3,#00000001B ; 位码
DISP1:
MOV A,R3
MOV DPTR,#7F02H
MOVX @DPTR,A ;送位码给PA口
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DPTR,#7F01H
MOVX @DPTR,A ;送段码给PB口
ACALL DELAY
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
INT0: ;外部中断子程序
PUSH ACC
PUSH PSW
MOV SEC,#16H ; 时间初始化为222222
MOV MIN,#16H
MOV HOU,#16H
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 共阴极
;接线:8155 8031
; 12-19-----A0-A7
; 21-28-----a-h
; 29-34-----Y0-Y7
; 4-----RET
; 7-----A14
; 8-----A15
; 9-----RD
; 10-----WR
; 11-----ALE
; 20-----GND
; 40-----5V
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -