51单片机初学,流水灯左移问题

#include<reg51.h>typedefunsignedcharuint8;typedefunsignedintuint16;voidmain(){uint8j=... #include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
void main()
{
uint8 j = 0;
uint16 i;
while(1)
{
P3 = ~(0x01 << j++);
for(i = 0;i< 20000;i++);
if(8 == j)
{
j = 0;
}
}
}

其中“P3 = ~(0x01 << j++);” 这一行为什么要用~ 用了的话不是应该亮的灯反而灭了,其他灯全亮了吗?? 比如左移一位时:P3=11111101
展开
 我来答
百度网友4720098
2017-02-07 · TA获得超过242个赞
知道小有建树答主
回答量:202
采纳率:100%
帮助的人:59.1万
展开全部
你看看电路图,你的电路图应该是二极管的阴极接了单片机的I/O引脚,这样的话,当相应引脚输出低电平时,LED会被点亮。
左移取反之后,只有一位为0,对应的LED被点亮。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式