[PIC®/AVR®/dsPIC®产品] PIC16F193X串口发送带奇偶校验位的数据

[复制链接]
3270|12
 楼主| eleczj 发表于 2015-11-23 12:03 | 显示全部楼层 |阅读模式
主机端是要求数据格式如下:
准备使用PIC16F193X单片机,串口发送的是带奇偶校验位数据,也就是说一个停止位+9个数据位(8bit数据+1比特校验)+一个停止位,因为PIC这个片子不带硬件奇偶校验,准备用软件实现,看了下pdf的步骤,

之前没写过9位数据,我把校验值运算以后,将结果后直接写入TX9D,再将要发送的数据写入TXREG就可以了吗?
如果做过这个格式的能否提供例程指点下?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| eleczj 发表于 2015-11-23 17:33 | 显示全部楼层
串口监控及串口调试都不能准确解析偶校验。。。
抓波形分析确实是偶校验。。怎么解?。。。串口软件不行?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| eleczj 发表于 2015-11-23 20:07 | 显示全部楼层


换个串口工具就好了,o(︶︿︶)o 唉。。。国内开源的串口工具很多都没有奇校验、偶校验区别的功能。。。。。。。。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yklstudent 发表于 2015-11-24 10:19 | 显示全部楼层
楼主上面用的什么串口调试工具?
 楼主| eleczj 发表于 2015-11-25 11:24 | 显示全部楼层
yklstudent 发表于 2015-11-24 10:19
楼主上面用的什么串口调试工具?



。。。就是文件安装包太大。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yklstudent 发表于 2015-11-25 12:18 | 显示全部楼层
eleczj 发表于 2015-11-25 11:24
。。。就是文件安装包太大。。。

恩,谢谢
carverzhang 发表于 2016-5-11 00:33 | 显示全部楼层
楼主,你的这个问题是怎么实现的 ?
fxl123 发表于 2022-7-12 14:43 | 显示全部楼层
楼主,现在又也用软件实现9位的奇偶校验,出了问题,能指教下啊
lcczg 发表于 2022-7-13 17:35 | 显示全部楼层
fxl123 发表于 2022-7-12 14:43
楼主,现在又也用软件实现9位的奇偶校验,出了问题,能指教下啊

具体什么问题?有波形吗?
fxl123 发表于 2022-7-13 18:07 | 显示全部楼层
发送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);
}
波形还没看
huquanz711 发表于 2022-7-13 18:57 来自手机 | 显示全部楼层
奇偶校验是自动加上的啊
fxl123 发表于 2022-7-15 10:34 | 显示全部楼层
没啊,硬件没有奇偶校验,只有9位数据发送,软件算奇偶位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

20

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部