SECOND EQU 30H
TCOUNT EQU 31H
KCOUNT EQU 32H
KEY BIT P3.7
ORG 00H
SJMP START
ORG 0BH
LJMP T0_INT
;----------------------------------------
START:
MOV P0, #6FH ;开始, 数码管显示"99"
MOV P2, #6FH
MOV TMOD, #01H ;T0定时方式1
MOV TH0, #(65536 - 50000) / 256
MOV TL0, #(65536 - 50000) MOD 256
MOV IE, #82H
MOV SECOND, #0
MOV TCOUNT, #0
MOV KCOUNT, #0
;----------------------------------------
K0:
JB KEY, $ ;等待按键按下
CALL DELAY ;延时
JB KEY, K0 ;没有按下,就是抖动
JNB KEY, $ ;等待按键松开
INC KCOUNT ;按键次数值加1
;----------------------
MOV A, KCOUNT ;判断按键次数
K1:
CJNE A, #1, K2
SETB TR0 ;第1次按键, 启动定时器
JMP K0
;----------------------
K2:
CJNE A, #2, START
CLR TR0 ;第2次按键, 关闭定时器
JMP K0
;----------------------------------------
T0_INT:
MOV TL0, #(65536 - 50000) MOD 256
MOV TH0, #(65536 - 50000) / 256
INC TCOUNT
MOV A, TCOUNT
; CJNE A, #2, T0_END ;是否计0.1秒?
CJNE A, #10, T0_END ;2, 速度太快,不便观察,暂用10
MOV TCOUNT, #0
INC SECOND
MOV A, SECOND
CJNE A, #100, DISP ;是否够10秒?
MOV SECOND, #0
DISP:
MOV DPTR, #TABLE
MOV A, SECOND
MOV B, #10
DIV AB
MOVC A, @A+DPTR ;显示时间
MOV P0, A
MOV A, B
MOVC A, @A+DPTR
MOV P2, A
T0_END:
RETI
;----------------------------------------
TABLE:
;9~0的段码, 反序排序。使用反序,可显示倒计时
DB 6FH, 7FH, 07H, 7DH, 6DH
DB 66H, 4FH, 5BH, 06H, 3FH
;0~9的段码, 正序
; DB 3FH, 06H, 5BH, 4FH, 66H
; DB 6DH, 7DH, 07H, 7FH, 6FH
;----------------------------------------
DELAY:
MOV R6, #20
D1: MOV R7, #250
DJNZ R7, $
DJNZ R6, D1
RET
;----------------------------------------
END
微信图片编辑_20180718165213.jpg (9.27 KB, 下载次数: 64)
说超出范围...
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |