阅读:1456回复:2
奇怪?
我用W78E52B作的一个电路板,其中CheckEn为P1^1,外接三极管控制一LED,调用中断函数如下,奇怪的是LED并不能闪烁,而将if (inttime >10) 去掉就可以,百思不得其解。
void timer0() interrupt 1 using 1 { TH0 = 0x3c; TL0 = 0xb0; inttime+=1; if (inttime >10) { CheckEn=!CheckEn; inttime = 0; } } |
|
沙发#
发布于:2004-11-30 19:05
按你的说的看,我觉得是因为“if (inttime >10)”这个条件有问题!
if (inttime >10)” 你这个“CheckEn=!CheckEn;”是将CheckEn取反在赋值给CheckEn,你是利用这个语句才是你的LED闪烁的,是不是? 那好!假如你的条件“if (inttime >10)”不能得到满足的话,那么程序不是执行“if (inttime >10)”而是跳过他,而执行这个条件后面的语句!这样的话,自然就不能使你的“CheckEn”在“0”与“1”之间变化了,就能是你的LED闪烁哦! 所以根据你的描述!我觉得是因为你的if条件设置有问题! 你还换一个吧! |
|
板凳#
发布于:2004-12-01 17:49
谢谢楼上老兄的回答。
问题解决了,程序没有问题,是keil中的选项设置错了。 |
|