上QQ阅读APP看书,第一时间看更新
例3-5 开关检测案例1
如图3-6所示,单片机的P1.4~P1.7接4个开关S0~S3,P1.0~P1.3接4个发光二极管LED0~LED3。编写程序,将P1.4~P1.7上的4个开关的状态反映在P1.0~P1.3引脚控制的4个发光二极管上,开关闭合,对应的发光二极管点亮。例如,P1.4引脚上开关S0的状态由P1.0脚上的LED0显示;P1.7引脚上开关S3的状态,由P1.3脚上的LED3显示。
图3-6 开关、LED发光二极管与P1口的连接
参考程序如下。
#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位 P1=temp; //temp中的数据送P1口输出 delay( ); } }