小弟初学单片机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--);
}
} |