***/名称:通过使用按键来控制LED灯的闪烁。***/
#include <reg51.h>
/*************软件延时*******/
void delay(unsigned int uMs)
{
unsigned int i, j;
for(i = 0; i < uMs; i++)
{
for(j = 0; j < 1000; j++);
}
}
//****主函数*******//
main()
{
unsigned char temp, KeyNum;
KeyNum = P1; //读取KeyNum的值传递给P1;
if (KeyNum != 0xFF) //判断是否有键被按下;
{
delay(50); //延时消除抖动。
temp = P1; //再次读取KeyNum的值;
if (KeyNum == temp) //判断两次数值是否相等;
{
KeyNum = KeyNum; //相等则说明有按键被按下不是误操作,
P0 = KeyNum; //将被按下的键的信息传递给P0口输出,通过查看LED的显示状态判断是否与被按下键一致。
}
else
{
KeyNum = 0x00; //不相等说明有抖动产生,直接赋值消除抖动。
}
}
return 0; //该句可不加。
}
/**********************************************************/
Proteus仿真电路图如下:
将Keil C51程序的hex文件导入单片机中,通过按下P1口的按键,观察P0口二极管的显示状态来对照运行结果是否正确。