定时器。
ORG 0000H ;定时效果基本一致(时间10分钟总长相等)
AJMP START
ORG 000BH
LJMP TIME
ORG 0030H
START:MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV IP,#02H
MOV IE,#82H
SETB TR0
MOV H,#23
MOV M,#59
MOV S,#58 ;R2未用
MOV R6,#0 ;中断20次的变量
MAIN: MOV R4,#0 ;主程序
MOV B,#10 ;实现g【0-7】的赋值
MOV A,H ;管0-1
DIV AB
MOV TIME0,A
MOV TIME1,B
MOV TIME2,#10
MOV B,#10 ;管3-4
MOV A,M
DIV AB
MOV TIME3,A
MOV TIME4,B
MOV TIME5,#10
MOV B,#10 ;管6-7
MOV A,S
DIV AB
MOV TIME6,A
MOV TIME7,B
MOV R5,TIME0 ;八管显示程序段
LCALL OUTPUT
MOV R5,TIME1
LCALL OUTPUT
MOV R5,TIME2
LCALL OUTPUT
MOV R5,TIME3
LCALL OUTPUT
MOV R5,TIME4
LCALL OUTPUT
MOV R5,TIME5
LCALL OUTPUT
MOV R5,TIME6
LCALL OUTPUT
MOV R5,TIME7
LCALL OUTPUT
LJMP MAIN
OUTPUT:SETB P3.4 ;显示程序,L0=1
MOV A,R5 ;已经改变通过给R5喂值实现调用效果
MOV DPTR,#DM ;关键问题dm[g[i]]中i的变化控制
MOVC A,@A+DPTR
MOV P1,A
CLR P3.4 ;L0=0
SETB P3.5 ;L1=1
MOV A,R4
MOV DPTR,#WM
MOVC A,@A+DPTR
MOV P1,A
CLR P3.5 ;P3.5=0
LCALL DELAY
MOV P1,#00H
INC R4
RET
TIME: MOV TH0,#3CH ;中断程序
MOV TL0,#0B0H
INC R6
CJNE R6,#20,OUT ;J=60
MOV R6,#0
INC S ;S++
MOV A,S
CJNE A,#60,OUT ;S=60
MOV S,#0
INC M
MOV A,M
CJNE A,#60,OUT ;M
MOV M,#0
INC H ;H
MOV A,H
CJNE A,#24,OUT
MOV H,#0
OUT: RETI
DM:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
WM:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
H EQU 30H
M EQU 31H
S EQU 32H
TIME0 EQU 33H
TIME1 EQU 34H
TIME2 EQU 35H
TIME3 EQU 36H
TIME4 EQU 37H
TIME5 EQU 38H
TIME6 EQU 39H
TIME7 EQU 40H
DELAY:MOV R0,#10
DL1: MOV R1,#50
DL2: NOP
DJNZ R1,DL2
DJNZ R0,DL1
RET
END
c和汇编:
.zip
阅读(1112) | 评论(0) | 转发(1) |