多媒體投影機遙控器的單片機仿真
1.2 讀遙控器按鍵碼軟件設(shè)計
圖4是讀遙控器按鍵碼控制軟件的主程序流程。圖5是中斷讀入鍵碼數(shù)據(jù)的程序流程圖。
中斷讀鍵碼程序在編程設(shè)計中非常重要。它要完成遙控碼起始位的識別及脈寬計數(shù)、遙控碼編碼位的寬度計數(shù)、結(jié)束位的認別等功能。通過大量的不同種類的遙控碼波形實驗分析,遙控碼的幀間歇位寬度均在10 ms以上,起始位碼寬度在100μs―20ms之間,編碼位在100μs―5ms之間,為確保對所有遙控器讀碼的成功,采用以下設(shè)計方法:
(1)尋提起始位方法:用16位DPTR計數(shù)器對高電平進行寬度計數(shù),計數(shù)采樣周期為21μs,當高電平結(jié)束時,如高8位計數(shù)器為非零,則說明高電平寬度超過5.35ms(255×21μs),緊接來的低電平碼就是起始位,否則重新開始。
(2)讀起始位方法:采用16位DPTR對低電平進行寬度計數(shù)(最大可讀寬度為1.376s),當高電平跳變時結(jié)束計數(shù),并將DPTR的高8位、低8分別存入R4,R5寄存器。
(3)讀遙控編碼的方法:采用DPTR低8位計數(shù)器對碼(高電平或低電平)進行寬度計數(shù),電平跳變時結(jié)束計數(shù),并將值存入規(guī)定的地址,在高電平碼計數(shù)時,如 DPTR高8位計數(shù)器為非零(寬度大于5.35ms),則判定為結(jié)束幀間隔位,在相應(yīng)存儲單元寫入OOH作為結(jié)束標志。
評論