标题: 开关控制灯的单片机程序如何理解? [打印本页]

作者: lclbf    时间: 2018-7-17 20:17
标题: 开关控制灯的单片机程序如何理解?
下面程序如何理解?好像和初值没有关系?
SW1控制D1,SW2控制D2,SW3控制D3,SW4控制D4,当SW1按下时,也就是P1.4为低电平,灯D1发光点亮,也就是P1.0为低电平。C语言程序如何理解?,程序如下:
         #include <AT89X51.H>
                unsigned char temp;
                void main(void)
                {
                while(1)
                {
                temp=P1>>4;
                temp=temp | 0xf0;
                P1=temp;
                }
                }

1.png (30.59 KB, 下载次数: 58)

1.png

作者: lclbf    时间: 2018-7-18 08:14
我的理解是这样的:
P1口的初值是:1111 1111,右移四位后变为:0000 1111,再和F0相|(或),结果为:1111 1111,把这个结果赋值给P1口。不明白这个结果是如何实现开关控制灯的。
作者: game灬boy    时间: 2018-7-18 08:42
按下开关为低电平,如SW4按下P1=0111 1111.  右移4位0000 0111与F0 相或位1111 0111对应第四个灯亮
作者: lclbf    时间: 2018-7-18 16:45
谢谢game灬boy解答!明白意思了!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1