找回密码
 立即注册
查看: 581|回复: 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;
                }
        }
}

回复 送花

使用道具 举报

该用户从未签到

551

主题

9420

回帖

1万

积分

管理员

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

使用道具 举报

该用户从未签到

551

主题

9420

回帖

1万

积分

管理员

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

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:01
  • 签到天数: 139 天

    [LV.7]常住居民III

    26

    主题

    1332

    回帖

    4145

    积分

    论坛元老

    积分
    4145
    发表于 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, 2024-5-14 07:49 , Processed in 0.064836 second(s), 47 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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