您现在所在的是:

单片机论坛

回帖:2个,阅读:1048 [上一页] [1] [下一页]
909
lianghehua
文章数:3
年度积分:50
历史总积分:909
注册时间:2005/3/29
发站内信
发表于:2005/3/29 0:20:00
#0楼
org 0000h
ajmp start
org 000bh
ajmp time0
org 30h
start:
setb p2.7
mov r7,#00h
mov r6,#00h
mov tmod,#00000001b
mov th0,#3ch
mov tl0,#0b0h
setb ea
setb et0
jb p3.2,$
setb tr0
clr p2.7
loop:jb p3.3, loop
clr tr0
setb p2.7
ajmp start
time0:inc r7
cjne r7,#20,t_ret
mov r7,#0
inc r6
cjne r6,#10,t_ret
mov r6,#0
setb p2.7
clr tr0
ajmp start
t_ret:mov th0,#3ch
mov tl0,#0b0h
reti
end



请问该程序为什么第一次定时时间是正常,第二次再按p3.2启动就不正常呢?按复位键再启动就正常????????
909
lianghehua
文章数:3
年度积分:50
历史总积分:909
注册时间:2005/3/29
发站内信
发表于:2005/3/29 18:03:00
#1楼
怎么没人回一下呢?这应该不是个大难题,我相信会有很多人会答的??????
1060
ganqingao
文章数:66
年度积分:50
历史总积分:1060
注册时间:2004/10/14
发站内信
发表于:2005/3/30 14:32:00
#2楼
你的定时中断目的不明确,按P3.2后,启动定时器,P2.7点亮,然后等待,按P3.3后程序继续运行。没按P3.3时,定时中断后又回到LOOP: JB P3.3,LOOP这条上,注意:你在time0中有一条ajmp start,这一条没用,reti后接下去是中断前的一步,是LOOP: JB P3.3,LOOP。所以,你的程序在执行时的过程是:按下P3。2,P2。7点亮,松开P3。2,然后等定时时间过后,按P3。3,松开P3。3,再按P3。2,P2。7熄灭,松开P3。2,等定时时间过后,按P3。3,重复上述步骤,P2。7才会点亮、熄灭。如果P3。2和P3。3同时按下或按下的相隔时间太短的话,都不会使程序正常工作,因为按P3。2启动定时器,定时时间还没到就按P3。3,把定时器关掉,P2。7置位后程序又从start开始。
★★★【理论和实践是有一定距离的】★★★

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003