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

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

[复制链接]
  • TA的每日心情
    开心
    2024-1-2 13:36
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2

    主题

    7

    回帖

    62

    积分

    注册会员

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

    使用道具 举报

    该用户从未签到

    45

    主题

    2909

    回帖

    6538

    积分

    超级版主

    积分
    6538
    发表于 2022-12-17 15:10:11 | 显示全部楼层
    STC8H系列-串口相关程序.rar (342.35 KB, 下载次数: 144)
  • TA的每日心情
    开心
    2024-1-2 13:36
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2

    主题

    7

    回帖

    62

    积分

    注册会员

    积分
    62
     楼主| 发表于 2022-12-17 15:58:44 | 显示全部楼层
    谢谢梁工,已经好用了,感谢!

    该用户从未签到

    550

    主题

    9218

    回帖

    1万

    积分

    管理员

    积分
    13926
    发表于 2022-12-17 16:01:14 | 显示全部楼层
    这就好,良性互动,搞定了,回来感谢下,我们研发就支持的更开心
  • TA的每日心情
    开心
    昨天 00:42
  • 签到天数: 49 天

    [LV.5]常住居民I

    0

    主题

    3

    回帖

    222

    积分

    中级会员

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

    使用道具 举报

  • TA的每日心情
    难过
    前天 22:16
  • 签到天数: 83 天

    [LV.6]常住居民II

    3

    主题

    28

    回帖

    211

    积分

    中级会员

    积分
    211
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    8 小时前
  • 签到天数: 131 天

    [LV.7]常住居民III

    20

    主题

    1033

    回帖

    2435

    积分

    金牌会员

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

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

    使用道具 举报

    该用户从未签到

    45

    主题

    2909

    回帖

    6538

    积分

    超级版主

    积分
    6538
    发表于 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, 2024-4-26 17:24 , Processed in 0.065721 second(s), 60 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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