刚开始学51单片机,学点流水灯时有些问题:P1 = 0xAA; //点亮 D1,D3,D5,D7 P1 口的二进制为 10101010,为 0

上面那句不懂。我理解P1=10101010,要是0为点亮,应是2,4,6,8灯亮才是,为什么是1,3,5,7呢?它对每个灯是怎么定义的?这里找材料也没写,或许太简单了?比如我要让第二四六八个灯亮,P1后面的值应是什么呀?

二进制和十进制一样右边是低位左边是高位,从右到左就是从低到高,所以要从低位读到高位么就要从右边开始读,1~8灯连接的是P1.0~P1.7,当P1=0xaa=0b10101010,那么1,3,5,7灯对应的是0,所以是1,3,5,7灯亮,如果要2,4,6,8灯亮么只要按位取反P1=0b01010101=0x55就行了。要学单片机的话我建议你先找本数电的书看看吧,最基本的二进制码都没搞明白,难。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-16
楼上说的不错,你没搞清最高位的问题,P1.7为高位,P1.0为低位。这样就明白了吧。
要想学好单片机,不但要对单片机本身的硬件了解,还要了解数字电路,数制换算,卡诺图化简,端口的输出方式,阿斯科字符的转换,各种外设的通讯协议(如DS1302实时时钟,18B20温度检测,1602英文字符显示,12864汉字显示,8155接口芯片,及AD,DA转换芯片,PWM脉宽调制等等吧),好好努力。
第2个回答  2011-12-16
要看你的灯怎么接,比如第一只LED是接P1低位还是高位,另外是LED阴极还是阴极接P1。