|
《无线电》2004年第9期(带光盘)有一个99分钟89C2051倒计时程序,2个数码管显示,我按其作了一个,并将其光盘上的程序拷入,实际运行结果出现这样一个问题:
就是十位和个位到0后并没有停止(停止时显示‘--’2个负号),而是继续显示‘00’一分钟后才停下来(2个小数点一直在闪烁表示计时在运行)。
我是新手,没曾想学习现成的东西就会遇到如此大的难点,下面的定时程序绕得我晕头转向,已完全不是我这个新手所能解决的,所以特将问题提出,也不知道到底错在哪里,请诸位大侠帮忙。下面是定时子程序,旁边的注释是我填的也不知对错!
;------------------------
timon: ;定时计数中断子程序
setb rs0 ;psw切换工作寄存器区
push psw ;保留现场
push acc
mov tl1,#78h ;初值
mov th1,#0fch
setb tr1 ;启动T1
inc 40h ;从0+1
mov r0,40h ;再送到r0
cjne r0,#8,tim ;比较,=8则顺
mov 40h,#00h
cpl p1.0 ;小数点取反
t11: inc 41h
mov r0,41h
cjne r0,#60,tim ;次数
mov 41h,#00h
mov r0,42h ;个位给了r0
cjne r0,#00,tia ;r0=0则顺,此时个位为0
ajmp tib ;
tia: dec 42h ;个位减1
ajmp tim
tib: mov r1,43h ;十位送
cjne r1,#00,tic ;=0则顺,此时十位为0
mov p1,#0ffh ;p1口全开
setb p3.7 ;开继电器
clr p1.0 ;小数点灭
clr tr1
mov 42h,#0ah ;个位-
mov 43h,#0ah ;十位-
ajmp tim
tic: dec 43h ;十位减1
mov 42h,#09h ;个位
tim: pop acc ;a出栈
pop psw ;
reti
;------------------------
|
|