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