找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机流水灯程序,看哪里出错了,灯全暗新手求解答

  [复制链接]
跳转到指定楼层
楼主
ID:85588 发表于 2015-7-13 21:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机流水灯程序,看哪里出错了,灯全暗
#include <reg52.h>
typedef unsigned int  u16;
typedef unsigned char u8;

void delay(u16 num)
{
        u16 x,y;
        for(x=num; x>0; x--)
                for(y=110; y>0; y--)
                {
                        ;//延时1ms
                }
}
void main(void)
{
       u8 n,temp_val;
                P1=0xFF;//LED输出模式
                temp_val=0xFF;

        while(1)
        {

                for(n=1;n<8;n++)
                {
                temp_val = (temp_val << 1) || (0x01);
                P1=temp_val;
                delay(500);
                }

        }
}

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

使用道具 举报

沙发
ID:58502 发表于 2015-7-13 23:15 | 只看该作者
temp_val = (temp_val << 1) || (0x01);的或改成与,因为用或的话temp_val 会一直是0xff

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:79908 发表于 2015-7-13 23:30 | 只看该作者
逻辑或只是用于判断,即只有0和1,按位或才是用于计算。temp = 0xff,左移一位变成0xfe,在和0x01 逻辑或变成了0x01,你说的全部不亮,我就不知道原因,因为不知道你的硬件电路是怎样的!如果改成和 0x01 按位或 temp一直为0xff,如果是共阳,全不亮是正确的。但是你写的是逻辑或,结果只能是0x01 。

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:79908 发表于 2015-7-13 23:35 | 只看该作者

改成逻辑与和按位与都不能实现

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:85588 发表于 2015-7-14 10:39 | 只看该作者
谢各位,明白了, 初值设成0xfe,左移后在按位或就可以了

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:85629 发表于 2015-7-14 11:35 | 只看该作者
temp_val = (temp_val << 1) || (0x01);
这句话,错了,
把||改成&就可以了

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:85654 发表于 2015-7-14 16:07 | 只看该作者
temp_val=0xFF;    temp_val = (temp_val << 1) || (0x01);  会一直是1  当然全灭了

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:73833 发表于 2015-7-20 18:25 | 只看该作者
你那程序,与也罢,或也罢(你用“||"或常数?????!!!!)都不行的,不好用的!你试试这个:
#include <reg52.h>
#include <intrins.h>
typedef unsigned int  u16;
typedef unsigned char u8;

void delay(u16 num)
{
        u16 x,y;
        for(x=num; x>0; x--)
          for(y=110; y>0; y--);
}
void main(void)
{
       u8 temp_val;
        temp_val=0x01;
        while(1)
        {               
                temp_val = _crol_(temp_val,1);   //左移
               //        temp_val = _cror_(temp_val,1);           //右移
                            P1= temp_val ;
                delay(5000);

                }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:86181 发表于 2015-7-20 19:31 | 只看该作者
再好好分析下,慢慢来
回复

使用道具 举报

10#
ID:86181 发表于 2015-7-20 19:34 | 只看该作者
学习单片机重要的是不要急,慢慢来

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

11#
ID:86338 发表于 2015-7-21 11:13 | 只看该作者
设置初值

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

12#
ID:86586 发表于 2015-7-23 11:36 | 只看该作者
temp_val = (temp_val << 1) || (0x01);
这句有错。运算符用的 有误

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

13#
ID:86056 发表于 2015-7-23 11:39 | 只看该作者
temp_val=0xFF;    temp_val = (temp_val << 1) || (0x01);  会一直是1  当然全灭了

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

14#
ID:86693 发表于 2015-7-24 14:52 | 只看该作者
编程序一定要细心,错一步都不行的!
回复

使用道具 举报

15#
ID:86693 发表于 2015-7-24 14:52 | 只看该作者
慢慢来,编多了就会了
回复

使用道具 举报

16#
ID:86724 发表于 2015-7-24 15:06 | 只看该作者
temp_val=0xFF;    temp_val = (temp_val << 1) || (0x01);  会一直是1  当然全灭了
回复

使用道具 举报

17#
ID:86725 发表于 2015-7-24 15:10 | 只看该作者
temp_val=0xFF;    temp_val = (temp_val << 1) || (0x01); //注意所用的运算符号,和运算结果
回复

使用道具 举报

18#
ID:86732 发表于 2015-7-24 16:08 | 只看该作者
454654
回复

使用道具 举报

19#
ID:86805 发表于 2015-7-25 14:54 | 只看该作者
我也有这样错误
回复

使用道具 举报

20#
ID:86815 发表于 2015-7-25 16:32 | 只看该作者
根据你的仿真图,看是高电平亮还是低电平亮,再决定使用0xfe还是0x01
回复

使用道具 举报

21#
ID:89337 发表于 2015-9-3 21:48 | 只看该作者
去掉||
回复

使用道具 举报

22#
ID:89202 发表于 2015-9-4 09:18 | 只看该作者
初始值就是FF,你后面||还是0x01,最后的结果就是永远都是FF,要是你的LED另一端接的是VCC,那可不就一直全暗么
回复

使用道具 举报

23#
ID:89357 发表于 2015-9-4 11:11 | 只看该作者

temp_val = (temp_val << 1) && (0x01);
回复

使用道具 举报

24#
ID:89408 发表于 2015-9-5 09:18 | 只看该作者
你的灯是高电平 亮还是低电平亮的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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