新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 紅外解碼程序換種寫法

        紅外解碼程序換種寫法

        作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
        #include

        #define uint unsigned int
        #define uchar unsigned char
        sbit IR=P3^2; //紅外接口標(biāo)志
        sbit RS = P1^0;
        sbit RW = P1^1;
        sbit E = P1^2;
        sbit beep = P1^7;
        uint hour,minute,second,count;
        char code Tab[16]={0,1,2,3,4,5,
        6,7,8,9,A,B,C,D,E,F};
        //char code Tab[16]="0123456789abcdef";//兩種定義方法都可以
        chardataTimeNum[]=" ";//data:固定指前面0x00-0x7f的
        //128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。
        char data Test1[]=" ";
        void DelayMs(uchar z);
        /******************************************************************/
        /* 變量聲明 */
        /******************************************************************/
        uchar irtime;//紅外用全局變量
        bitirpro_ok,irok;
        uchar IRcord[4]; //處理后的紅外碼,分別是 客戶碼,客戶碼,數(shù)據(jù)碼,數(shù)據(jù)碼反碼
        uchar irdata[33]; //33個高低電平的時間數(shù)據(jù)
        /******************************************************************/
        /* 函數(shù)聲明 */
        /******************************************************************/
        void Ir_work(void);
        void Ircordpro(void);
        void ShowString (unsigned charline,char *ptr);
        /******************************************************************/
        /* 定時器0中斷服務(wù)函數(shù) */
        /******************************************************************/

        void beep1()
        {
        uchar i;
        for (i=0;i<4;i++)
        {beep=0;
        DelayMs(400);
        beep=1;
        DelayMs(400);
        }
        }
        void beep2()
        {
        uchar i;
        for (i=0;i<5;i++)
        {beep=0;
        DelayMs(300);
        beep=1;
        DelayMs(300);
        }
        }
        void beep3()
        {
        uchar i;
        for (i=0;i<2;i++)
        {beep=0;
        DelayMs(500);
        beep=1;
        DelayMs(500);
        }
        }
        void shan()
        {
        uchar i;
        for (i=0;i<3;i++)
        {P0=0x55;
        DelayMs(1000);
        P0=0xff;
        DelayMs(1000);
        }
        }
        void tim0_isr (void) interrupt 1 using 1//定時器0中斷服務(wù)函數(shù)
        {
        irtime++; //用于計數(shù)2個下降沿之間的時間
        }
        /******************************************************************/
        /* 外部中斷0函數(shù) */
        /******************************************************************/
        void ex0_isr (void) interrupt 0 using 0//外部中斷0服務(wù)函數(shù)
        {
        uchar i; //接收紅外信號處理
        bitstartflag; //是否開始處理標(biāo)志位
        if(startflag)
        {

        if(irtime<63&&irtime>=33)//引導(dǎo)碼 TC9012的頭碼,9ms+4.5ms
        i=0;

        irdata[i]=irtime;//存儲每個電平的持續(xù)時間,用于以后判斷是0還是1
        irtime=0;
        i++;
        if(i==33)
        {
        irok=1;
        i=0;
        }
        }

        else
        {
        irtime=0;
        startflag=1;
        }
        }
        /******************************************************************/
        /* 定時器0初始化 */
        /******************************************************************/
        void TIM0init(void)//定時器0初始化
        {
        TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
        TH0=0x00; //重載值
        TL0=0x00; //初始化值
        ET0=1; //開中斷
        TR0=1;
        }


        上一頁 1 2 下一頁

        關(guān)鍵詞: 紅外解碼1602顯示碼

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 永定县| 高州市| 米易县| 赞皇县| 潜江市| 子洲县| 虞城县| 北辰区| 焦作市| 泸西县| 厦门市| 商水县| 安塞县| 大荔县| 霍州市| 大石桥市| 冷水江市| 泌阳县| 大丰市| 正镶白旗| 从化市| 伊川县| 神农架林区| 兴文县| 宁乡县| 长兴县| 南京市| 马龙县| 年辖:市辖区| 武山县| 泸定县| 公主岭市| 石河子市| 双牌县| 屯门区| 永定县| 井冈山市| 娱乐| 长葛市| 翁源县| 白水县|