找回密码
 立即注册
查看: 2271|回复: 7

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-12-31 15:01:22

3

主题

10

回帖

111

积分

注册会员

积分
111
发表于 2022-12-17 14:48:30 | 显示全部楼层 |阅读模式
测试串口1的奇偶校验能用,串口2的不好用,不是的是什么原因。
麻烦发我一份STC8H8K64U串口2的奇偶校验程序,谢谢!
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2022-12-17 15:10:11 | 显示全部楼层
STC8H系列-串口相关程序.rar (342.35 KB, 下载次数: 301)
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-12-31 15:01:22

3

主题

10

回帖

111

积分

注册会员

积分
111
发表于 2022-12-17 15:58:44 | 显示全部楼层
谢谢梁工,已经好用了,感谢!
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2022-12-17 16:01:14 | 显示全部楼层
这就好,良性互动,搞定了,回来感谢下,我们研发就支持的更开心
  • 打卡等级:常住居民II
  • 打卡总天数:85
  • 最近打卡:2025-01-22 12:32:06

0

主题

3

回帖

384

积分

中级会员

积分
384
发表于 2024-1-15 01:14:48 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-05-01 23:16:08
已绑定手机

4

主题

29

回帖

647

积分

高级会员

积分
647
发表于 2024-1-18 21:59:42 | 显示全部楼层

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 可以直接引用吗?

点评

对于8位的51,特殊功能寄存器地址为0或8结尾的才能位选址,所以S2CON是不能位选址的,要用“与”操作清0,用“或”操作置1. if(P) S2CON |= S2TB8; //奇校验 // if(!P) S2CON |= S2  详情 回复 发表于 2024-1-19 11:33
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-1-19 00:42:14 | 显示全部楼层
微*** 发表于 2024-1-18 21:59
void        UART2_TxByte(u8 dat)
{
        B_TX2_Busy = 1;                //标志发送忙

你可以看看手册,,手册里描述了关于哪些可以位寻址 哪些不行
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 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系列,则所有的位均可位寻址。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 13:01 , Processed in 0.152501 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表