最近给别人讲LED流水灯,发现了一个问题,在仿真的时候第一次第一个灯不亮,其余都正常,第二次也能从第一个开始亮,在思路上不知道哪里有问题,
代码如下:
第一次:
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z);
void delay(uint z)
{
uint x,y;
for(x = z;x > 0;x--)
for(y = 120;y > 0 ;y--);
}
void main()
{
P0=0XFE ;
while(1)
{
P0=_crol_ (P0,1);
delay(500);
}
}
第二次修改 加了temp 将P0赋值给temp 就可以
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint temp;
void delay(uint z);
void delay(uint z)
{
uint x,y;
for(x = z;x > 0;x--)
for(y = 120;y > 0 ;y--);
}
void main()
{
temp=0XFE ;
while(1)
{
P0=temp;
temp=temp<<1;
temp=temp|0x01;
// temp=_crol_ (temp,1);
delay(500);
}
}
但是有点理解不通 P0不可以直接_crol_(P0,1)么 问题出在那里 望大佬指点
|