NEC協(xié)議的紅外遙控器驅(qū)動程序

NEC協(xié)議的紅外遙控器驅(qū)動程序

ID:38582218

大?。?24.00 KB

頁數(shù):4頁

時間:2019-06-15

NEC協(xié)議的紅外遙控器驅(qū)動程序_第1頁
NEC協(xié)議的紅外遙控器驅(qū)動程序_第2頁
NEC協(xié)議的紅外遙控器驅(qū)動程序_第3頁
NEC協(xié)議的紅外遙控器驅(qū)動程序_第4頁
資源描述:

《NEC協(xié)議的紅外遙控器驅(qū)動程序》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、是不是覺得紅外遙控+51單片機是絕妙組合?但是在編程時才發(fā)現(xiàn)超級糾結(jié)?其實也沒那么糾結(jié),自己摸索摸索,總能找出辦法來的。本程序占用了51單片機的定時器0以及中斷1兩個資源,為的是使單片機能接收到每一個紅外脈沖信號,一個都不能少。如果舍不得用這兩個資源,還有另一種查詢的辦法,就是不一定每個信號都能收到,可自己琢磨一下。需要全套NEC協(xié)議紅外遙控器資料的,到網(wǎng)上找,到處都有,而且很全。另外,對著資料寫程序如果實在寫不出,可以找個示波器,把波形錄下來好好研究研究。畢竟有些時候資料會過時,只要里面有一點東西變化了,程序就完全不一樣了。這種彎路

2、,盡量少走。本程序只是頭文件,具體到應(yīng)用上還要各位自己動腦筋了,希望對大家有所幫助。共同學(xué)習(xí),共同進步!/******************************************************************INF_NEC.h用于NEC協(xié)議的遙控器,主控器為51單片機。用戶碼8位,分布于2-17個脈沖;按鍵碼8位,分布于18-33個脈沖。皆為前8原碼,后8反碼。注意:本驅(qū)動占用51單片機的外部中斷1以及定時器0兩個資源,編程時注意不要再亂動這兩個資源。***************************

3、****************************************/#include#defineucharunsignedchar#defineuintunsignedintucharnec_flag=0;//nec_flag:遙控碼的標志位。0:無信號;1、2:信號采集;3、可用信號ucharnec_num=0;//nec_num:紅外碼的序號uintnec_time=0;//nec_time:定時器的計時次數(shù)nec_time*250usucharnec_cod[2]={0,1};//遙控器的編號,

4、編號0為原碼,編號1為反碼ucharnec_dat[2]={0,1};//遙控器的數(shù)據(jù),數(shù)據(jù)0為原碼,數(shù)據(jù)1為反碼#ifndef__INF_NEC__#define__INF_NEC__externvoidnec_init();externvoidnec_act();#endifvoidnec_init()//外中斷1及定時器0的初始化函數(shù){TMOD=(TMOD&0xf0)

5、0x02;//定時器0模式2,8位自動重裝TH0=0x19;TL0=0x19;//11.0592MHz晶振,計數(shù)230次,大概時間250usET0=1;TR0=0

6、;//定時器0使能,先關(guān)著IT1=1;EX1=1;//外部中斷1使能,用來接收紅外信號EA=1;//開總中斷}voidnec_act()//按鍵功能程序{if((nec_dat[0]==~nec_dat[1])&&(nec_flag==3)){switch(nec_dat[0]){case69:break;case70:break;case71:break;case68:break;case64:break;case67:break;case7:break;case21:break;case9:break;case22:break;c

7、ase25:break;case13:break;case12:break;case24:break;case94:break;case8:break;case28:break;case90:break;case66:break;case82:break;case74:break;}}}voidtimer0(void)interrupt1{nec_time++;if(nec_time>1000)//長時間無紅外遙控信號時關(guān)定時器{nec_time=0;nec_num=0;nec_flag=0;TR0=0;}}voidexint1(vo

8、id)interrupt2{uintintime=0;//intime:為了不打擾計時器工作,所以用intime把nec_time提出來intime=nec_time;nec_time=0;//nec_time置0,準備計數(shù)if(nec_num==0)TR0=1;//開定時器,開始計數(shù)if(nec_num==1){if((intime>50)&&(intime<60))nec_flag=1;}if(nec_num==2){if((intime>2)&&(intime<11))nec_flag=2;}if(nec_flag==2){if

9、((nec_num>=2)&&(nec_num<=9)){if((intime>2)&&(intime<6))nec_cod[0]=nec_cod[0]&~(0x01<<(nec_num-2));elseif((inti

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。