?? 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--); // 延時(shí)循環(huán)
}
/**********************************************
* 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; // 臨時(shí)變量
unsigned char iTemp; // 臨時(shí)變量
while(1)
{
Keyboard_Status = Read_Keyboard(); // 讀取按鍵值
if(Keyboard_Status != Keyboard_Status_Old) // 如果有鍵狀態(tài)發(fā)生改變
{
jTemp = Keyboard_Status^Keyboard_Status_Old; // 計(jì)算狀態(tài)改變的位
for(iTemp = 1;iTemp<129;iTemp<<1) // 掃描狀態(tài)位
{
if(iTemp&jTemp) // 狀態(tài)改變
{
if(iTemp & Keyboard_Status_Old) // 按鍵被按下
{
LED_Status ^= iTemp; // Toggle LED
}
else // 按鍵釋放
{
// Nothing // 不做任何操作
}
}
}
}
P0 = ~LED_Status; // 點(diǎn)亮相應(yīng)的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口置高,準(zhǔn)備讀取按鍵狀態(tài)
Keys_Temp = P2; // 讀取按鍵狀態(tài)
delay(150); // 消抖延時(shí)
P2 = 0xff; // P2口置高,準(zhǔn)備讀取按鍵狀態(tài)
Keys_Value = P2; // 讀取按鍵狀態(tài)
}
while(Keys_Value != Keys_Temp); // 如果讀取狀態(tài)不一致,則重復(fù)讀取鍵值
return Keys_Value; // 返回按鍵狀態(tài)值
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -