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

[复制链接]
1005|4
手机看帖
扫描二维码
随时随地手机跟帖
fxl123|  楼主 | 2022-7-12 10:15 | 显示全部楼层 |阅读模式
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);
}



使用特权

评论回复

相关帖子

fxl123|  楼主 | 2022-7-12 11:22 | 显示全部楼层

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

哪位大哥帮我看看啊,可有偿

使用特权

评论回复
xch| | 2022-7-13 09:13 | 显示全部楼层
本帖最后由 xch 于 2022-7-13 12:18 编辑

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

uint odd(uint inp)
{
   inp ^= inp >>4;
   inp ^= inp >>2;
   inp ^= inp >>1;
   return inp & 1;
}

使用特权

评论回复
fxl123|  楼主 | 2022-7-13 17:23 | 显示全部楼层
谢谢回复,用了你提供的奇校验代码,还是和之前一样结果。因为之前没用过示波器看串口的波形,不清楚看波形怎样能看出哪有问题,请再指导下,谢谢

使用特权

评论回复
xch| | 2022-7-14 12:03 | 显示全部楼层
本帖最后由 xch 于 2022-7-14 12:04 编辑

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝