当前位置: 代码迷 >> 单片机 >> 单片机c语言编程中的一个有关问题,始终是搞不懂啊代码在上面
  详细解决方案

单片机c语言编程中的一个有关问题,始终是搞不懂啊代码在上面

热度:46   发布时间:2016-04-28 15:43:23.0
单片机c语言编程中的一个问题,始终是搞不懂啊,代码在下面
#include<reg52.h>
#include<absacc.h>

sbit  LED_BIT = P1^6;
#define led_enable() LED_BIT = 1
#define led_disable()  LED_BIT = 0
#define led_move_1() P0 <<= 1
#define led_move_r() P0 >>=1

#define DELAY_TIME 20

void my_delay10nms(unsigned int n)
{
  unsigned i,j;
  while(n--)
  {
    for(i = 128;i>0;i--)
  for(j = 10;j>0;j--);
  
  }

}




void main(void)
{
     led_enable();
     unsigned char i,cnt = 1;
 //  led_enable();
   my_delay10nms(DELAY_TIME);
   while(1)
   {
      
      P0 = (1 << cnt) - 1;
  my_delay10nms(DELAY_TIME);
      for(i = 0;i <8-cnt;i++)
  {
    led_move_1();
my_delay10nms(DELAY_TIME);
  
  }

  for(i = 0;i<8-cnt;i++)
  {
    led_move_r();
my_delay10nms(DELAY_TIME);
  
  }

  cnt++;

  if(cnt > 7) cnt =1;

   
   
   
   }


}

------解决方案--------------------
搞不懂什么啊?
------解决方案--------------------
跑马灯么?程序没什么问题呢 哪里不理解
------解决方案--------------------
不好意思,忘了写自己疑惑的地方了:上面的代码,编译结果是错误的,但是,讲main主函数里面unsigned char i,cnt = 1;这句代码上面的led_enable();放到unsigned char i,cnt = 1;代码下面的话,那么编译就能够通过,并且程序能够正确运行。


------解决方案--------------------
引用:
跑马灯么?程序没什么问题呢 哪里不理解

有问题啊,编译通不过啊,但是,讲main主函数里面unsigned char i,cnt = 1;这句代码上面的led_enable();放到unsigned char i,cnt = 1;代码下面的话,那么编译就能够通过,并且程序能够正确运行。

------解决方案--------------------
引用:
搞不懂什么啊?

不好意思,忘了写自己疑惑的地方了:上面的代码,编译结果是错误的,但是,将main主函数里面unsigned char i,cnt = 1;这句代码上面的led_enable();放到unsigned char i,cnt = 1;代码下面的话,那么编译就能够通过,并且程序能够正确运行。

------解决方案--------------------
必须是这样的啊 变量的声明必须放在函数体的前面
  相关解决方案