计时器部分
;
; 定时器T0、T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁用,
; P3.5为调整按钮,P0口 为字符输出口,P2口为位选端,采用共阳显示管。
; 时间调整方法:按3。5未超过1s进入省电模式,数码管不亮,内部时钟计时
; 按3。5超过1s进入调整模式,要调整的时间会闪动,此时,按下P3。5超过0。5S,进入下位调整
; 按下P3。5未超过0。5S,当前位加一
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 中断入口程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H ;程序执行开始地址
LJMP START ;跳到标号START执行
ORG 0003H ;外中断0中断程序入口
RETI ;外中断0中断返回
ORG 000BH ;定时器T0中断程序入口
LJMP INTT0 ;跳至INTTO执行
ORG 0013H ;外中断1中断程序入口
RETI ;外中断1中断返回
ORG 001BH ;定时器T1中断程序入口
; LJMP INTT1 ;跳至INTT1执行
ORG 0023H ;串行中断程序入口地址
RETI ;串行中断程序返回
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 主 程 序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START: SETB P1.0; LED指示
SETB P3.7; 计时
MOV R0,#70H ;清70H-7AH共11个内存单元
MOV R7,#0BH ;
CLEARDISP: MOV @R0,#00H ;
INC R0 ;
DJNZ R7,CLEARDISP ;
MOV 20H,#00H ;清20H(标志用)
MOV 7AH,#0AH ;放入"熄灭符"数据
MOV TMOD,#11H ;设T0、T1为16位定时器
MOV TL0,#0B0H ;50MS定时初值(T0计时用)
MOV TH0,#3CH ;50MS定时初值
MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)
MOV TH1,#3CH ;50MS定时初值
SETB EA ;总中断开放
SETB ET0 ;允许T0中断
SETB TR0 ;开启T0定时器
MOV R4,#14H ;1秒定时用初值(50MS×20)
KAISHI:
LCALL DISPLAY ;调用显示子程序
JNB P3.7,AA; 跳转到计数开
SETB P1.0; 暂停计数指示
CLR ET0; 计数关
CLR TR0; 计数关
SJMP KAISHI ;P3.5口为1时跳回START1
AA: