51单片机典型项目实战全能一本通(C语言版)(视频版)
上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(  ); 
      } 
  }