cenconl 发表于 2022-12-17 14:48:30

麻烦发我一份STC8H8K64U串口2的奇偶校验程序 | 已解决

测试串口1的奇偶校验能用,串口2的不好用,不是的是什么原因。
麻烦发我一份STC8H8K64U串口2的奇偶校验程序,谢谢!

梁工 发表于 2022-12-17 15:10:11

cenconl 发表于 2022-12-17 15:58:44

谢谢梁工,已经好用了,感谢!

神农鼎 发表于 2022-12-17 16:01:14

这就好,良性互动,搞定了,回来感谢下,我们研发就支持的更开心

稻草人-008 发表于 2024-1-15 01:14:48

{:4_165:}

微光 发表于 2024-1-18 21:59:42

梁工 发表于 2022-12-17 15:10


void        UART2_TxByte(u8 dat)
{
        B_TX2_Busy = 1;                //标志发送忙
        ACC = dat;
        if(P)        S2CON |=S2TB8;        //奇校验
//        if(!P)        S2CON |=S2TB8;        //偶校验
        else        S2CON &= ~S2TB8;
        S2BUF = dat;                //发一个字节
        while(B_TX2_Busy);        //等待发送完成
}

梁工,这是解压的串口2带校验的程序片段?我的困惑是S2CON 可以位寻址吗?S2TB8 可以直接引用吗?

_奶咖君_ 发表于 2024-1-19 00:42:14

微光 发表于 2024-1-18 21:59
void        UART2_TxByte(u8 dat)
{
        B_TX2_Busy = 1;                //标志发送忙


你可以看看手册,,手册里描述了关于哪些可以位寻址 哪些不行

梁工 发表于 2024-1-19 11:33:59

本帖最后由 梁工 于 2024-1-19 11:35 编辑

微光 发表于 2024-1-18 21:59
void      UART2_TxByte(u8 dat)
{
      B_TX2_Busy = 1;                //标志发送忙

对于8位的51,特殊功能寄存器地址为0或8结尾的才能位选址,所以S2CON是不能位选址的,要用“与”操作清0,用“或”操作置1.
       if(P)      S2CON |=S2TB8;      //奇校验
//   if(!P)       S2CON |=S2TB8;      //偶校验
      else      S2CON &= ~S2TB8;

而对于32位的STC32系列,则所有的位均可位寻址。
页: [1]
查看完整版本: 麻烦发我一份STC8H8K64U串口2的奇偶校验程序 | 已解决