📄 电子时钟源程序.txt
字号:
电子时钟源程序
Counter EQU 59H ;计数器,显示程序通过它得知现正显示哪个数码管
HOUR EQU 50H
MINUTE EQU 51H
SECOND EQU 52H
DISPBUFF EQU 5AH ;显示缓冲区为5AH和5BH
ORG 0000H
AJMP START
ORG 000BH ;定时器T0的入口
AJMP DISP ;显示程序
ORG 001BH
AJMP TINT1
ORG 30H
START:
MOV SP,#5FH ;设置堆栈
MOV P1,#0FFH
MOV P0,#0FFH
MOV P2,#0FFH ;初始化,所显示器,LED灭
MOV TMOD,#00010001B ;定时器T0工作于模式1(16位定时/计数模式)
MOV TH0,#HIGH(65536-2000)
MOV TL0,#LOW(65536-2000)
MOV TH1,#HIGH(65536-50000)
MOV TL1,#LOW(65536-50000)
SETB TR0
SETB TR1
SETB EA
SETB ET0
SETB ET1
MOV R0,#10
MOV R1,#50
LOOP:
JNB P1.3,FUNCTION
AJMP LOOP ;在此中间可以按排任意程序,这里仅作示范?
FUNCTION:
JNB P1.3,$
CLR TR1
LOOP1:
JNB P1.0,SETHOUR
JNB P1.1,SETMINUTE
JNB P1.2,SETSECOND
JNB P1.3,PP
SJMP LOOP1
PP:
JNB P1.3,$
SETB TR1
AJMP LOOP
SETHOUR:
;JNB P1.0,$
INC HOUR
MOV A,HOUR
CJNE A,#24,S1
MOV HOUR,#0
S1:
JNB F0,$
JB F0,$
AJMP LOOP1
SETMINUTE:
; JNB P1.1,$
INC MINUTE
MOV A,MINUTE
CJNE A,#60,S2
MOV MINUTE,#0
S2:
JNB F0,$
JB F0,$
AJMP LOOP1
SETSECOND:
; JNB P1.2,$
INC SECOND
MOV A,SECOND
CJNE A,#60,S3
MOV SECOND,#0
S3:
JNB F0,$
JB F0,$
AJMP LOOP1
TINT1: DJNZ R0,LP
INC SECOND
MOV A,SECOND
CJNE A,#60,LP1
MOV SECOND,#0
INC MINUTE
MOV A,MINUTE
CJNE A,#60,LP1
MOV MINUTE,#0
INC HOUR
MOV A,HOUR
CJNE A,#24,LP1
MOV HOUR,#0
LP1:
MOV R0,#10
LP: MOV TH1,#HIGH(65536-50000)
MOV TL1,#LOW(65536-50000)
RETI
DISP: ;定时器T0的中断响应程序
DJNZ R1,LL1
CPL F0
MOV R1,#50
LL1:
MOV A,HOUR
MOV B,#10
DIV AB
MOV DISPBUFF,A
MOV DISPBUFF+1,B
MOV A,MINUTE
MOV B,#10
DIV AB
MOV DISPBUFF+2,A
MOV DISPBUFF+3,B
MOV A,SECOND
MOV B,#10
DIV AB
MOV DISPBUFF+4,A
MOV DISPBUFF+5,B
MOV TH0,#HIGH(65536-2000) ;定时时间为2000个周期,约2170微秒(11.0592M)
MOV TL0,#LOW(65536-2000)
MOV DPTR,#DISPTAB
MOV P2,#0FFH
MOV A,COUNTER
JZ DP0
CJNE A,#1,L1
AJMP DP1
L1: CJNE A,#2,L2
AJMP DP2
L2: CJNE A,#3,L3
AJMP DP3
L3: CJNE A,#4,L4
AJMP DP4
L4: AJMP DP5
DP0: MOV A,DISPBUFF
MOVC A,@A+DPTR
MOV P3,A
CLR P2.0
INC COUNTER
RETI
DP1: MOV A,DISPBUFF+1
MOVC A,@A+DPTR
MOV P3,A
CLR P2.1
INC COUNTER
RETI
DP2: MOV A,DISPBUFF+2
MOVC A,@A+DPTR
MOV P3,A
CLR P2.2
INC COUNTER
RETI
DP3: MOV A,DISPBUFF+3
MOVC A,@A+DPTR
MOV P3,A
CLR P2.3
INC COUNTER
RETI
DP4: MOV A,DISPBUFF+4
MOVC A,@A+DPTR
MOV P3,A
CLR P2.4
INC COUNTER
RETI
DP5: MOV A,DISPBUFF+5
MOVC A,@A+DPTR
MOV P3,A
CLR P2.5
MOV COUNTER,#0
RETI
RETI
DISPTAB: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07,7fh,6fh
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -