新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于C語言的SAA3010紅外遙控接收的源代碼

        基于C語言的SAA3010紅外遙控接收的源代碼

        作者: 時間:2012-08-03 來源:網絡 收藏

        的C程序

        本文引用地址:http://www.104case.com/article/171080.htm

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

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

        #i nclude reg52.h>
        #define uchar unsigned char

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

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


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

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

        /*
        // SAA3010函數原型: 公用函數
        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); //發送子程序
        extern void led_cls(void); //清除顯示
        extern void led_show(unsigned int n); //顯示數字子程序
        extern void led_showhh(unsigned int n); //16進制顯示數字子程序
        extern void led_test(void); //4LED測試函數
        extern void led_delay(unsigned char ms); //延遲函數
        */

        // SAA3010函數內容
        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 中斷優先
        TCON |= 0x41; //TCON EX0下降沿觸發,啟動T1 //
        ykbnum=0;
        ykcodetemp=0;
        ykdelay=0;

        }

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

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

        紅外遙控器相關文章:紅外遙控器原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 手机| 漾濞| 浦县| 东兰县| 武冈市| 龙游县| 罗甸县| 江津市| 香港| 铜梁县| 新营市| 宜都市| 文山县| 翼城县| 定兴县| 平阳县| 浦城县| 勃利县| 射阳县| 南投市| 泸定县| 承德市| 都兰县| 贵港市| 射阳县| 平泉县| 津市市| 永修县| 庄浪县| 浦东新区| 泾阳县| 丰城市| 通海县| 吉林省| 阜康市| 澜沧| 鸡西市| 神农架林区| 西乌珠穆沁旗| 台山市| 潮安县|