新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > msp430紅外解碼成功

        msp430紅外解碼成功

        作者: 時間:2016-11-13 來源:網絡 收藏
        #include <msp430x22x4.h>

        #define CPU_F ((double)1000000)
        #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
        #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
        #define IR_DIR_IN P2DIR&=~BIT0 //紅外接收頭P2.0設置為輸入,

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

        #define IRIN (P2IN&BIT0) //紅外接收頭輸入值
        char data[4]; //保存地址碼,地址反碼,數據碼,數據反碼
        char m;

        /*****************************************************************************
        系統初始化
        ******************************************************************************/
        void InitSys()
        {
        WDTCTL = WDTPW + WDTHOLD; //關閉看門狗
        DCOCTL=CALDCO_1MHZ;
        BCSCTL1=CALBC1_1MHZ;
        P2IE|=BIT0; //P2.0中斷功能打開
        P2IES|=BIT0; //P2.0下降沿觸發中斷
        IR_DIR_IN; //P2.0設置為輸入
        _EINT(); //打開全局中斷控制
        }

        int main( void )
        {
        InitSys(); //初始化
        while(1);
        }
        /*****************************************************************************
        端口1中斷函數
        ******************************************************************************/
        #pragma vector=PORT2_VECTOR
        __interrupt void Port2()
        {
        char i,j,k=0,m=1;
        if((P2IFG&BIT0) == BIT0)
        {
        P2IFG &= ~BIT0; //清除P2.0中斷標志
        P2IE &=~BIT0; //關閉P2.0中斷功能
        for (i=0;i<8;i++) //等待9ms引導碼,在9ms內出現高電平則退出解碼
        {
        delay_ms(1);
        if (IRIN==1) m=0;
        }
        while(!IRIN); //等 IR 變為高電平
        delay_ms(4); //等待4.5ms結果碼
        if(m==1)
        {
        while (IRIN); //等 IR 變為低電平
        for(k=0;k<4;k++)
        {
        for (j=0;j<8;j++)
        {
        delay_us(500); //等待560us低電平
        while (!IRIN); //等 IR 變為高電平
        char n=0;
        while (IRIN) //計算IR高電平時長
        {
        delay_us(140);
        n++;
        }
        data[k]=data[k]>>1;
        if (n<7) {data[k]&=0x7f;}
        else
        if(n>=7&&n<13)
        {data[k]|=0x80;}
        else
        if (n>=13)
        {
        P2IE|=BIT0;
        }
        }
        }
        }
        }
        P2IE|=BIT0;
        }



        關鍵詞: msp430紅外解

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 仲巴县| 阜宁县| 康平县| 华宁县| 建始县| 汉阴县| 大冶市| 开远市| 湾仔区| 崇义县| 云安县| 秦安县| 尚志市| 全椒县| 邹城市| 确山县| 广州市| 紫金县| 平舆县| 徐州市| 全南县| 家居| 隆子县| 大方县| 神农架林区| 南华县| 白山市| 岚皋县| 休宁县| 师宗县| 泊头市| 嘉祥县| 金山区| 宁阳县| 定安县| 天峻县| 阿拉善右旗| 佛冈县| 马山县| 仁怀市| 张掖市|