第六课学习的内容跟第五课学习内容学习完做出了按键控制led的简单代码,代码如下
#include <reg52.h>
#define KEY_PRESS 0 // 按键按下状态
sbit KEY1 = P2^0; // 定义按键1
sbit KEY2 = P2^1; // 定义按键2
sbit KEY3 = P2^2; // 定义按键3
sbit KEY4 = P2^3; // 定义按键4
sbit KEY5 = P2^4; // 定义按键5
sbit KEY6 = P2^5; // 定义按键6
sbit KEY7 = P2^6; // 定义按键7
sbit KEY8 = P2^7; // 定义按键8
sbit LED1 = P1^0; // 定义LED1
sbit LED2 = P1^1; // 定义LED2
sbit LED3 = P1^2; // 定义LED3
sbit LED4 = P1^3; // 定义LED4
sbit LED5 = P1^4; // 定义LED5
sbit LED6 = P1^5; // 定义LED6
sbit LED7 = P1^6; // 定义LED7
sbit LED8 = P1^7; // 定义LED8
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 125; j++);
}
void main()
{
while (1)
{
if (KEY1 == KEY_PRESS) // 判断按键1是否按下
{
delay(10); // 延时去抖动
if (KEY1 == KEY_PRESS) // 再次判断按键1是否按下
{
while (KEY1 == KEY_PRESS); // 等待按键1松开
LED1 = ~LED1; // LED1状态取反
}
}
if (KEY2 == KEY_PRESS) // 判断按键2是否按下
{
delay(10); // 延时去抖动
if (KEY2 == KEY_PRESS) // 再次判断按键2是否按下
{
while (KEY2 == KEY_PRESS); // 等待按键2松开
LED2 = ~LED2; // LED2状态取反
}
}
if (KEY3 == KEY_PRESS) // 判断按键3是否按下
{
delay(10); // 延时去抖动
if (KEY3 == KEY_PRESS) // 再次判断按键3是否按下
{
while (KEY3 == KEY_PRESS); // 等待按键3松开
LED3 = ~LED3; // LED3状态取反
}
}
if (KEY4 == KEY_PRESS) // 判断按键4是否按下
{
delay(10); // 延时去抖动
if (KEY4 == KEY_PRESS) // 再次判断按键4是否按下
{
while (KEY4 == KEY_PRESS); // 等待按键4松开
LED4 = ~LED4; // LED4状态取反
}
}
if (KEY5 == KEY_PRESS) // 判断按键5是否按下
{
delay(10); // 延时去抖动
if (KEY5 == KEY_PRESS) // 再次判断按键5是否按下
{
while (KEY5 == KEY_PRESS); // 等待按键5松开
LED5 = ~LED5; // LED5状态取反
}
}
if (KEY6 == KEY_PRESS) // 判断按键6是否按下
{
delay(10); // 延时去抖动
if (KEY6 == KEY_PRESS) // 再次判断按键6是否按下
{
while (KEY6 == KEY_PRESS); // 等待按键6松开
LED6 = ~LED6; // LED6状态取反
}
}
if (KEY7 == KEY_PRESS) // 判断按键7是否按下
{
delay(10); // 延时去抖动
if (KEY7 == KEY_PRESS) // 再次判断按键7是否按下
{
while (KEY7 == KEY_PRESS); // 等待按键7松开
LED7 = ~LED7; // LED7状态取反
}
}
if (KEY8 == KEY_PRESS) // 判断按键8是否按下
{
delay(10); // 延时去抖动
if (KEY8 == KEY_PRESS) // 再次判断按键8是否按下
{
while (KEY8 == KEY_PRESS); // 等待按键8松开
LED8 = ~LED8; // LED8状态取反
}
}
}
}