51单片机 点亮led灯

令P1=0xfe为何点亮的是c0的灯不是c7的灯?感觉单片机的2进制换16进制总是从2进制从后往前读?
灯是共阳极

第1个回答  2012-01-30
十六进制0xFE,对应二进制 1111_1110
这个二进制,对应引脚为 p1.7 p1.6 p1.5 p1.4 p1.3 p1.2 p1.1 p1.0
P1 = 0xfe,则对应p1.0为0,其他引脚输出1.
你的LED,必然是共阳极。所以P1.0对应的灯亮。
(如果是共阴极,那么P1.7~P1.1共7个LED亮,P1.0上的LED不亮)追问

为何是从p1.7~p1.0,我想当然的一位从p1.0~p1.7.是不是单片机的所有二进制都是从数字高的(1.7)到数字低的(1.0)的顺序?

追答

是的
所有的IO口操作都是与二进制对应,从左到右,由最高到最低位排列。

本回答被提问者采纳
第2个回答  2012-01-30
你的LED灯是共阳的,从你给的条件可以判断。P1=0xfe,即最低位为‘0’ ,故点亮的是P1.0引脚所对应的LED灯,也就是你所谓的C0。所以你的程序没有问题啊。追问

就是说11111110的最高位对应着p1.7,最低为对应着p1.0?是不是p2引脚也是一样?

追答

是的。P1.7隐含的意思就是P1口的最高位当然就对应着所赋值的最高位了,其他的IO口也是一样的。

第3个回答  2012-01-30
当然是C0亮了,左边是高位,右边是低位,PLC,单片机都是这样的啊。
第4个回答  2012-01-30
可以看一下这个是共阴还是共阳的。追问

共阳极

相似回答