最近給別人講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)么 問題出在那里 望大佬指點
|