女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 單片機 > 單片機
[導讀]// 用單片機進行紅外遙控接收已經(jīng)是很平常的應(yīng)用了,基本上稍懂單片機就可以自己編// // 但往往很多人編的程序要么繁瑣,要么占用大量存儲器、CPU資源, // // 而且用于現(xiàn)場時還可能因為受到干擾而不能正常工作 //

// 用單片機進行紅外遙控接收已經(jīng)是很平常的應(yīng)用了,基本上稍懂單片機就可以自己編//
// 但往往很多人編的程序要么繁瑣,要么占用大量存儲器、CPU資源, //
// 而且用于現(xiàn)場時還可能因為受到干擾而不能正常工作 //
// 真正試過的都會發(fā)現(xiàn),要想編個真正好用的接收程序不是那么簡單的 //

// 其實,所有遙控芯片的編碼都是比較簡單的(有限的狀態(tài)),只要仔細分析它的編碼//
// 我們完全可以用狀態(tài)機的方式來處理各種可能的情況,甚至從被干擾的雜亂波形中找出正確的編碼//
// 下面是基于狀態(tài)機的SAA3010紅外遙控接收程序示例: //
//--------------------------------------------------------------------------//
// //
// (c) Copyright 2001-2003 xuwenjun //
// All Rights Reserved //
// V1.00 //
//--------------------------------------------------------------------------//
//標 題: SAA3010遙控芯片接收程序 //
//文件名: ir_3010.c //
//版 本: V1.00 // //
//描 述: SAA3010遙控芯片接收程序 //
//--------------------------------------------------------------------------//
//老版本: 無 老版本文件名: //
//創(chuàng)建人: xuwenjun E-mail:xuwenjun@21cn.com //
//日 期: 03-06-14 //
//描 述: SAA3010遙控芯片接收程序 //
// 當ykok=1時,ykcode中的數(shù)據(jù)就是接收到的遙控碼(14位的最后8位) //
//--------------------------------------------------------------------------//
//占用以下資源: //
// 1. 遙控使用外部中斷0,接P3.2口 //
// 2. 遙控使用定時計數(shù)器1 //
// 3. 5.1字節(jié)data RAM //
// 4. 293字節(jié) code ROM //
//--------------------------------------------------------------------------//
//聲 明: //
// 以下代碼僅免費提供給學習用途,但引用或修改后必須在文件中聲明出處. //
// 如用于商業(yè)用途請與作者聯(lián)系. E-mail:xuwenjun@21cn.com //
// 有問題請mailtoxuwenjun@21cn.com 歡迎與我交流! //
//--------------------------------------------------------------------------//

#i nclude
#define uchar unsigned char

// SAA3010存儲定義
uchar ykcode; //遙控碼(14位的最后8位)
bit ykok; //遙控數(shù)據(jù)有效標志

uchar ykbnum; //遙控已接收位數(shù)
uchar ykbtc; //遙控中斷時 ykbtc=TH1
uchar ykdelay; //遙控延時接收
bdata uchar ykcodetemp; //遙控臨時碼
sbit ykcodetemp0=ykcodetemp^0;


// SAA3010端口定義
//sbit YKIO=P3^3; //遙控使用外部中斷0,接P3.2口

// SAA3010函數(shù)原型: 公用函數(shù)
void YkInit(void); //遙控接收初始化
unsigned char YkGetcode(void); //返回遙控碼
bit YkTest(void); //檢查有無遙控信號

/*
// SAA3010函數(shù)原型: 公用函數(shù)
extern void YkInit(void); //遙控接收初始化
extern unsigned char YkGetcode(void); //返回遙控碼
extern bit YkTest(void); //檢查有無遙控信號
*/

/*
// 外部引用四位LED顯示模塊 //
extern unsigned char code tab_duam[]; //位映射
extern void led_send(unsigned char d); //發(fā)送子程序
extern void led_cls(void); //清除顯示
extern void led_show(unsigned int n); //顯示數(shù)字子程序
extern void led_showhh(unsigned int n); //16進制顯示數(shù)字子程序
extern void led_test(void); //4LED測試函數(shù)
extern void led_delay(unsigned char ms); //延遲函數(shù)
*/

// SAA3010函數(shù)內(nèi)容
void YkInit(void) //遙控接收初始化
{
TMOD=0x11; //TMOD T0,T1均選用方式1(16位定時)
SCON=0x00;
TH1=0;
TL1=0;
IE|=0x89; //SETB EX0 0x1 外部中斷 0 允許
//SETB ET0 0x8 定時器 1 中斷允許
//SETB EA 0x80 開中斷
IP|=0x01; //SETB INT0 中斷優(yōu)先
TCON |= 0x41; //TCON EX0下降沿觸發(fā),啟動T1 //
ykbnum=0;
ykcodetemp=0;
ykdelay=0;

}

unsigned char YkGetcode(void) //返回遙控碼
{
return(ykcode);
}

bit YkTest(void) //檢查有無遙控信號
{
return(ykok);
}

void intx0() interrupt 0 using 2 //遙控使用外部中斷0,接P3.2口
{
ykbtc=TH1;TH1=0;TL1=0;TR1=1;ET1=1;
switch(ykbnum)
{
case(0):
ykbnum=1;
break;
case(1):
if(ykbtc==6)ykbnum=2;
else ykbnum=0;
break;
case(2):
if(ykbtc==6||ykbtc==9)ykbnum=3;
else ykbnum=0;
break;
case(3):
if(ykbtc==9||ykbtc==6){ykbnum=4;}
else ykbnum=0;
break;
default:
if(ykbnum<7)if(ykbtc==6)ykbnum++;
else ykbnum=0;
else
{
if(ykbtc==6){if(ykcodetemp0)ykcodetemp=ykcodetemp*2+1;
else ykcodetemp=ykcodetemp*2;
ykbnum++;
}
else if(ykbtc==9){ if(ykcodetemp0){ykbnum++;ykcodetemp=ykcodetemp*2;}
else {ykbnum+=2;ykcodetemp=ykcodetemp*2;ykcodetemp=ykcodetemp*2+1;}
}
else if(ykbtc>11&&ykbtc<15)
{ykbnum+=2;ykcodetemp=ykcodetemp*2;ykcodetemp=ykcodetemp*2+1;}
else if(ykbtc>30){EX0=1;}
else ykbnum=0;
}
}
}

void intt1() interrupt 3 using 3 //遙控使用定時計數(shù)器1
{
if(ykdelay){ykdelay--;EX0=0;} //ykdelay不為0暫停接收
else
{
if(ykbnum==13) //遙控碼最后一位為0,補0
{
ykcode=ykcodetemp*=2;
ykdelay=3;
EX0=0; //暫停接收
ykok=1; //遙控數(shù)據(jù)有效
}
else if(ykbnum==14) //遙控碼最后一位為1,不用補
{
ykcode=ykcodetemp;
ykdelay=3;
EX0=0; //暫停接收
ykok=1; //遙控數(shù)據(jù)有效
}
else EX0=1; //ykbnum不為13,14接收無效,繼續(xù)接收
ykbnum=0;
ykcodetemp=0;
}
}

/*
// SAA3010測試主函數(shù)內(nèi)容
main()
{
YkInit();
led_test(); //4LED測試函數(shù)
for(;1;) //主程序
{
if (YkTest())
led_showhh(YkGetcode());
led_delay(10);
}
}
*/

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在嵌入式系統(tǒng)與底層軟件開發(fā)中,C語言的枚舉類型(enum)因其強大的語義表達能力,成為狀態(tài)機設(shè)計和位域操作的核心工具。本文將從底層原理出發(fā),解析枚舉類型在狀態(tài)機實現(xiàn)中的優(yōu)化策略,并探討其與位域(bit-field)的協(xié)同...

關(guān)鍵字: C語言 嵌入式系統(tǒng) 狀態(tài)機

為增進大家對無線遙控開關(guān)的認識,本文將對無線遙控開關(guān)的原理、種類、配對方法等內(nèi)容予以介紹。

關(guān)鍵字: 遙控 指數(shù) 紅外遙控

為增進大家對紅外遙控的認識,本文將對紅外遙控的特點以及紅外遙控和藍牙遙控之間的區(qū)別予以介紹。

關(guān)鍵字: 遙控 指數(shù) 紅外遙控

為增進大家對紅外遙控的認識,本文將對紅外遙控編碼技術(shù)、紅外遙控解碼技術(shù)予以介紹。

關(guān)鍵字: 遙控 指數(shù) 紅外遙控

在SIP終端在同一個函數(shù)中同時作為主叫方和被叫方的情況。即在RequestINVITE函數(shù)中,這個SIP終端需要能夠構(gòu)造INVITE請求(作為主叫方),同時還需要處理作為被叫方時的各種響應(yīng),比如發(fā)送100 Trying、...

關(guān)鍵字: INVITE 狀態(tài)機

在紅外遙控技術(shù)領(lǐng)域,紅外自學習芯片和紅外編解碼芯片扮演著重要角色,它們各自具備獨特的功能與特性,廣泛應(yīng)用于不同場景。理解這兩種芯片的區(qū)別,對于優(yōu)化紅外遙控系統(tǒng)設(shè)計、拓展應(yīng)用范圍具有關(guān)鍵意義。

關(guān)鍵字: 紅外遙控 自學習芯片 編解碼芯片

在嵌入式系統(tǒng)開發(fā)中,有限狀態(tài)機(FSM)是一種強大的工具,它能夠幫助開發(fā)者以清晰、結(jié)構(gòu)化的方式管理復(fù)雜的狀態(tài)轉(zhuǎn)換邏輯。FSM通過將系統(tǒng)行為劃分為一系列狀態(tài)和狀態(tài)之間的轉(zhuǎn)換,簡化了系統(tǒng)的設(shè)計和調(diào)試過程。在第一部分中,我們已...

關(guān)鍵字: 嵌入式系統(tǒng) 狀態(tài)機 FSM C++

自動飲料售賣機作為一種自助式零售設(shè)備,近年來在國內(nèi)外得到了廣泛應(yīng)用。本文將詳細介紹一款功能完善、操作簡便的自動飲料售賣機的設(shè)計與實現(xiàn)過程,包括有限狀態(tài)機(FSM)的設(shè)計、Verilog編程、以及設(shè)計工程中可使用的工具及大...

關(guān)鍵字: Verilog 狀態(tài)機 FSM

在現(xiàn)代電子系統(tǒng)中,同步信號處理和模式識別是至關(guān)重要的。特別是在通信、數(shù)據(jù)處理和控制系統(tǒng)等領(lǐng)域,對輸入信號進行實時分析以檢測特定模式或字符串是常見的需求。本文將介紹如何使用Verilog語言設(shè)計一個有限狀態(tài)機(FSM),以...

關(guān)鍵字: Verilog 狀態(tài)機

在數(shù)字電路與系統(tǒng)設(shè)計領(lǐng)域,有限狀態(tài)機(Finite State Machine,F(xiàn)SM)是一種重要的設(shè)計工具。FSM能夠基于輸入信號和當前狀態(tài),通過狀態(tài)轉(zhuǎn)移和輸出邏輯,實現(xiàn)復(fù)雜的時序控制功能。Moore狀態(tài)機和Mealy...

關(guān)鍵字: Moore Mealy 狀態(tài)機
關(guān)閉