📄 dirkeyboard_3.c
字号:
/**********************************************
* File: DirKeyboard_3.C
* Description: Direct Keyboard Interface Example
* Created Date: 2007-10-01
* Last Modified: 2007-10-01
* Author: Jeffrey - Schicksal@126.com
* Notes: None
**********************************************/
#include <REGX51.h>
unsigned char Read_Keyboard();
/**********************************************
* Function: delay(unsigned int t)
* Input Variables: t
* Return Variables: None
* Usage: Common Delay Routine, t as the delay time ticks
**********************************************/
void delay(unsigned int t)
{
for(;t>0;t--); // 延时循环
}
/**********************************************
* Function: main()
* Input Variables: None
* Return Variables: None
* Usage: Program Entry
*********************************************/
void main()
{
unsigned char LED_Status = 0xff; // 定义键值
unsigned char Keyboard_Status = 0xff; // 定义键值
unsigned char Keyboard_Status_Old = 0xff; // 上一次的键值保持
unsigned char jTemp; // 临时变量
unsigned char iTemp; // 临时变量
while(1)
{
Keyboard_Status = Read_Keyboard(); // 读取按键值
if(Keyboard_Status != Keyboard_Status_Old) // 如果有键状态发生改变
{
jTemp = Keyboard_Status^Keyboard_Status_Old; // 计算状态改变的位
for(iTemp = 1;iTemp<129;iTemp<<1) // 扫描状态位
{
if(iTemp&jTemp) // 状态改变
{
if(iTemp & Keyboard_Status_Old) // 按键被按下
{
LED_Status ^= iTemp; // Toggle LED
}
else // 按键释放
{
// Nothing // 不做任何操作
}
}
}
}
P0 = ~LED_Status; // 点亮相应的LED灯
//********************主程序部分*********************//
// Add your code here
//********************主程序部分*********************//
}
}
/**********************************************
* Function: Read_Keyboard
* Input Variables: None
* Return Variables: Keys Value
* Usage: Read Keyboard Status
*********************************************/
unsigned char Read_Keyboard()
{
unsigned char Keys_Value; // 定义键值变量
unsigned char Keys_Temp;
do
{
P2 = 0xff; // P2口置高,准备读取按键状态
Keys_Temp = P2; // 读取按键状态
delay(150); // 消抖延时
P2 = 0xff; // P2口置高,准备读取按键状态
Keys_Value = P2; // 读取按键状态
}
while(Keys_Value != Keys_Temp); // 如果读取状态不一致,则重复读取键值
return Keys_Value; // 返回按键状态值
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -