Version 10, last updated by fellong at Jan 05 11:40 2009 UTC
實驗(二)按鍵開關輸入
(教學教材內容保留所有版權~欲轉載請註明出處~謝謝)
實驗(二) 按鍵開關輸入單元 與 控制模組的設計
實驗目的:
本節在實現按鍵開關輸入單元模組,並且使用回呼函式的方式來設計一個模組。
實驗一:
準位輸入,按住SW1則LED全亮,放開則全滅。
實驗二:
防彈跳設計,每按一下SW2 LED向左移位一次;每按一下SW1則LED向右移位一次。
實驗三:
單擊設計,按一下SW1則LED全亮,再按一下SW1則LED全滅。
實驗四:
自保持開關功能設計。按一下SW1則LED全亮,按一下SW2則LED全滅。
I/O腳位定義:
按鈕SW1:pe.6
按鈕SW2:pe.7
模組函式規畫:
/// ======== START Public 函式 ========
void Initial_SW1( void ); /// 初始化 IO
void SW1_Control( void ); /// 按鈕事件控制
/// ======== END Public 函式 ========
/// ======== START SW1 Callback 函式 ========
extern void SW1_Up( void ); /// Callback 函式,當 SW1 放開時會被持續叫用
extern void SW1_Down( void ); /// Callback 函式,當 SW1 按住時會被持續叫用
extern void SW1_Press( void ); /// Callback 函式,當 SW1 按下時會被叫用一次
extern void SW1_Release( void ); /// Callback 函式,當 SW1 放開時會被叫用一次
/// ======== END SW1 Callback 函式 ========
模組函式設計:
操作函式設計:
按鈕模組與上一個LED單元最大的差別在於,LED模組是被動的元件,僅僅作為顯示狀態使用,而按鍵模組主要在接收外部的輸入訊號,而系統永遠無法預測這個輸入訊號什麼時候會進來,因此便產生二個問題:
一、什麼時候要去偵測這個輸入訊號。
二、若是偵測到輸入訊號該怎麼處理。
控制函式的設計:
.......................略。