查看:
2898
|
回复:
0
|
开关状态检测
|
|
发表于2018-12-15 17:33:01
|
只看该作者
1#
电梯直达
读入I/O端口电平,即可检测开关处于闭合状态还是打开状态。 开关检测案例1
参考程序如下:
#include <reg51.h> #define uchar unsigned char void delay( ) //延时函数 { uchar i,j; for(i=0; i<255; i++) for(j=0; j<255; j++); } void main( ) //主函数 { while (1) { unsigned char temp; //定义临时变量temp P1=0xff; //P1口低4位置1,作为输入;高4位置1,发光二极管熄灭 temp=P1&0xf0; //读P1口并屏蔽低4位,送入temp 中 temp=temp>>4; //temp内容右移4位,P1口高4位移至低4位 delay( ); } 开关检测案例2 参考程序:
#include <reg51.h> // 包含头文件reg51.h void main( ) //主函数main( ) { char state; do { P1=0xff; // P1口为输入 state=P1; // 读入P1口的状态,送入state state=state&0x03; // 屏蔽P1口的高6位 switch (state) // 判P1口低2位开关状态 { case 0: P2=0x01; break;// P1.1、P1.0=00,点亮P2.0脚LED case 1: P2=0x02; break;// P1.1、P1.0=01,点亮P2.1脚LED case 2: P2=0x04; break;// P1.1、P1.0=10,点亮P2.2脚LED case 3: P2=0x08; break;// P1.1、P1.0=11,点亮P2.3脚LED } }while ( 1 ); } |
|