发布时间:2019-08-09 15:10:33
描述: 2位LED数码显示"秒表",显示时间为00~99秒,每秒自动加1,
; 一个"开始"键,一个"复位"键,一个"暂停"键,一个“快加”键。
; 调用子程序:暂停键子程序,计时键子程序,清0键子程序,加一子程序
; 显示子程序,定时子程序
;所用特殊寄存器:寄存器A,寄存器C
;所用中断:外部中断INT0、INT1,定时器T0、T1
主程序
;*****************************************************
main: mov tcon,#05h ;主程序开始 外部中断跳变模式
mov tmod,#11h ;定时器0,1模式1
mov ie,#8fh ;开总中断,中断0,1,定时器0,1
mov dptr,#tab
mov r1,#00h
mov r2,#00h
mov r3,#40 ;循环次数40
mov tl0,#2Ch ;置初值,定时25MS
mov th0,#0CFh
mov tl1,#78h ;置初值,定时10MS
mov th1,#0ech
clr tr0 ;关定时器
clr tr1
;*****************************************************
; 暂停键K3,快加键K4程序
;*****************************************************
here:jb p1.0,here
show:clr tr1
clr tr0
acall xianshi
kuaijia:jb p1.2,kuaijia ;等待P1.2为0 快加
clr tr0
setb tr1
here3:jnb p1.2,here3
ajmp here
;*****************************************************
; 外部中断INT0子程序-----计时按键K1子程序
;*****************************************************
zhongduan0: setb tr0 ;计时按键
reti
;*****************************************************
; 外部中断INT1子程序----复位按键K2子程序
;*****************************************************
zhongduan1:clr tr0 ;复位按键
clr tr1
mov 12h,#00h
mov 11h,#00h
acall xianshi ;调用显示子程序
mov r1,#00h
mov r2,#00h
reti
;*****************************************************
; 加一子程序
;*****************************************************
jia1: inc r1 ;加1子程序
cjne r1,#0ah ,loop ;判断是否到表尾
mov r1,#00h
inc r2
cjne r2,#0ah,loop
mov r2,#00h
loop: mov 12h,r1 ;重新赋值
mov 11h,r2
ret
;*****************************************************
; 显示子程序
;*****************************************************
xianshi: mov r7,#02h ;2个数码管显示子程序
mov r0,#12h
loop5: mov r6,#08h ;8位2进制数
mov a,@r0
movc a,@a+dptr
loop6: rlc a ;循环左移
clr p3.1
mov p3.0,c
setb p3.1
djnz r6,loop6
dec r0
djnz r7,loop5
ret
;*****************************************************
; 定时器T0子程序
;*****************************************************
yanshi: mov tl0,#2Ch ;定时子程序
mov th0,#0CFh
djnz r3,loop7
acall jia1 ;调用加1子程序
acall xianshi ;调用显示子程序
mov r3,#40
loop7: reti
;*****************************************************
;定时器T1子程序
;*****************************************************
dingshi1:mov tl1,#78h ;置初值,定时10MS
mov th1,#0ech
clr tr0
setb tr1
mov 12h,r1
mov 11h,r2
jnb p1.0,show
acall jia1
acall xianshi
lop7: reti
;*****************************************************
tab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end