关于51单片机位操作和总线操作

刚学51单片机,想问一下关于单片机位操作和总线操作的区别和优点,顺便解释一下以下问题

若点亮八个共阳极LED灯当中的第一个,理应写P2=0x7f //(0111 1111),但此时却是最后一个LED点亮,若写成P2=0xfe //(1111 1110)才能将第一个LED点亮,求指教。

img

你好,对于你的问题:
1.对于位操作和总线操作的个人理解,首先需要知道程序的基本单位是字节,一个字节8位,但在单片机内部,其基本单元却是一个个位,每个位都相当于一个开关电路,导通输出高电平,关闭输出低电平,对应二进制里的0和1,所谓位操作个人理解就是对单独的一个位进行操作,而总线操作,就是可以把一连串的位看成是一个整体,比方说如果总线宽度是8位的,那么可以通过总线操作,一次性改变8个不同的位的状态。
2.观察你的电路,可以认为你的8个LED一端固定的接高电平,因此只要另一端为低电平,则LED导通发亮,而低电平则代表该位为0。
解答完毕,希望满意!

你好,根据你的电路图可以看出D1至D8是共阳极(最左边的符号位电源正极,高电平),需要右边一个低电平,发光二极管才能导通;D1至D8对应的IO口是P2^0至P2^7(单片机开发一定要注意端口顺序),二级制数据11111110对应的IO口是P2^7至P2^0
如果还有不懂,欢迎私聊我,我会耐心解答

这个只要搞清楚高低电平就好了,共阳极电路,低电平才亮,0对应低电平,还有高位和低位排列顺序对应上,按照你的线路,D7,D6,D5,D4,D8,D3,D2,D1,要亮D7和D8,对应的数值就是01110111,其他自己算吧,哈

你要使得第一个灯亮,就要使得P2-0为低电平,即P2-0为零,对应,那P2表示的一个八位的数最低位就是0,