新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 315M單片機無線解碼--HS2262

        315M單片機無線解碼--HS2262

        作者: 時間:2016-11-18 來源:網絡 收藏
        發上程序前記一個C語言小知識,免得下次犯同樣錯誤!
        unsigned char i=0x01;
        i=i<<1+1;
        其結果i的值為4,而不是3。
        C語言除法運算中,余數的符合要求和被除數的符號一致,比如:2/(-2); 結果為FF(-1), 2%(-2)=0
        /********************************************************/
        #include
        unsigned char counter=0;
        unsigned char Receive[3];
        sbit RemPin=P0^0;
        static bit flag=0;
        sbit LED=P2^0;
        sbit LED1=P2^5;
        void delay( )
        {
        unsigned char i;
        for(i=0;i<50;i++);
        }
        void delay_nms(unsigned int n)
        {
        unsigned int i=0,j=0;
        for (i=n;i>0;i--)
        for (j=0;j<1140;j++);
        }
        void scan()
        {
        unsigned char i=0;
        unsigned char j=0;
        unsigned char Time=10;
        unsigned int count=0;
        Receive[0]=Receive[1]=Receive[2]=0;
        while(--Time)
        {
        count=0;
        while(RemPin)
        {
        count++;
        delay();
        if(count>30)
        {
        break;
        }
        }
        if((count>25)||(count<10))
        {
        continue;
        }
        count=0;
        while(!RemPin)
        {
        count++;
        delay( );
        if(count>660)
        {
        break;
        }
        }
        if((count>655)||(count<600))
        {
        continue;
        }
        count=0;
        for(j=0;j<3;j++)
        {
        for(i=0;i<8;i++)
        {
        while(RemPin);
        count=0;
        while(!RemPin)
        {
        count++;
        delay( );
        if(count>=85)
        {
        return;
        }
        }
        if((count>15)&&(count<42))
        {
        //counter=count;
        Receive[j]=Receive[j]<<1;
        Receive[j]=Receive[j]+0x01;
        }
        else if((count>45)&&(count<75))
        {
        Receive[j]=Receive[j]<<1;
        //counter=count;
        }
        else
        {
        //LED1=~LED1;
        Receive[0]=Receive[1]=Receive[2]=0;
        counter=count;
        return;
        }
        while(RemPin);
        }
        }
        flag=1;
        //LED=~LED;
        }
        }
        void main()
        {
        while(1)
        {
        scan();
        //P1=counter;
        if(flag)
        {
        flag=0;
        P1=Receive[2];
        P1=~P1;
        delay_nms(100);
        }
        }
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 靖西县| 昌图县| 鞍山市| 万源市| 余姚市| 齐河县| 台南市| 章丘市| 德钦县| 安西县| 徐水县| 兴安盟| 淮北市| 南城县| 图们市| 平邑县| 遂昌县| 安义县| 五台县| 神池县| 聂拉木县| 临洮县| 武陟县| 高淳县| 旬邑县| 清丰县| 怀来县| 老河口市| 平顺县| 阆中市| 抚宁县| 当阳市| 武川县| 新田县| 盐津县| 阳城县| 开封市| 东方市| 德格县| 毕节市| 革吉县|