利用定时器实现2位数码管秒表0到99循环

发布时间:2019-08-09 15:10:33

利用定时器实现2位数码管秒表0到99循环

推荐回答

还没有选出推荐答案,请稍候访问或查看其他回答!

其他回答

描述: 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

以上问题属网友观点,不代表本站立场,仅供参考!