• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

C程序出错,请高人查找BUG.

搞了半年的电源,把单片机都给忘了.今天试着写一个程序,竟然没有实现我本来的效果,折腾了一下午,都不可以.

按一下按键,跑马灯就开始跑动,按两下就熄灭,再按再亮,再按再灭,如此循环.

但是我现在的效果是按一下以后,跑马灯一直在工作,按第二下三下四下……都不起作用了,与我写程序的初衷不合,请高人帮忙.

程序如下:

#include "reg51.h"
#include
sbit A=P3^5;

void delayms(unsigned char time)         // 延时子程序
{                        
    unsigned char i;    
    while(time--)
    {
        for(i = 0; i < 120; i++);
    }
}

main()
{
  unsigned int i;
  i=0;
  if(!A)
    {
  unsigned int j;
  for(j=0;j<1000;j++)  //延时去抖
      {
             if(!A)   //延时以后按键依然按下.
i=i++;   //变量加1.
  }
  
    }
   while(i%2)           //奇数次就开始运行,偶数次就跳出去.
     {
       unsigned char LED;
       LED = 0xfe;
       P0 = LED;
    
       while(1)
            {
              delayms(1000);            
              LED = _cror_(LED,1);        //循环右移1位,点亮下一个LED
              P0 = LED;
}
     }  

}
全部回复(1)
正序查看
倒序查看
2007-10-13 23:36
while(1)
            {
              delayms(1000);            
              LED = _cror_(LED,1);        //循环右移1位,点亮下一个LED
              P0 = LED;
}
/*你的程序会一直执行这个循环,不会去判断按键的状态*/
0
回复