|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
我的按鍵程序設計,可以處理加速鍵、一鍵多功能等情況 |
| 作者:xwj 欄目:單片機 |
呵呵 看到論壇在討論按鍵,也把我設計按鍵程序的思路說說,歡迎大家拍磚 1、一般都不在鍵盤程序中延時,而是通過隔一段時間調用(比如10毫秒)來掃描按鍵,以盡量釋放CPU資源; 2、所有鍵盤程序基本上都是一個模式,可以處理加速鍵、一鍵多功能等情況; 3、對外接口只有2個,換用不同硬件的鍵盤只需把該鍵盤程序加入工程編譯即可,其他不需要作任何改動,非常方便。 基本上都是一個模式: 有鍵?--YES——和上次相同?--No--Keyold=0;退出 | | | YES--Keyold++; | | | Keyold==首鍵延時KEYDELAY?--No--退出 | | | YES--Keyok=1; //按下不放一定時間發(fā)首鍵,后面發(fā)加速鍵 | 保存鍵值到Keydata;(必要時譯碼) | Keyold=KEYDELAY-KEYLOOP(按住不放的延時);--退出 | No--Keyold==0?--YES--退出 | N0--Keyok=1; //不為0說明按了鍵再放開,當然作按鍵有效處理 保存鍵值到Keydata;(必要時譯碼) Keyold=0;--退出 所有鍵盤程序對外接口: unsigned CHAR KeyGetCode(void) //返回按鍵碼 { key_ok=0; return(key_data); } bit KeyTest(void) //檢查有無按鍵 { KeyScan(); //鍵掃描 return(key_ok); } |
| 2樓: | >>參與討論 |
| 作者: xwj 于 2005/4/15 20:20:00 發(fā)布:
自己用的按鍵程序,為了直觀去掉了煩瑣的解碼程序 //--------------------------------------------------------------------------// // 源程序大公開 // // (c) COPYRIGHT 2001-2005 xuwenjun // // All Rights Reserved // // V1.00 // //--------------------------------------------------------------------------// //標 題: P1口行列式鍵盤程序 // //文件名: xwj_hlkey.c // //版 本: V1.00 // //修改人: 徐文軍 E-mail:xuwenjun@21cn.com // //日 期: 05-05-13 // //描 述: P1口行列式鍵盤程序 // //聲 明: // // 以下代碼僅免費提供給學習用途,但引用或修改后必須在文件中聲明出處. // // 如用于商業(yè)用途請與作者聯(lián)系. E-mail:xuwenjun@21cn.com // // 有問題請mailto xuwenjun@21cn.com 歡迎與我交流! // //--------------------------------------------------------------------------// //老版本: 無 老版本文件名: // //創(chuàng)建人: 徐文軍 E-mail:xuwenjun@21cn.com // //日 期: 05-05-13 // //--------------------------------------------------------------------------// #include <reg52.h> #include "xwj_hlkey.h" // P1口行列式鍵盤 // //#include "xwj_bp.h" //峰鳴器 #define KEYDELAY 25 /*首鍵延遲次數(shù)*/ #define KEYLOOP 10 /*連續(xù)鍵間隔次數(shù),需小于KEYDELAY*/ unsigned CHAR key_bak; unsigned CHAR key_temp; unsigned CHAR key_old; unsigned CHAR key_data; bit key_ok; // P1口行列式鍵盤 // #define KEYPIN_L P1 // 定義鍵掃描列端口為 P1低四位輸入 // #defin |
|
| 3樓: | >>參與討論 |
| 作者: ri1982 于 2005/4/15 20:36:00 發(fā)布:
嘿 |
|
| 4樓: | >>參與討論 |
| 作者: fushaobing 于 2005/4/16 8:47:00 發(fā)布:
已經收藏,謝謝 TO xwj:你的程序好象很煩瑣,能不能發(fā)個簡潔一點的?你的“Keyold”是不是指“鍵齡”? |
|
| 5樓: | >>參與討論 |
| 作者: huzeng168 于 2005/4/16 9:29:00 發(fā)布:
非常感謝 xwj:非常感謝你,我是初學者,你有沒有匯編的程序,非常想學習下按鍵程序設計,再次謝謝! |
|
| 6樓: | >>參與討論 |
| 作者: chenglcd 于 2005/4/16 11:20:00 發(fā)布:
還可以,UP |
|
| 7樓: | >>參與討論 |
| 作者: zxlfly 于 2005/5/13 18:53:00 發(fā)布:
感謝! 已經收藏 |
|
| 8樓: | >>參與討論 |
| 作者: wu1980 于 2005/5/21 16:44:00 發(fā)布:
re 如果用51匯編,該怎么寫呢?麻煩指導. zhangsong@airluxgroup.com 謝謝! |
|
| 9樓: | >>參與討論 |
| 作者: 艾森豪威爾 于 2005/5/23 8:37:00 發(fā)布:
不錯 收藏中... |
|
| 10樓: | >>參與討論 |
| 作者: kanprin 于 2005/5/23 9:00:00 發(fā)布:
不錯! |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |