?? clock1.asm
字號:
;-----------------
;復位入口
ORG 0000H
LJMP START
;-----------------
;定時器0定時到,中斷入口
ORG 000BH
LJMP CT_00
;-----------------
; 主程序
ORG 0030H
START:MOV SP,#50H ;置堆棧50h單元開始
MOV IE,#10000010B ;定時計數器中斷開
MOV IP,#00000010B ;定時計數器1優(yōu)先于0
MOV TMOD,#00000001B ;計數器1:方式2,定時器0:方式1
MOV TL0,#0F0H
MOV TH0,#0D8H ;定時器0定時10ms
MOV 2FH,#00H ;計數器0,中斷次數標識
MOV 30H,#12
mov 31h,#34
mov 32h,#56
LCALL HEX2D
SETB TR0 ;定時計數器0啟動工作
L00: LCALL DIS
LJMP L00
;-----------------
HEX2D:MOV R7,#03H
MOV R1,#40H
MOV R0,#30H
LOO_A:MOV A,@R0
MOV B,#10
DIV AB
MOV @R1,A
MOV A,B
INC R1
MOV @R1,A
INC R0
INC R1
DJNZ R7,LOO_A
RET
;-----------------
;顯示子程序
DIS: PUSH PSW
SETB PSW.4
MOV R0,#40H ;指向顯示緩沖區(qū)6字節(jié)
MOV R7,#40H ;數碼管的字位碼
MOV R3,#06H ;循環(huán)6次控制
LED0: MOV A,@R0 ;確定字形代碼
MOV DPTR,#TAB ;字型譯碼表首址
MOVC A,@A+DPTR
MOV R1,#0DCH ;指向字形口
MOVX @R1,A ;輸出字形代碼
; INC R1 ;指向字位口
PUSH 10H
MOV R0,#0DDH
MOV A,R7 ;從最高位開始
RR A ;顯示右移一位
MOV R7,A
MOVX @R0,A ;輸出字位代碼
MOV R4,#05H ;確定延時常數
ACALL DEYS ;調延時子程序
POP 10H
INC R0 ;修改顯緩指針
DJNZ R3,LED0 ;循環(huán)演示
POP PSW
RET
;-----------------
;延時子程序
DEYS: PUSH 14H
DEY1: PUSH 14H
DJNZ R4,$
POP 14H
DJNZ R4,DEY1
POP 14H
DJNZ R4,DEYS
RET
;-----------------
;定時器0中斷服務程序
CT_00:PUSH PSW
CLR PSW.4
CLR TR0
MOV TL0,#0F0H
MOV TH0,#0D8H ;重裝初值,定時10ms
SETB TR0 ;定時計數器0啟動工作
INC 2FH
MOV R0,#2FH
MOV R1,#32H ;指向時間(秒分時)緩沖區(qū)32H、31H、30H
CJNE @R0,#100,INTO ;1S未到,轉
MOV @R0,#00H ;1S到,標識清零
INC 32H ;秒加
CJNE @R1,#60,INTO ;1分未到,轉
MOV 32H,#00H ;秒清零
INC 31H ;分加
DEC R1 ;
CJNE @R1,#60,INTO ;
MOV 31H,#00H ;
INC 30H ;
DEC R1 ;
CJNE @R1,#24,INTO ;
MOV 30H,#00H ;
INTO: LCALL HEX2D
POP PSW
RETI
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -