找回密码
 立即注册
查看: 1094|回复: 4

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

[复制链接]

4

主题

10

回帖

70

积分

注册会员

积分
70
发表于 2023-6-1 13:00:17 | 显示全部楼层 |阅读模式
#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[16];


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[wptr++] = 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;
                }
        }
}

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-6-1 13:14:29 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-6-1 13:15:47 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-6-1 13:30:00 | 显示全部楼层
我用你的代码测试,通过串口3(P00,P01)是可以正常收发数据的。

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

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

使用道具 举报 送花

4

主题

10

回帖

70

积分

注册会员

积分
70
发表于 2023-6-2 09:14:46 | 显示全部楼层
乘风*** 发表于 2023-6-1 13:30
我用你的代码测试,通过串口3(P00,P01)是可以正常收发数据的。

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

果然可以了 谢谢
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 22:04 , Processed in 0.141099 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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