在51单片机的前面的文章中,我们主要讲述了单片机IO口的输出功能的应用,如LED控制、数码管控制等。这篇文章我们来讲解如何用单片机的IO口读取按键的状态,并根据按键的状态来控制LED。关于51单片机按键输入功能的介绍可以参考文章《51单片机(二十四)—— 独立按键工作原理》
在本文中,实例的代码如下所示。
#define KEY P2 //定义按键输入端口
#define LED P0 //定义LED输出端口
/********************************************************************/
/* 主函数 */
/********************************************************************/
void main (void)
{
KEY=0xff; //按键输入端口电平置高
for(;;) //主循环
{
LED=KEY;
}
}
代码很简单,主要代码只有for循环中的一行LED=KEY; 这一句代码的作用是将KEY的值赋值给LED。由程序的宏定义可知,KEY是P2,它是与独立按键连接的8个IO口的寄存器。LED是P0,它是与LED连接的8个IO口的寄存器。当某个独立按键按下时,则P2对应的IO口的电平状态被拉低,输入为0,当松开按键时,输入为1,在for循环中,将P2的值赋值给P0,当按键按下时,控制LED的IO口输出为0,则相应的LED点亮。松开按键时,控制LED的IO口输出为1,则相应的LED熄灭。由于赋值代码在for循环中,则LED的状态会实时更新。