Honsiti
发表于 2024-1-11 16:49:16
梁工 发表于 2023-2-21 16:31
如果依旧无法解压缩,那是你的解压软件版本太旧了,升级一下吧。
bit busy;
char wptr;
char rptr;
char buffer;
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 = 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助手生成的初始化配置以选择以选择比较低的波特率,但是发现还是传输乱码,所以想请教一下梁工是哪里出现了问题
梁工
发表于 2024-1-11 19:13:57
Honsiti 发表于 2024-1-11 16:49
bit busy;
char wptr;
char rptr;
你的实际主频多少MHz?BRT是在怎么定义的?
Honsiti
发表于 2024-1-11 22:50:21
梁工 发表于 2024-1-11 19:13
你的实际主频多少MHz?BRT是在怎么定义的?
#define FOSC 11059200UL
#define BRT (65536 - FOSC / 115200 / 4)
是这个
梁工
发表于 2024-1-11 23:07:25
Honsiti 发表于 2024-1-11 22:50
#define FOSC 11059200UL
#define BRT (65536 - FOSC / 115200 / 4)
是这个
编译测试了你的程序,PC接收正确,没有问题:
MYKJ
发表于 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
MYKJ
发表于 2024-1-25 15:33:54
我的串口1和串口3都用T2作为波特率发生器,115200
小坤
发表于 2024-1-28 21:22:05
梁工 发表于 2022-12-19 13:09
STC8H/STC8G 的 4组 独立串口程序, 通用
Modbus 演示程序, 2023/8/28更新
解压缩后参考、测试“08-串口1中 ...
波特率相同可以共用定时器T2,又学到了一个精华,@梁工,还有其他类似精华共享吗
梁工
发表于 2024-1-28 22:11:02
小坤 发表于 2024-1-28 21:22
波特率相同可以共用定时器T2,又学到了一个精华,@梁工,还有其他类似精华共享吗 ...
4个串口如果波特率相同,都可以使用定时器2做波特率。
应用类,可以在本论坛找,很多干货!
内卷123
发表于 2024-1-29 11:03:09
{:4_197:}
神农鼎
发表于 2024-2-9 21:37:23
页:
1
2
3
4
5
[6]
7
8
9
10
11
12
13
14