#include <REGX52.H>
#include <INTRINS.H>
void delay(void) //誤差 -0.152253987588us
{
unsigned char a,b;
for(b=238;b>0;b--)
for(a=1;a>0;a--);
}
sbit P1^4 = 0 ;
int main()
{
unsigned int flag = 0xFE;
while(1)
{
P0=_cror_(flag,1);
delay();
}
return 0;
}
搞不明白,每次寫代碼都有怎樣的錯誤
我檢查沒錯誤啊
改好了,在51hei-5單片機(jī)開發(fā)板上測試成功,注意紅色的字體為修改過的.
-----------------------
#include <REG51.H>
#include <INTRINS.H>
void delay(void) //誤差 -0.152253987588us
{
unsigned char a,b;
for(b=238;b>0;b--)
for(a=250;a>0;a--); //原來的延時時間太短,各燈交替閃亮的時間太快,導(dǎo)致人眼無法看到跑馬燈效果.
}
sbit p14 =P1^4; //你原來的定義方法是錯的
main()
{
unsigned char flag = 0xFE; //這里不能用整形的,要用uchar型,8位每一位代表一個燈
unsigned char aa;
p14=0;
while(1)
{
P0=flag;
flag=_cror_(flag,1);
delay();
}
}
#include <reg52.h>
#include <intrins.h>
void delay(void)
{
unsigned char a,b;
for(b=238;b>0;b--)
for(a=100;a>0;a--);
}
sbit pw=P1^4;
sbit wei=P2^7;
void main(void)
{
unsigned int flag;
wei=0;
pw=0;
flag = 0xfe;
while(1)
{
P0=flag;
delay();
flag=_cror_(flag,1);
}
}
這樣改也可以。延遲可以改大些。
歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |