找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5340|回复: 2
打印 上一主题 下一主题
收起左侧

流水灯哪里有误,帮我看看

[复制链接]
跳转到指定楼层
楼主
ID:21822 发表于 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;
 
}

 

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 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();
  }
 
}

回复

使用道具 举报

板凳
ID:24360 发表于 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);
  
  }
 
 
}


 


 

这样改也可以。延迟可以改大些。

 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表