新聞中心

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

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

        作者: 時間:2011-05-05 來源:網(wǎng)絡(luò) 收藏

        的C

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

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

        // 其實(shí),所有芯片的編碼都是比較簡單的(有限的狀態(tài)),只要仔細(xì)分析它的編碼//
        // 我們完全可以用狀態(tài)機(jī)的方式來處理各種可能的情況,甚至從被干擾的雜亂波形中找出正確的編碼//
        // 下面是基于狀態(tài)機(jī)的遙控接收程序示例: //
        //--------------------------------------------------------------------------//
        // //
        // (c) Copyright 2001-2003 xuwenjun //
        // All Rights Reserved //
        // V1.00 //
        //--------------------------------------------------------------------------//
        //標(biāo) 題: 遙控芯片接收程序 //
        //文件名: 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遙控芯片接收程序 //
        // 當(dāng)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 //
        //--------------------------------------------------------------------------//
        //聲 明: //
        // 以下代碼僅免費(fèi)提供給學(xué)習(xí)用途,但引用或修改后必須在文件中聲明出處. //
        // 如用于商業(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ù)有效標(biāo)志

        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進(jìn)制顯示數(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);
        }


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 织金县| 临潭县| 辉县市| 耿马| 雷山县| 昂仁县| 阜宁县| 陆良县| 巨鹿县| 赣州市| 长沙市| 佛坪县| 天台县| 民县| 卫辉市| 弋阳县| 商城县| 汝阳县| 聊城市| 浦江县| 辉县市| 龙岩市| 临沂市| 阿拉善右旗| 莱阳市| 万荣县| 陇西县| 青神县| 永嘉县| 朝阳区| 蒲江县| 永和县| 平乐县| 津南区| 新泰市| 康定县| 巴楚县| 宝清县| 安远县| 宣恩县| 岑巩县|