C51求解 想了好久了

[复制链接]
查看11 | 回复1 | 2011-4-16 01:02:59 | 显示全部楼层 |阅读模式
外部中断一次,P1口8个灯依次间隔一秒亮。再中断一次,全灭全亮3次(间隔一秒),再中断一次,8个灯依次倒着亮回来,再中断一次,全灭全亮3次,再中断就循环,和开始一样。求T0延时1S的子程序,每次调用延时就行了。我编的:
delay:
mov th0,#3ch
mov tl0,#0b0h
setb tr0
djnz r7,out
ret
out:
ajmp $
可我运行无结果,单步运行发现OUT:ajmp $第一次输入定时中断TF0跳转了,而此后就不再跳转 为什么啊??????要跳R7=20次才为一秒!而我用out:inti 的话,又直接跳回原来LCALL DELAY的主程序了 求救啊

回复

使用道具 举报

千问 | 2011-4-16 01:02:59 | 显示全部楼层
这个写法不对如果是开了定时中断的话,要在中断中对R7自减。而在延时程序中判断是否为0 ,为0返回,不为0就是一直判断。delay:MOVR7,#20mov th0,#3chmov tl0,#0b0hsetb tr0CJNE r7,#0,$ret在中断中 mov th0,#3chmov tl0,#0b0hDECR7reti
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行