打印

单片机新手求教,关于8个LED累计亮灭的问题

[复制链接]
1989|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
308141883|  楼主 | 2011-4-6 00:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟初学单片机C语言,请各位坛友解疑:
如下程序为自编的LED流水灯,的显示效果为:
1.首先从D1开始熄灭到D1-D8全部熄灭
2.之后由D8开始逐渐亮,最后D1-D8全亮,后转入1循环。
目前遇到问题是:标红的两个语句中|与&的分别得作用是什么,两个语句如何理解?
我互换它两,显示效果不一样,后面注释为个人理解,忘高手指正,谢谢!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a;
uint b;
void main()
{
    while(1)
    {
        b=50000;
        P1=0x01;//D1灭,D2-8全亮
        while(b--);//延时
        for(a=1;a<7;a++)
        {
            P1=P1<<1;//数据左移1位
            P1=P1|0x01;//P1为P1现有值至0x01中间的数值
            while(b--);
        }
        P1=0xff;//D1-D8全灭
        while(b--);
        P1=0x7f;//D8亮
        while(b--);
        for(a=1;a<7;a++)
        {
            P1=P1>>1;//数据右移1位
            P1=P1&0x7f;//P1为P1现有值至0x7f中间的数值
            while(b--);
        }
        P1=0x00;
        while(b--);
    }
}

相关帖子

沙发
angehan| | 2011-4-6 08:57 | 只看该作者
P1左移一位。然后再最后一位补上1.。。

使用特权

评论回复
板凳
王利110| | 2011-4-6 21:08 | 只看该作者
:(     谭浩强版C最后一章再看看!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

59

帖子

0

粉丝