单片机秒表倒计时程序
时间:2025-04-21
时间:2025-04-21
倒计时
KEYOK BIT 00H
STARTRUN BIT 01H
SCOUNT EQU 21H
SETVAL EQU 22H
TCOUNT EQU 24H
TCOUNTER EQU 20
KEYVAL EQU 25H
DISPBUF EQU 58H
COUNTER EQU 57H
HIDDEN EQU 10H
TMRVAR EQU 16875
ORG 0000H
JMP START
ORG 0*8+3
RETI
ORG 1*8+3
JMP INT_T0
ORG 2*8+3
RETI
ORG 3*8+3
RETI
ORG 4*8+3
RETI
START:
MOV SP,#5FH
MOV SCOUNT,#0
MOV SETVAL,#59
MOV SCOUNT,SETVAL
MOV DISPBUF,#HIDDEN
MOV DISPBUF+1,#HIDDEN
MOV DISPBUF+2,#HIDDEN
MOV DISPBUF+3,#HIDDEN
CLR STARTRUN
CLR KEYOK
CALL INIT_T0
SETB EA
LOOP:
CALL KEY
JB KEYOK,KEYPROC
NEXT:
MOV A,SCOUNT
MOV B,#10
DIV AB
NEXT1:
MOV DISPBUF+4,A
MOV DISPBUF+5,B
JMP LOOP
KEYPROC:
MOV A,KEYVAL
JZ KEYRUN
DEC A
JZ KEYSTOP
DEC A
JZ KEYLEFT
JMP KEYRIGHT
KEYRUN:
SETB STARTRUN
JMP LOOP
KEYSTOP:
CLR STARTRUN
JMP LOOP
KEYLEFT:
CLR STARTRUN
INC DISPBUF+4
MOV A,DISPBUF+4
CJNE A,#6,LEFT0
MOV A,#0
LEFT0:
MOV B,#10
MUL AB
ADD A,DISPBUF+5
MOV SETVAL,A
MOV SCOUNT,SETVAL
JMP LOOP
KEYRIGHT:
CLR STARTRUN
INC DISPBUF+5
MOV A,DISPBUF+5
CJNE A,#10,REFT0
MOV DISPBUF+5,#0
REFT0:
MOV A,DISPBUF+4
MOV B,#10
MUL AB
ADD A,DISPBUF+5
MOV SETVAL,A
MOV SCOUNT,SETVAL
JMP LOOP
KEY:
MOV P3,#0FFH
CLR KEYOK
MOV A,P3
ORL A,#11000011B
CPL A
JZ KEY_RET
CALL DELAY
MOV A,P3
ORL A,#11000011B
CPL A
JZ KEY_RET
SETB KEYOK
JNB ACC.2,KEY_1
MOV KEYVAL,#0
JMP KEY_RET
KEY_1:
JNB ACC.3,KEY_2
MOV KEYVAL,#1
JMP KEY_RET
KEY_2:
JNB ACC.4,KEY_3
MOV KEYVAL,#2
JMP KEY_RET
KEY_3:
MOV KEYVAL,#3
KEY_RET:
MOV A,P3
ORL A,#11000011B
CPL A
JNZ KEY_RET
RET
DELAY:
PUSH PSW
SETB RS0
MOV R7,#10
D1:
MOV R6,#10
D2:
DJNZ R6,D2
DJNZ R7,D1
POP PSW
RET
INIT_T0:
MOV TMOD,#01H
MOV TH0,#0F4H
MOV TL0,#048H
SETB ET0
SETB TR0
RET
INT_T0:
PUSH ACC
PUSH PSW
MOV TH0,#0F4H
MOV TL0,#048H
INC TCOUNT
MOV A,TCOUNT
CJNE A,#TCOUNTER,INT_N2
MOV tCOUNT,#0
INT_N1:
JNB STARTRUN,INT_N2
DEC SCOUNT
MOV A,SCOUNT
JNZ INT_N2
MOV SCOUNT,SETVAL
INT_N2:
MOV R1,#DISPBUF
MOV COUNTER,#0
D_L1:
MOV DPTR,#BITTA
B
MOV A,COUNTER
MOVC A,@A+DPTR
ORL P2,#11111100B
ANL P2,A
MOV A,R1
MOV R0,A
MOV A,@R0
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
MOV P0,A
CALL
倒计时
DELAY
INC R1
INC COUNTER
MOV A,COUNTER
CJNE A,#6,D_L1
POP PSW
POP ACC
RETI
DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
BitTab:DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH
END
下一篇:优秀共产党员材料