;***************************************************
;* 用 单片机 89C2051 制作的延时控制器 *
;* T0 、 TT0 配合构成为秒脉冲发生器 *
;* TSBIN 为秒计数器(二进制, 0~60) ; 21H 单元 *
;* TMBIN 为分计数器(二进制, 0~60) ; 22H 单元 *
;* THBIN 为时计数器(二进制, 0~24) ; 23H 单元 *
;* KEYCODE 为键盘值; 29H 单元 *
;* KEYPRE 为按键标志字; PSW.5 *
;* 当倒计时至 00H00M00S 时, P3.0, P3.1 端输出 *
;* 反相信号。 *
;* S1---- 对时按钮; S2 --对分按钮; *
;* S3 --对秒按钮; S4 --退出对时 *
;***************************************************
TMSBIN EQU 20H
TSBIN EQU 21H
TMBIN EQU 22H
THBIN EQU 23H
KEYCODE EQU 29H
TT0 EQU 2BH
OUT EQU 2DH
KEYPRE BIT PSW.5
DPS1 DATA 11001111B ;S4
DPM0 DATA 11010111B ;S3
DPM1 DATA 11011111B ;S2
DPH0 DATA 11100111B ;S1
DPH1 DATA 11101111B
HIDE DATA 11111111B ; 消隐字
ORG 0000H
AJMP
ORG 000BH
SJMP I_T0
ORG 001BH
I_T1: AJMP MAIN1
RETI
;*********** T0 中断服务 ***********
ORG 0030H
I_T0: PUSH ACC
PUSH PSW
MOV TH0,#0DCH ;0.01s 时间,常数因子为 DC00H
;MOV TL0,#00H
CLR C
MOV A,TMSBIN
SUBB A,#01H
MOV TMSBIN,A
MOV R3,TT0
DJNZ R3,I_T01 ; 中断次数 <100 (每次中断 0.01S ) , 转出
CPL KEYPRE
MOV R3,#100 ; 中断次数= 100 次,重新下一个计数
MOV TMSBIN,#100
CLR C
MOV A,TSBIN ; 秒计数器加 1
SUBB A,#01H
MOV TSBIN,A
;SUBB A,#60 ; 秒计数器 >59? Y ,秒计数器= 00
上一篇:AT89C系列单片机加解密原理