讀取遙控器每個按鍵編碼的程序,tc9012 50462通過測試(89c52+keil c)_第1頁
讀取遙控器每個按鍵編碼的程序,tc9012 50462通過測試(89c52+keil c)_第2頁
讀取遙控器每個按鍵編碼的程序,tc9012 50462通過測試(89c52+keil c)_第3頁
讀取遙控器每個按鍵編碼的程序,tc9012 50462通過測試(89c52+keil c)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、讀取遙控器每個按鍵編碼的程序,tc9012 50462通過測試(89c52+keil c)-原子團He2011-02-01 09:36讀取遙控器編碼的程序,按下按鍵后,通過單片機與電腦的連接,串口調(diào)試助手中可以顯示出按鍵編碼的后8位/原子團He#includereg52.h#define uchar unsigned char#define uint unsigned int /tc9012uchar flag=0;/是否接到起始位標(biāo)志 未接到為0 接到為1uchar traflag=0;/翻譯是否完成標(biāo)記 完成為1uchar rec33;/接收遙控器發(fā)送的所有數(shù)據(jù) 用來記錄兩個下降沿之間的時

2、間uchar recok=0;/是否接收完一幀數(shù)據(jù)標(biāo)記 接收完為1uchar sendok=0;/是否發(fā)送完畢標(biāo)記 發(fā)送完成為1uchar num=0;/變相記錄時間 uchar n=0;/rec中的數(shù)組定位void timerinit();/定時器0初始化 void ruptinit();/外部中斷0初始化 void tradata();/一幀數(shù)據(jù)的翻譯 即把時間記錄轉(zhuǎn)換成0/1void send();/把收到的數(shù)據(jù)發(fā)給上位機 void delay();/定時器 中斷初始化/void timerinit()/定時器0 TMOD=0x02;/定時器0使用方式2 TH0=0x00; TL0=0x

3、00; EA=1; ET0=1;/定時器中斷開 TR0=1;/計時開 void ruptinit()/外部中斷0 EA=1; EX0=1;/外部中斷開 IT0=1;/下降沿觸發(fā) 0是電平觸發(fā) /定時器 中斷函數(shù)/void timer() interrupt 1 /系統(tǒng)從0x00記到0xff 每記一次時間大概為1us 記256次 即256us中斷一次 num+;/num記錄的是256us的個數(shù) 總時間=num*256usvoid rupt() interrupt 0 /外部中斷0 當(dāng)遇到下降沿時觸發(fā) if(flag=1)/flag為1 說明收到了起始位 接下來要開始進行記錄了 if(num32)

4、/時間為32*256us=8.2ms是整個起始位的時間 n=0; recn=num;/記錄兩個下降沿之間的num值 這樣也就相當(dāng)于記錄了其間的時間 num=0; n+; if(n=33)/因為前面是n+ 所以當(dāng)n=33時 數(shù)組已經(jīng)從0記到了32 已經(jīng)記滿了 recok=1;/標(biāo)記 接收一幀數(shù)據(jù)完成 n=0; else/首次得到下降沿到達這里 使flag變1 用來說明收到了起始位 flag=1; /時間翻譯函數(shù)/void tradata()/一幀數(shù)據(jù)的翻譯 即把時間記錄轉(zhuǎn)換成0/1 uchar i; for(i=1;i6)/使用6做中間值 小于則為0 大于為1 用0/1替換rec中的數(shù)據(jù) 這樣就

5、進行了翻譯 reci=1; /因為要以字符串發(fā)送 所以這里用字符形式 else reci=0; traflag=1;/翻譯完成標(biāo)記 /發(fā)送數(shù)據(jù)函數(shù)/void send()/把收到的數(shù)據(jù)發(fā)送給上位機 具體細節(jié)不懂看串口通信 mcu to pc uchar i; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; SM0=0; SM1=1; REN=1; for(i=25;i0;c-) for(b=142;b0;b-) for(a=2;a0;a-);void main() timerinit();/定時器0初始化 ruptinit();/外部中斷0初始化 while(1) if(recok=1)/接收一幀數(shù)據(jù)完成 P1=0xfe;/燈亮一下 為了指示是否收到了數(shù)據(jù) tradata();/翻譯數(shù)據(jù) delay(); if(traflag=1)/翻譯完成 send();/發(fā)送 delay(); if(sendok=1)/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論