51单片机中C语言中P1=P1<<1|P1>>7怎么理解呀 求高手指点

Python019

51单片机中C语言中P1=P1<<1|P1>>7怎么理解呀 求高手指点,第1张

P1<<1

左移一位

P1>>7

右移七位

的结果或运算

实际上是想做一个循环移位

p7

p6

p5

p4

p3

p2

p1

p0

左移一位

等于

p6

p5

p4

p3

p2

p1

p0

0

p7

p6

p5

p4

p3

p2

p1

p0

右移七位

等于

0

0

0

0

0

0

0

p7

p6

p5

p4

p3

p2

p1

p0

0

0

0

0

0

0

0

0

p7

+---------------------------------------

p6

p5

p4

p3

p2

p1

p0

p7

P1 = P1 | 0X01

P1 = P1 || 0X01

这个是不一样的, | 按位或, || 逻辑或

P1 = P1 | 0x01

不管P1_0脚是什么电平 P1其它位不变,低位为1;

左移的意思,对于8位的单片机,P1=P1^(,,,,<<0)对应的是第一个P1的口然后依次向下。

举个例子,如果P1口是对应8个灯左移0位 (就是<<0)就是第一个灯亮,