标题: 流水灯哪里有误,帮我看看 [打印本页]

作者: tu2y    时间: 2010-4-7 22:48
标题: 流水灯哪里有误,帮我看看

#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;
 
}

 

搞不明白,每次写代码都有怎样的错误
我检查没错误啊


作者: admin    时间: 2010-4-8 00:05

改好了,在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();
  }
 
}


作者: zgaoq    时间: 2010-6-7 21:50

#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