#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单片机开发板上测试成功,注意红色的字体为修改过的.
-----------------------
#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--); //原来的延时时间太短,各灯交替闪亮的时间太快,导致人眼无法看到跑马灯效果.
}
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.51hei.com/bbs/) | Powered by Discuz! X3.1 |