问答

汇集网友智慧,解决技术难题

21ic问答首页 - pic软件计算奇偶校验,出错

pic 奇偶校验 单片机 软件 ST

pic软件计算奇偶校验,出错

fxl1232022-07-12
pic软件计算奇偶校验,发送1,2,3,4,5。显示3F,3F,03,3F,05。请大家帮忙看看uint add (uint data)        //奇校验 1的个数为奇数
{
        uint i = 0;
        int cnt = 0;
        int temp = 0;
        for(i = 0;i < 8;i++)
        {
                temp = ((data >> i) & 1);
                cnt += temp;
        }
        if(cnt%2 == 0)
        {
                return 1;
        }
        else
        {
                return 0;
        }

}


void Usart_Init (void)               
{       
        RCSTA = 0xD0;                //9位接收                       
        TXSTAbits.TX9 = 1;                  //9位发送        
        TXSTAbits.TXEN = 1;        //使能发送
        TXSTAbits.SYNC = 0;        //异步
        TXSTAbits.BRGH = 1;        //高速

        BAUDCONbits.BRG16 = 0; //SYNC = 0, BRGH = 1, BRG16 = 0
                                       
        SP1BRGH = 0;
        SP1BRGL = 0x19;                        //25,波特率9600
        RCIE = 1;
        RCIF = 0;
//        TXIE = 1;
}


void Usart_SEND (uint TX)
{       
        TXSTAbits.TX9D = add(TX);
        TXREG = TX;
        while(!TXSTAbits.TRMT);
        delayus(50);
}



回答 +关注 14
1138人浏览 4人回答问题 分享 举报
4 个回答
  • 本帖最后由 xch 于 2022-7-14 12:04 编辑

    用示波器测量1,2,3... 对应的输出波形。
    1,测量波特率,
    2,看看波形是否符合数据。
    没准是接收端问题,或者电平失配等问题。
    还可以把UART 接口TXD,RXD 短路,自发自收闭环测试。

  • 谢谢回复,用了你提供的奇校验代码,还是和之前一样结果。因为之前没用过示波器看串口的波形,不清楚看波形怎样能看出哪有问题,请再指导下,谢谢
  • 本帖最后由 xch 于 2022-7-13 12:18 编辑

    用示波器看吧。代码写的不好,但是看起来没问题。

    uint odd(uint inp)
    {
       inp ^= inp >>4;
       inp ^= inp >>2;
       inp ^= inp >>1;
       return inp & 1;
    }
  • 哪位大哥帮我看看啊,可有偿

您需要登录后才可以回复 登录 | 注册