找回密码
 立即注册
楼主: manzunzu

8H/8G/8C/8A系列4组串口同时通信的程序,Modbus 演示程序;可共享T2做波特率发生器

 火.. [复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2024-02-22 09:29:24

5

主题

51

回帖

285

积分

中级会员

积分
285
发表于 2024-1-11 16:49:16 | 显示全部楼层
梁*** 发表于 2023-2-21 16:31
如果依旧无法解压缩,那是你的解压软件版本太旧了,升级一下吧。


bit busy;
char wptr;
char rptr;
char buffer[16];

void UART_Init()//9600bps@11.0592MHz
{
          SCON = 0x50;
    TMOD = 0x00;
    TL1 = BRT;
    TH1 = BRT >> 8;
    TR1 = 1;
    AUXR = 0x40;
    wptr = 0x00;
    rptr = 0x00;
    busy = 0;
       
}

void UART_SendByte(u16 Data)
{
  
                while (busy);
    busy = 1;
    SBUF = Data;
}


void UartIsr() interrupt 4
{
    if (TI)
    {
        TI = 0;
        busy = 0;
    }
//    if (RI)
//    {
//        RI = 0;
//        buffer[wptr++] = SBUF;
//        wptr &= 0x0f;
//    }
}

void main(void)
{
        Io_Init();
        UART_Init();
  ES = 1;
  EA = 1;
   
    while (1)
    {
//        if (rptr != wptr)
//        {
//            UART_SendByte(0x33);
//            rptr &= 0x0f;
//        }
                        UART_SendByte(0x33);


    }

}

梁工你好  这是我参考历程改写的串口代码,我希望实现只发送数据给PC 不接收数据,但是我发现这样子传输发送的是乱码,我不确定是什么问题所导致的。我尝试过用ISP助手生成的初始化配置以选择以选择比较低的波特率,但是发现还是传输乱码,所以想请教一下梁工是哪里出现了问题

点评

你的实际主频多少MHz?BRT是在怎么定义的?  详情 回复 发表于 2024-1-11 19:13
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-05-09 14:16:38

73

主题

5899

回帖

1万

积分

超级版主

积分
12139
发表于 2024-1-11 19:13:57 | 显示全部楼层
Hons*** 发表于 2024-1-11 16:49
bit busy;
char wptr;
char rptr;

你的实际主频多少MHz?BRT是在怎么定义的?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2024-02-22 09:29:24

5

主题

51

回帖

285

积分

中级会员

积分
285
发表于 2024-1-11 22:50:21 | 显示全部楼层
梁*** 发表于 2024-1-11 19:13
你的实际主频多少MHz?BRT是在怎么定义的?

#define FOSC        11059200UL
#define BRT         (65536 - FOSC / 115200 / 4)
是这个

点评

编译测试了你的程序,PC接收正确,没有问题: [attachimg]32594[/attachimg]  详情 回复 发表于 2024-1-11 23:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-05-09 14:16:38

73

主题

5899

回帖

1万

积分

超级版主

积分
12139
发表于 2024-1-11 23:07:25 | 显示全部楼层
Hons*** 发表于 2024-1-11 22:50
#define FOSC        11059200UL
#define BRT         (65536 - FOSC / 115200 / 4)
是这个

编译测试了你的程序,PC接收正确,没有问题:
截图202401112306444211.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2024-03-17 11:19:17

1

主题

10

回帖

95

积分

注册会员

积分
95
发表于 2024-1-25 15:32:39 | 显示全部楼层
梁 工,你好!
我的串口3发送不数据,帮我看一下,哪 里出了问题?
                                MOV       S3CON,#00H       ;不接收数据,=10允许接收数据S3SM0 S3ST3 S3SM2 S3REN S3TB8 S3RB8 S3TI S3RI
                                MOV       S3BUF,#00H       ;模式0,S3T3=0,选T2为波发器,可变波率8位数据方式
                                MOV       IE2,#08H         ;允许UART3中断- ET4 ET3 ES4 ES3 ET2 ESPI ES2
;--------------------------------------------------------------------------------------
UART3_ISR:
               PUSH      ACC
               PUSH      PSW
               ;MOV       PSW,#08H      ;CY AC F0 RS1 RS0 OV - P
               MOV       S3DA,S3CON              
                           ;MOV       S3DA,A         ;S3DA=2EH
              JB        S3DA.1,U3RT1
               MOV       S3CON,#00H
               SJMP      UART3ISR_EXIT
;----------------------------------------------
U3RT1:         SETB      T3BA
               CLR       S3DA.1
                           ;MOV       A,S3DA
                           MOV       S3CON,S3DA
                          
;==============================================
UART3ISR_EXIT:
               POP       PSW
               POP       ACC
               RETI
;===============================================
                                ;发送BIO的7个数据
//================================================================  
SENDS:          CLR      TR0
                     MOV      R1,#56H
                     MOV      R7,#07D
;-----
SENDS1:         MOV      A,@R1
                      MOV      S3BUF,A
;----
SENDS1A:
                                JBC      T3BA,SENDS1B
                                SJMP     SENDS1A
;---
SENDS1B:                  CPL      OUT_YL             ;指示作用,
                                INC      R1
                                DJNZ     R7,SENDS1
                                CALL     ADJ_ON
                                RET                          
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2024-03-17 11:19:17

1

主题

10

回帖

95

积分

注册会员

积分
95
发表于 2024-1-25 15:33:54 | 显示全部楼层
我的串口1和串口3都用T2作为波特率发生器  ,115200
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:380
  • 最近打卡:2025-05-09 09:03:17
已绑定手机

28

主题

302

回帖

847

积分

高级会员

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

波特率相同可以共用定时器T2,又学到了一个精华,@梁工,还有其他类似精华共享吗

点评

4个串口如果波特率相同,都可以使用定时器2做波特率。 应用类,可以在本论坛找,很多干货!  详情 回复 发表于 2024-1-28 22:11
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-05-09 14:16:38

73

主题

5899

回帖

1万

积分

超级版主

积分
12139
发表于 2024-1-28 22:11:02 | 显示全部楼层
小*** 发表于 2024-1-28 21:22
波特率相同可以共用定时器T2,又学到了一个精华,@梁工,还有其他类似精华共享吗 ...

4个串口如果波特率相同,都可以使用定时器2做波特率。
应用类,可以在本论坛找,很多干货!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-29 09:57:16

1

主题

3

回帖

15

积分

新手上路

积分
15
发表于 2024-1-29 11:03:09 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:62
  • 最近打卡:2025-05-09 11:19:24

719

主题

1万

回帖

1万

积分

管理员

积分
15655
发表于 2024-2-9 21:37:23 | 显示全部楼层
截图202402092137204588.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-9 14:53 , Processed in 0.244613 second(s), 128 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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