• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > SAA3010紅外遙控接收的C程序源代碼

    SAA3010紅外遙控接收的C程序源代碼

    作者: 時間:2011-05-05 來源:網絡 收藏

    的C

    本文引用地址:http://www.czjhyjcfj.com/article/172823.htm

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

    // 其實,所有芯片的編碼都是比較簡單的(有限的狀態(tài)),只要仔細分析它的編碼//
    // 我們完全可以用狀態(tài)機的方式來處理各種可能的情況,甚至從被干擾的雜亂波形中找出正確的編碼//
    // 下面是基于狀態(tài)機的遙控接收程序示例: //
    //--------------------------------------------------------------------------//
    // //
    // (c) Copyright 2001-2003 xuwenjun //
    // All Rights Reserved //
    // V1.00 //
    //--------------------------------------------------------------------------//
    //標 題: 遙控芯片接收程序 //
    //文件名: ir_3010.c //
    //版 本: V1.00 //
    //修改人: xuwenjun E-mail:xuwenjun@21cn.com //
    //日 期: 03-06-14 //
    //描 述: 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 //
    // 有問題請mailto xuwenjun@21cn.com 歡迎與我交流! //
    //--------------------------------------------------------------------------//

    #i nclude reg52.h>
    #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ù)內容
    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);
    }


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區(qū)

    關閉
    主站蜘蛛池模板: 贞丰县| 桃园市| 衡阳县| 泉州市| 延边| 蒙阴县| 当涂县| 淳安县| 巴林右旗| 吉安市| 天气| 温宿县| 措美县| 古丈县| 改则县| 凤庆县| 太原市| 临颍县| 禄劝| 普兰店市| 罗平县| 响水县| 宁国市| 高台县| 阿尔山市| 桑植县| 彰化县| 五指山市| 绿春县| 鄂温| 葫芦岛市| 金门县| 河池市| 盘山县| 福建省| 城固县| 武城县| 石棉县| 洛隆县| 水城县| 外汇|