找回密码
 立即注册
楼主: manz***

STC8系列4组串口同时通信的程序,Modbus 演示程序

  [复制链接]
  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    110

    主题

    458

    回帖

    860

    积分

    高级会员

    积分
    860
    发表于 2023-7-26 06:17:01 | 显示全部楼层
    梁工 发表于 2023-7-25 23:57
    不是的,你两个串口,两个王国,各自为政,互不干涉,可以有交易(数据传递)。
    串口1做主机,询问下位机 ...

    谢谢梁工支持,您这样讲,我心里就有底了,u8        TX1_read,RX1_write;        //读写索引(指针).这两个索引定义,我不理解,能讲一下吗?

    点评

    TX1_read,RX1_write,发送/接收的缓冲下表指示,也可以理解成索引、指针,用于指示读取/写入位置。  详情 回复 发表于 2023-7-26 11:02
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2930

    回帖

    6593

    积分

    超级版主

    积分
    6593
    发表于 2023-7-26 11:02:41 | 显示全部楼层
    本帖最后由 梁工 于 2023-7-26 11:08 编辑
    380091044 发表于 2023-7-26 06:17
    谢谢梁工支持,您这样讲,我心里就有底了,u8        TX1_read,RX1_write;        //读写索引(指针).这两个索引定义,我 ...

    TX1_read,RX1_write,发送/接收的缓冲数组下标指示,也可以理解成索引、指针,用于指示读取/写入位置。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    110

    主题

    458

    回帖

    860

    积分

    高级会员

    积分
    860
    发表于 2023-7-27 21:26:47 | 显示全部楼层
    梁工 发表于 2023-7-26 11:02
    TX1_read,RX1_write,发送/接收的缓冲数组下标指示,也可以理解成索引、指针,用于指示读取/写入位置。 ...

    感谢的您支持,其实不理解的发送后面是读,接收后面是写,接收后面是写,我理解的就是接收后,写入指定内存存起来,发送读呢?是发送出去给对方读吗??

    点评

    读出要发送的字节,写入接收到的字节。  详情 回复 发表于 2023-7-27 22:05
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    110

    主题

    458

    回帖

    860

    积分

    高级会员

    积分
    860
    发表于 2023-7-27 21:36:47 | 显示全部楼层
    有这么一个帖子:求STC8系列4个串口同时通信的程序,Modbus 演示程序,我想收藏,始终没找收藏二字,https://www.stcaimcu.com/forum.p ... amp;page=3#pid22194,大家有兴趣的看一下,可能是我新注册,级别不够吧,
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2930

    回帖

    6593

    积分

    超级版主

    积分
    6593
    发表于 2023-7-27 22:05:16 | 显示全部楼层
    380091044 发表于 2023-7-27 21:26
    感谢的您支持,其实不理解的发送后面是读,接收后面是写,接收后面是写,我理解的就是接收后,写入指定内 ...

    读出要发送的字节,写入接收到的字节。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2023-8-15 11:54:54 | 显示全部楼层
    学习了。到时候  借鉴一下。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2023-9-2 16:49:36 | 显示全部楼层
    上边的modbus 文件  经过测试室可以的。   但是把他对应的改为串口2

    void        UART2_config(u32 brt, u8 timer, u8 io)        // brt: 通信波特率,  timer=2: 波特率使用定时器2, 其它值: 使用Timer1做波特率. io=0: 串口1切换到P3.0 P3.1,  =1: 切换到P3.6 P3.7, =2: 切换到P1.6 P1.7,  =3: 切换到P4.3 P4.4.
    {
            brt = 65536UL - (MAIN_Fosc / 4) / brt;
            if(timer == 2)        //波特率使用定时器2
            {
                    AUXR |= 0x01;                //S1 BRT Use Timer2;
                    SetTimer2Baudraye((u16)brt);
            }

            else                //波特率使用定时器1
            {
                    TR1 = 0;
                    AUXR &= ~0x01;                //S1 BRT Use Timer1;
                    AUXR |=  (1<<6);        //Timer1 set as 1T mode
                    TMOD &= ~(1<<6);        //Timer1 set As Timer
                    TMOD &= ~0x30;                //Timer1_16bitAutoReload;
                    TH1 = (u8)(brt >> 8);
                    TL1 = (u8)brt;
                    ET1 = 0;                        // 禁止Timer1中断
                    INT_CLKO &= ~0x02;        // Timer1不输出高速时钟
                    TR1  = 1;                        // 运行Timer1
            }

                     if(io == 1)        {S1_USE_P36P37();        P3n_standard(0xc0);}        //切换到 P3.6 P3.7
            else if(io == 2)        {S1_USE_P16P17();        P1n_standard(0xc0);}        //切换到 P1.6 P1.7
            else if(io == 3)        {S1_USE_P43P44();        P4n_standard(0x18);}        //切换到 P4.3 P4.4
    //        else                                {S1_USE_P30P31();        P3n_standard(0x03);}        //切换到 P3.0 P3.1
            else                                {S2_USE_P10P11();        P1n_standard(0xc0);}        //切换到 P1.0 P1.1

            S2CON = (S2CON & 0x3f) | (1<<6);        // 8位数据, 1位起始位, 1位停止位, 无校验
    //        PS  = 1;        //高优先级中断
            ES  = 1;        //允许中断
            REN = 1;        //允许接收

         切换到 P1.0 P1.1,且用RS485的格式   P37=1;为从机发送   P37=0;为从机接收。
    没有成功。

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:11
  • 签到天数: 111 天

    [LV.6]常住居民II

    34

    主题

    164

    回帖

    405

    积分

    中级会员

    积分
    405
    发表于 2023-9-3 21:59:46 | 显示全部楼层


    今天利用周末时间,看到了腾讯会议上梁工讲的MODBUS协议部分的讲解。梁工讲的太棒了。
    梁工的程序一直那么严谨,思路清淅,讲的也很透彻。




    1111.png
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2023-9-14 19:10:38 | 显示全部楼层
    已经  调通了。  注意如果用串口2的接出串口线的话,,串口2又接了RS485的芯片是会有影响的。要去掉RS485芯片  ,在试串口2.
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    8

    主题

    29

    回帖

    164

    积分

    注册会员

    积分
    164
    发表于 2023-9-26 10:49:26 | 显示全部楼层
    梁工 发表于 2022-12-19 13:09
    STC8H/STC8G 的 4组独立串口程序, 通用
    Modbus 演示程序, 2023/8/28更新
    解压缩后参考、测试“08-串口1中 ...

    怎么在降龙棍里实验

    点评

    直接下载HEX文件就可以测试了。  详情 回复 发表于 2023-9-26 11:28
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-2 07:32 , Processed in 0.069074 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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