日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
紅外線(xiàn)遙控解碼程序
紅外線(xiàn)遙控解碼程序
 更新時(shí)間:2009-7-9 16:49:36  點(diǎn)擊數(shù):0
【字體: 字體顏色
#include "main.h"#include "port.h"#include "debug.h"/*----------------------------------------------改進(jìn)自xwj的程序。2007年10月2日版本1.0.1   www.mcukf.com紅外線(xiàn)接引腳于P3.2用我家的VCD遙控器調(diào)試成功。VCD遙控器 (上面無(wú)牌號(hào))  //==================================================  紅外線(xiàn)遙控器按鍵檢測(cè)程序.通過(guò)檢測(cè)兩次下降沿之間的時(shí)間差判斷接受到的數(shù)據(jù)位.已經(jīng)通過(guò)了測(cè)試,能夠正確區(qū)分出32bit數(shù)據(jù)的遙控器按鍵鍵值.具有數(shù)據(jù)重發(fā)功能,但是數(shù)據(jù)的重發(fā)有點(diǎn)頻繁.使用晶震頻率為11.0592MHz,所有定時(shí)值都是基于這個(gè)頻率計(jì)算.占用很少量的CPU時(shí)間,使用了外部中斷0接受數(shù)據(jù),定時(shí)器0進(jìn)行計(jì)數(shù),定時(shí)器1作為串口的波特率發(fā)生器(Band = 9600).主函數(shù)會(huì)使MCU進(jìn)入低功耗模式,如需加入自己的代碼需要屏蔽此功能.狀態(tài)機(jī):    1.如果時(shí)間差=0,由空閑態(tài)進(jìn)入接受態(tài)    2.如果時(shí)間差>1ms and <1.3ms,收到數(shù)據(jù)0    3.如果時(shí)間差>2ms and <2.5ms,收到數(shù)據(jù)1    4.如果時(shí)間差>13.2ms and <13.8ms,收到開(kāi)始位    5.如果時(shí)間差>12.2ms and <12.8ms,收到停止位(沒(méi)有檢測(cè))    6.如果時(shí)間定時(shí)器溢出(時(shí)間差>20ms),進(jìn)入空閑狀態(tài)-------------------------------------------------*/ //11.0592晶振#define TIME_0_00MS        0x0000#define TIME_1_00MS        0x039a#define TIME_1_13MS        0x0480#define TIME_2_00MS        0x0733#define TIME_2_50MS        0x0900#define TIME_13_2MS        0x2ecd#define TIme_11_ms          (TIME_13_2MS-TIME_2_50MS )#define TIME_20_0MS        0x47ff#define TIME1_LOAD        (0xffff - TIME_20_0MS)unsigned char Irdat;bit Irok,running;uchar IrCode[4];uchar  irCodeIndex=0;void IrInit(void)                                                //遙控接收初始化{    //-----init TIME0----    TMOD &=0xf0;    TMOD |= 0x01;                                          //TMOD T0,T1均選用方式1(16位定時(shí))    TH0    = TIME1_LOAD >> 8;    TL0    = TIME1_LOAD & 0xff;    IP|=0x01;                                           //SETB  INT0 中斷優(yōu)先    //TCON |= 0x41;      IT0=1;                                  //TCON  EX0下降沿觸發(fā),啟動(dòng)T1 //    TR0   = 1;    EX0=1;    EA=1;    ET0=1;                                          //SETB        EX0 0x1  外部中斷 0 允許                                                                        //SETB        ET0 0x8  定時(shí)器 1 中斷允許                                                                          //SETB        EA  0x80 開(kāi)中斷}unsigned char IrGetcode(void)//返回遙控碼{        Irok=0;        return(Irdat);}bit IrTest(void)//檢查有無(wú)遙控信號(hào){      return Irok;}void int0_isr(void) interrupt 0 using 1       //遙控使用外部中斷0,接P3.2口{    unsigned int timer;     TR0 = 0;    timer = ((TH0 << 8) | TL0) - TIME1_LOAD;    TH0 = TIME1_LOAD >> 8;    TL0 = TIME1_LOAD & 0xff;    TR0 = 1;    DebugPin=0;        if(timer > TIME_1_00MS && timer < TIME_1_13MS)//data 0    {        IrCode[irCodeIndex/8]<<=1;        irCodeIndex++ ;        if(irCodeIndex>=15)running=1;    }    else if(timer > TIME_2_00MS && timer < TIME_2_50MS)//data 1    {        IrCode[irCodeIndex/8]<<=1;        IrCode[irCodeIndex/8]+=1;        irCodeIndex++;        if(irCodeIndex>=15)running=1;    }    else if(timer == TIME_0_00MS || timer > TIME_13_2MS)    {        IrCode[0]=0;        IrCode[1]=0;        IrCode[2]=0;        IrCode[3]=0;        irCodeIndex=0;    }    else if(timer < TIME_13_2MS && timer > TIme_11_ms && running==0)//自動(dòng)重發(fā)功能。    {       Irok=1;     }    }void time0_isr(void) interrupt 1 using 1       //遙控使用定時(shí)計(jì)數(shù)器1{    TR0 = 0;    DebugPin=1;    TH0 = TIME1_LOAD >> 8;    TL0 = TIME1_LOAD & 0xff;    if    (IrCode[2] == (~IrCode[3]))    {        Irdat = IrCode[2];        Irok = 1;        running=0;    }    else    {        Irok = 0;    }}void main(void){    IrInit();     initUartT1();       EA=1;   //Inituart(1200);    while(1)    {        if (IrTest())        {            outPutAscii(IrGetcode()); // 在串行口 輸出遙控碼            // IrGetcode();                       DebugPin=0;       //接的一個(gè)LED,遙于調(diào)試和接收指示        }        else        {            DebugPin=1;        }         PCON |=0x01;    }}
  • 上一篇: MCS51系列單片機(jī)雙機(jī)并行互連的實(shí)現(xiàn)方法
  • 下一篇: C51訪問(wèn)絕對(duì)地址的方法
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話(huà):0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1