久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1263|回復: 4
收起左側

接收解碼問題

[復制鏈接]
ID:1125252 發表于 2024-11-25 20:55 | 顯示全部樓層 |閱讀模式
80黑幣
各位大佬們幫忙看下,如圖是接收引腳波形(自定義協議發射的),數碼管單獨配置輸出是可以點亮的,目前我想測試下接收到的數據,接收到就全部點亮,結果發現不能點亮,幫忙看下是不是解碼部分有問題。

void main(void)
{
    GPIO_INIT();
    DISI();
    Timer0_INIT();
    ENI();
    while(1)
    {
        CLRWDT();
        if(POWER==0)
        {
            flag1=0;
            PIN1=PIN2=PIN3=PIN4=PIN5=PIN6=PIN7=PIN8=PIN9=PIN10=0;
            if(K1_SDA==0)
            {
                WDTEN=0;                                // 關閉看門狗   
                BWUCON = 0X08;
                PCON1  = 0X80;                          // 關閉定時器0中斷                        
                INTE   = 0X02;                          // 打開io變化中斷
                INTF=0;
                while(RX==0)
                {
                    SLEEP();
                }
                K1_SDA = 1;
                POWER=1;
               
                ABPLCON = 0XFF;
                IOSTA   = 0XFD;
                PORTA   = 0X00;
   
                BPHCON  = 0XFF;
                IOSTB   = 0XFF;
                PORTB   = 0X00;
                T0MD   = 0X02;                          // 打開看門狗   
                PCON1  = 0X81;                          // 打開定時器0中斷
                INTE   = 0X01;                          // 關閉外部中斷打開定時器0中斷
                Timer1_INIT();        
                WDTEN=1;
                CLRWDT();
            }
        }
        else
        {
            CLRWDT();
            
            /*
            if(lvd==11)
            {
                if(flag1==0)
                {
                    if(PWM_C<3)
                    {
                        if(PWM_H1<1000){lvd=11;}
                        else if(PWM_H1<2000){PIN9=PIN10=1;}
                        else{PWM_H1=0;PWM_C++;}
                    }
                    else
                    {
                        flag1=1;
                    }
                }
                if(flag1==1)
                {
                    POWER=0;
                }
            }
            else
            {
                if(temp==1){PIN9=1;}
                display();
                LED_SCAN();
            }
            */
            des_sever();
            if(temp==1)
            {
                IOSTA   = 0X00;
                IOSTB   = 0X08;
                PIN1=PIN2=PIN3=PIN4=PIN5=PIN6=PIN7=PIN8=1;
                PIN9=PIN10=0;
            }
            //display(temp);
            //LED_SCAN();
        }
    }
}
void isr(void) __interrupt(0)
{
    if(INTFbits.T0IF)
    {
        
        RfDuty_32Bit();
        
        TMR0 = 163;               
        INTF= (unsigned char)~(C_INT_TMR0);    // Clear T0IF flag bit        
    }
    if(INTFbits.T1IF)                                
    {
        if(RX){DIR_InCont++;}
        INTF= (unsigned char)~(C_INT_TMR1);             // 清除T0IF標志位
    }
   
}
//------------------------------------------解碼-------------------------------------//
void RfDuty_32Bit(void)
{
    if(IR_State==0)
    {
        DIR_InCont=0;
        T1CR1=0x03;
        IR_State=1;
    }
    else if(IR_State==1)
    {
        IR_Timer=DIR_InCont;
        DIR_InCont=0;
        if((IR_Timer >= 20) && (IR_Timer <= 30))
        {
            IR_State=2;
        }
        else
        {
            IR_State=1;
        }
    }
    else if(IR_State==2)
    {
        IR_Timer=DIR_InCont;
        DIR_InCont=0;
        if((IR_Timer >= 4) && (IR_Timer <= 8))
        {
            IR_Data[IR_pData/8]&=~(0x01<<(IR_pData%8));    //0
            IR_pData++;
        }
        else if((IR_Timer >= 10) && (IR_Timer <= 14))
        {
            IR_Data[IR_pData/8]|=(0x01<<(IR_pData%8));    //1
            IR_pData++;   
        }
        else
        {
            IR_pData=0;
            IR_State=1;
        }
        if(IR_pData>=16)
        {
            IR_pData=0;
            RX_NUM=IR_Data[0];
            RX_LVD=IR_Data[1];
            T1CR1=0x02;
            IR_State=0;
        }
    }
   
   
}
void des_sever(void)
{
//unsigned char dsp_code[14]={0X3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0xF0,0X1F,0XFF};//0111 0111
   
    if(RX_NUM==0x01){temp=1;}
    else if(RX_NUM==0x02){temp=10;}
    else if(RX_NUM==0x03){temp=2;}
    else if(RX_NUM==0x04){temp=3;}
    else if(RX_NUM==0x05){temp=4;}
    else if(RX_NUM==0x06){temp=5;}
    else if(RX_NUM==0x07){temp=6;}
    else if(RX_NUM==0x08){temp=7;}
    else if(RX_NUM==0x09){temp=8;}
    else if(RX_NUM==0x0A){temp=9;}
    else if(RX_NUM==0x0B){temp=10;}
   
    if(RX_LVD==0x01){lvd=11;}
    else if(RX_LVD==0x02){lvd=12;}
    else if(RX_LVD==0x03){lvd=12;}
    else if(RX_LVD==0x04){lvd=0;}
    else if(RX_LVD==0x05){lvd=8;}
    else if(RX_LVD==0x60){lvd=13;}
   
   
}
//------------------------------------------定時器-------------------------------------//
void Timer0_INIT(void)
{
    PCON1 = C_TMR0_Dis;
    TMR0 = 0;   
    T0MD = C_PS0_TMR0 | C_PS0_Div4;
    INTE = C_INT_TMR0 | C_INT_TMR1;
    PCON1 = C_TMR0_En;
}
void Timer1_INIT(void)
{
    TMRH = 0;
    TMR1 = 97;            //50us
    T1CR1 = 0x02;
    T1CR2 = C_TMR1_ClkSrc_Inst | C_PS1_Div4;
    INTE = C_INT_TMR0 | C_INT_TMR1;
}

接收引腳收到的波形

接收引腳收到的波形

最佳答案

查看完整內容

RfDuty_32Bit();應該用RX腳的下降沿來觸發,而不是定時器
回復

使用道具 舉報

ID:161164 發表于 2024-11-25 20:55 | 顯示全部樓層
RfDuty_32Bit();應該用RX腳的下降沿來觸發,而不是定時器
回復

使用道具 舉報

ID:161164 發表于 2024-11-25 23:13 | 顯示全部樓層
請描述一下自定義協議的時序
回復

使用道具 舉報

ID:1125252 發表于 2024-11-26 08:17 | 顯示全部樓層
lkc8210 發表于 2024-11-25 23:13
請描述一下自定義協議的時序

一共16位,都是電平不翻轉直接發送過來的。RX[0]是代表電機檔位一檔就是發送0x01過來,二檔0x02,三擋0x03,....,十檔0x0A,RX[1]是代表電量的,滿電0X06,這里我開始以為我接收的是反的,寫成0x60,電量有0x05,0x04,0x03,0x02,0x01。定義規則是起始位是高電平2.5ms,1ms低電平,然后1是高電平1.2ms,500us低電平,0是600us高電平,500us低電平。上面的定時是100us的。
回復

使用道具 舉報

ID:1125252 發表于 2024-11-27 10:30 | 顯示全部樓層
lkc8210 發表于 2024-11-26 14:25
RfDuty_32Bit();應該用RX腳的下降沿來觸發,而不是定時器

謝謝!已經解決了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天爽天天操 | 在线第一页 | 亚洲免费一区二区 | 91精品国产777在线观看 | 日韩精品中文字幕在线 | 亚洲国产一区二区视频 | 欧美一级艳情片免费观看 | 久久伊人精品 | 日韩精品一区二区三区在线播放 | 亚洲国产一 | 在线看av的网址 | 99久久免费精品国产免费高清 | 在线观看中文字幕 | 久久之精品 | 欧美成人激情 | 日韩在线视频网址 | 黄网站涩免费蜜桃网站 | 操操操日日日 | 一区二区精品视频 | 激情三区 | 久久99精品久久久久久国产越南 | 久久中文字幕一区 | 精品久久久久久中文字幕 | 粉嫩一区二区三区国产精品 | 亚洲国产精品久久久久秋霞不卡 | 激情五月婷婷 | 午夜看片网站 | 久久久精品网 | 亚洲精品一区二区三区蜜桃久 | 伊人伊人 | 色橹橹欧美在线观看视频高清 | www.日本精品 | 国产精品亚洲欧美日韩一区在线 | 欧美精品一区二区三区四区 | 日日躁狠狠躁aaaaxxxx | 午夜免费网站 | 日韩国产在线 | 2022精品国偷自产免费观看 | 欧美日韩在线观看一区二区三区 | 国产精品久久久久久久久久久久冷 | 精品国模一区二区三区欧美 |