标题: 求解答,这个程序在单片机上为什么不按预想的工作 [打印本页]

作者: devil11    时间: 2015-1-30 18:26
标题: 求解答,这个程序在单片机上为什么不按预想的工作
#include<reg52.h>
unsigned char LED;
void delay(unsigned int z);
void main()
{
        unsigned char a;
        LED=0X01;
           while(1)
           {
                for(a=0;a<8;++a)
                {
                        P0=LED;
                        delay(500);
                        LED=LED <<1;
                        LED=LED &  0xFF;
                }       
        }
}


void delay(unsigned int z)
{  unsigned char x,y;

   for(;z>0;z--)
   {       
   for(y=1110;y>0;y++)       
   {                  for(x=11110;x>0;x++) ;

   }
                           }
}
本想做一个流水灯,结果死活做不出来,求指教,不甚感激!!


作者: wind02072107    时间: 2015-1-30 19:03

#include<reg52.h>
unsigned char LED;
void delay(unsigned int z);
void main()
{
        unsigned char a;
        LED=0X01;
           while(1)
           {
                for(a=0;a<8;a++)
                {
                        P0=LED;
                        delay(500);
                        LED=LED <<1;
                        if(LED==0X00)
                          LED = 0X01;

                }        
        }
}


void delay(unsigned int z)
{  unsigned char x,y;

   for(;z>0;z--)
   {        
   for(y=1110;y>0;y++)        
   {                  for(x=11110;x>0;x++) ;

   }
                           }
}
作者: devil11    时间: 2015-1-30 19:25
wind02072107 发表于 2015-1-30 19:03
#include
unsigned char LED;
void delay(unsigned int z);

谢谢你,能否留下QQ,新手上路,还希望能多指教
作者: liaolinhui    时间: 2015-1-31 00:55
x,y,你定义的类型是unsigned char ,unsigned char 的取值范围是0-255,而你程序确是y=1110,x=11110超出范围了,所以要把unsigned char 改成unsigned int




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1