homeland
驱动牛犊
驱动牛犊
  • 注册日期2003-12-24
  • 最后登录2009-02-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1398回复:2

奇怪?

楼主#
更多 发布于:2004-11-30 17:22
我用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;
}
  
  }
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分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条件设置有问题!
你还换一个吧!
homeland
驱动牛犊
驱动牛犊
  • 注册日期2003-12-24
  • 最后登录2009-02-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-01 17:49
谢谢楼上老兄的回答。
问题解决了,程序没有问题,是keil中的选项设置错了。
游客

返回顶部