/******************************************************************************
此程式是依據吳堅鴻程式框架,在普中51 A2微控制器開發板上的程式練習
程式目標:帶順序的按鍵組合鍵,按下後LED取反
*******************************************************************************/
#include<REG51.H>
#define Main_Fosc 12000000L //預設系統時鐘12Mhz
#define T1MS (65536-Main_Fosc/12/1000) //12分頻下1ms定時器的裝載值,n=t/T=t/(12/f)=0.001*f/12=f/12/1000
#define Key_Debounce 40 //按鍵debounce time
sbit LED=P2^0;
sbit Key=P3^1;
sbit Key2=P3^0;
unsigned char Key_Handle=0; //按鍵值,按下組合鍵之後為1,LED取反
void Sys_Init(); //系統初始化
void Delay_Long(); //長延時,等待系統穩定
void Perpherial_Init(); //埠初始化
void Key_Scan(); //按鍵掃描函式
void Key_Service(); //按鍵響應函式
void main()
{
Sys_Init();
Delay_Long();
Perpherial_Init();
while (1)
{
Key_Service();
}
}
void Sys_Init()
{
TMOD=0X01; //定時器0模式1
TL0=T1MS;
TH0=T1MS>>8;
}
void Delay_Long()
{
unsigned char i,j;
for(i=0;i++;i<220)
{
for(j=0;j<220;j++)
;
}
}
void Perpherial_Init()
{
ET0=1;
TR0=1;
EA=1;
}
void Timer0_ISR() interrupt 1 //定時器0中斷函式
{
TL0=T1MS;
TH0=T1MS>>8;
Key_Scan();
}
void Key_Scan()
{
static unsigned int Key_CNT;
static unsigned char Key_Lock;
if (0!=Key)
{
Key_CNT=0;
Key_Lock=0;
}
else if (0==Key_Lock)
{
Key_CNT++;
if (Key_CNT>Key_Debounce)
{
if (0==Key2)
{
Key_Lock=1;
Key_Handle=1;
}
}
}
}
void Key_Service()
{
if (0==Key_Handle)
{
return;
}
switch (Key_Handle)
{
case 1:
LED=!LED;
Key_Handle=0;
break;
}
}
51微控制器程式框架之帶順序的組合按鍵觸發
相關文章
- 51微控制器程式框架之組合按鍵框架
- 51微控制器程式框架之矩陣按鍵框架矩陣
- 基於51微控制器的矩陣按鍵矩陣
- 51微控制器入門:獨立按鍵(02)
- 51微控制器程式框架之LED閃爍_方法1框架
- 一款免費使用的PDF檔案批次合併工具,可操作pdf檔案順序,按順序合併pdf檔案。
- 一款免費使用的PDF檔案批量合併工具,可操作pdf檔案順序,按順序合併pdf檔案。
- JS判斷鍵盤是否按的Enter鍵並觸發指定按鈕點選操作JS
- 聊一下Button事件、命令、行為的觸發順序事件
- jsoncpp按寫入順序讀取JSON
- MySQL按指定順序排序(order by field的使用)MySql排序
- 51、52微控制器使用矩陣鍵盤矩陣
- H5中video的事件的觸發順序是怎樣的?H5IDE事件
- 307【畢設課設】基於51微控制器虛擬按鍵電子琴設計
- Python 模組的載入順序Python
- 順序三元組
- Python中按字母順序對列表排序Python排序
- unittest--TestCase 按宣告順序執行
- MySQL 按指定 ID 順序返回結果MySql
- Mysql按指定 ID 順序返回結果MySql
- 51微控制器競賽設計44例全部帶proteus模擬+程式
- 聊聊如何讓springboot攔截器的執行順序按我們想要的順序執行Spring Boot
- mysql 中sql語句關鍵字的書寫順序與執行順序MySql
- 給定一個按非遞減順序排序的整數陣列 A,返回每個數字的平方組成的新陣列,要求也按非遞減順序排序。排序陣列
- python的順序程式設計Python程式設計
- C++結合QT實現帶有優先順序的計算器C++QT
- Java框架學習順序是哪些Java框架
- Java框架學習順序是哪些?Java框架
- CSS font 複合屬性順序CSS
- Android學習 —— 測試init.rc中的條件觸發的處理順序Android
- LeetCode - 1389 - 按既定順序建立目標陣列LeetCode陣列
- Android程式優先順序Android
- 程式碼說事 之 建立java物件的初始化順序Java物件
- 51微控制器非常簡潔的矩陣掃描程式矩陣
- 51微控制器學習歷程(二)快速入門51微控制器
- 51微控制器程式下載失敗原因排查
- python pandasDataframe按指定index名或columns名(行名或列名)順序修改輸出內容的排列順序PythonIndex
- # 關於select關鍵字語句定義順序# 關於select關鍵字語句執行順序