實驗(七)紅外線接收

History Key

  • New content
  • Removed content

Recent Versions

Choose two versions to compare, or click the link to view it.

  1. 2. over 3 years by fellong
  2. 1. over 3 years by fellong
 

/// ===============================================
/// 紅外線模組
/// -----------------------------------------------
/// 功能 : 紅外線輸入解碼
/// -----------------------------------------------
/// Input Pins :
/// IR_INPUT equ pa.5;
/// Output Pins :
/// NONE
/// ===============================================

/// ======== START Public 函式 ========
void Initial_IR( void ); /// 初始化 IO
void IR_Control( void ); /// IR 控制
/// ======== END Public 函式 ========

/// ======== START IR Callback 函式 ========
extern void IR_KeyPress( void ); /// Callback 函式,當有 IR 按鍵時會被叫用,a=按鍵
/// KEY 值只單純將接收的 2 個 BYTE 作 XOR 運算,請視需要修改 IR.C 檔
extern void IR_KeyRelease( void ); /// Callback 函式,當放開 IR 按鍵時會被叫用
/// ======== END IR Callback 函式 ========

 


 

已經封裝好了的 IR 接收模組,使用者只要呼叫 CONTROL 就會在有紅外線輸入時 CALLBACK KEYPRESS/RELEASE 函式。

而由於每種紅外線的規格不同,但其實原理類似,只不過是SAMPLE時機跟DUTY不同的變化,使用者可自行修改。

原始碼中的解碼程式,有部份是用組合語言寫成,主要也是為了精準控制時序所必要的手段,這也是高低階語言非常不同的差異性,若只用高階語言寫成(譬如C),邏輯上是正確了,但實際在跑的時序會是多少卻是相依在編譯器底下,你除非邊看反組譯碼邊寫程式,不然很難計算出正確的時序。