|
以前沒有弄過紅外發射,這兩天惡補了一下,寫了一個程序調試中出現了問題,先把程序貼出來:
/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//==== 紅外遙控器發射程序 ====//
At89s52, 晶振12,
38KHz, 1/38=26.3μS
方波高低各50%,也就是:中斷2次: 26.3/2=13.15μS =13μS
幾個時序需要的中斷次數的計算:
9ms/13μS = 692(次實現)
4.5ms/13 = 346
0.56ms/13 = 43
1.69ms/13 = 130
定時器初值計算:
初值 = 65536 - (f(晶振) * (y)需定時數)/ 12(分頻)
本例:f=12 y=13μS
計算:初值 = 65536-13 = 65523 = fff3
紅外傳輸發射協議:
引導碼+16位用戶數據碼+8位設備碼+8位識別反碼
引導碼: 9ms高電平 + 4.5ms低電平
用戶碼和設備碼中:
“1”: 0.56ms高電平 + 1.69ms低電平
“0”: 0.56ms低電平 + 0.56ms低電平
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */
問題是:
紅外發射專用計時器(定時器1)出現如下情況,看圖:
=================================
截圖05.JPG (31.85 KB, 下載次數: 50)
下載附件
2020-7-24 21:44 上傳
==================================
截圖06.JPG (27.72 KB, 下載次數: 39)
下載附件
2020-7-24 21:45 上傳
===============================
上圖的定時器值是FF,FA;再一個單步就是下圖的00 04 了,再一單步就重裝初值。
這個定時器初值是TH1=0XFF, TL1=0XF3, 定時13μs,重裝初值時TH1是不應該變的,
由于這一變,定時值變為了22μs,多出了9μs,
實際定時值是通過上圖所示的sec算出的,定時器1工作方式1,換成工作方式0也不行,
弄一天 了,找不出原因了,望高手們出手相幫,先謝謝了!
|
|