烫了个发 发表于 2023-6-1 13:00:17

求助STC8a8k64d4串口3的发送接收字节怎么做?按照例程写的不能接受不能发送。。。。

#include"STC8A8K64D4.H"
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

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

sbit LED1=P2^0;
sbit LED2=P2^1;

bit busy;
char wptr;
char rptr;
char buffer;


void Uart3Send(char dat)
{
    while (busy);
    busy = 1;
    S3BUF = dat;
}

void Uart3SendStr(char *p)
{
    while (*p)
    {
      Uart3Send(*p++);
    }
}

void Uart3Isr() interrupt 17
{
    if (S3CON & 0x02)
    {
      S3CON &= ~0x02;
      busy = 0;
    }
    if (S3CON & 0x01)
    {
      S3CON &= ~0x01;
      buffer = S3BUF;
      wptr &= 0x0f;
    }
}
void main()
{
        P0M0=0x00;                               
        P0M1=0x00;
        P2M0=0x00;
        P2M1=0x00;
        P3M0=0x00;
        P3M1=0x00;
        S3CON = 0x10;
        T2L = BRT;
        T2H = BRT >> 8;
        AUXR = 0x14;
        IE2 = 0x08;
        EA = 1;
        wptr = 0x00;
        rptr = 0x00;
        busy = 0;
        while(1)
        {
                if(rptr != wptr)      // 将接收到的数据发送出去
                {
                       Uart3SendStr(buffer);   
                        rptr &= 0x0f;
                }
        }
}

神农鼎 发表于 2023-6-1 13:14:29


串口程序,从官方正确的开始,不要从错误的开始,
另外有仿真器 STC-USB Link1D 来高效调试发现你的错误


求STC8系列4个串口同时通信的程序,Modbus 演示程序 - 串行口,DMA支持的4组串口 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

神农鼎 发表于 2023-6-1 13:15:47


用仿真器 STC-USB Link1D 来高效调试发现你的错误

不要盲人摸象,靠猜==那是高手


用 STC-USB Link1D 仿真STC8系列MCU - 编译器/仿真器/ISP下载/做自己的ISP/ID号加密/程序加密后传输 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

乘风飞扬 发表于 2023-6-1 13:30:00

我用你的代码测试,通过串口3(P00,P01)是可以正常收发数据的。

建议参考例程的方法将主循环里的发送指令改成:Uart3Send(buffer);
不然按照你现在的方法,收到数据后会不断的进行发送,因为你的 rptr 没有进行处理。


如果你的环境还是无法进行收发的话,建议检查硬件电路,包括串口工具是否可以正常使用。

烫了个发 发表于 2023-6-2 09:14:46

乘风飞扬 发表于 2023-6-1 13:30
我用你的代码测试,通过串口3(P00,P01)是可以正常收发数据的。

建议参考例程的方法将主循环里的发送指令 ...

果然可以了 谢谢
页: [1]
查看完整版本: 求助STC8a8k64d4串口3的发送接收字节怎么做?按照例程写的不能接受不能发送。。。。