在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的狀態會實時更新。