上QQ阅读APP看书,第一时间看更新
例3-6 开关检测案例2
如图3-7所示,单片机P1.0和P1.1引脚接有两个开关S0和S1,两只脚上的高低电平共有4种组合,这4种组合分别控制P2.0~P2.3引脚上的4只LED(LED0~LED3)点亮或熄灭。当S0、S1均闭合时,LED0亮,其余灭;S0打开、S1闭合时,LED1亮,其余灭;S0闭合、S1打开时,LED2亮,其余灭;S0、S1均打开时,LED3亮,其余灭。编程实现此功能。
图3-7 开关检测案例2的原理电路
参考程序如下。
#include <reg51.h> // 包含头文件reg51.h void main( ) // 主函数main( ) { char state; do { P1=0xff; // P1口为输入 state=P1; // 读入P1口的状态,送入state state=state&0x03; // 屏蔽P1口的高5位 switch (state) // 判断P1口低2位的状态 { case 0: P2=0x01; break; // 如果键值为0,则点亮P2.0脚上的LED0 case 1: P2=0x02; break; // 如果键值为1,则点亮P2.1脚上的LED1 case 2: P2=0x04; break; // 如果键值为2,则点亮P2.2脚上的LED2 case 3: P2=0x08; break; // 如果键值为2,则点亮P2.3脚上的LED3 } }while (1); }
程序段中用到了循环结构控制语句do…while和switch…case。