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模組是被動的元件,僅僅作為顯示狀態使用,而按鍵模組主要在接收外部的輸入訊號,而系統永遠無法預測這個輸入訊號什麼時候會進來,因此便產生二個問題:

一、什麼時候要去偵測這個輸入訊號。

二、若是偵測到輸入訊號該怎麼處理。

控制函式的設計:

.......................略。