如果我们想要实现流水灯的效果,首先我们需要先让八个LED灯进入初始化状态,然后再让每一个灯按照规律依次亮起来,我们的初始化状态是0xfe,换算成二进制也就是11111110(0为低电平点亮,1为高电平熄灭)先让最开始的一个灯亮起来,不然无法使用移位操作符。
#includemain(){P1=0xfe;}接下来我们创建一个while循环,在循环里面让0xfe左移一位,以此类推,但是最终会发现不能实现流水灯的效果,因为这个左移操作符会持续向左把1变为0,但是第一个零和接下来的0都保持不变,依次循环一轮后全部都变成了0,也就是所有的灯都被点亮了,这个时候再左移也无济于事(如图所示,√为1,空格为0)
#includemain(){P1=0xfe;while(1){ P1=P1