rkrsnsyy 发表于 2026-1-28 10:22:14

STC8C2K32SS2 芯片,初始化串口2和串口3失败

我使用STC8C2K32SS2芯片,串口1初始正常使用,项目使用两个串口,我想初始化串口2,但是不能使用。我想问一下如何使用中断方式串口2,串口2初始化

rkrsnsyy 发表于 2026-1-28 10:26:07

定时器2波特率9600

rkrsnsyy 发表于 2026-1-28 10:26:25

rkrsnsyy 发表于 2026-1-28 10:26
定时器2波特率9600

定时器2波特率9600

rkrsnsyy 发表于 2026-1-28 10:33:20

STC8C2K32SS2 芯片如何中断方式串口2初始化

我使用STC8C2K32SS2芯片,串口1初始正常使用,项目使用两个串口,我想初始化串口2,但是不能使用。我想问一下如何使用中断方式串口2,串口2初始化

rkrsnsyy 发表于 2026-1-28 10:43:22


void Uart2Isr() interrupt 8
{
    if (S2CON & 0x02)
    {
      S2CON &= ~0x02;
      busy = 0;
    }
    if (S2CON & 0x01)
    {
      S2CON &= ~0x01;
      buffer = S2BUF;
                          P54 = !P54;       
      wptr &= 0x0f;
    }
}

void Uart2Init()
{
        S2CON = 0x50;                // 8位数据,可变波特率
        AUXR |= 0x04;          // 定时器2时钟为Fosc,即1T
        T2L = 0xE0;                        // 9600波特率
        T2H = 0xFE;                        //9600
        AUXR |= 0x10;                // 启动定时器2
        IE2   = ES2;      // 使能串口中断
        EA    = 1;          // 开总中断          
}

void Uart2Send(char dat)
{
    while (busy);
    busy = 1;
    S2BUF = dat;
}

void Uart2SendStr(char *p)
{
    while (*p)
    {
      Uart2Send(*p++);
    }
}

DebugLab 发表于 2026-1-28 11:06:41

串口2固定使用定时器2做波特率发生器
可以使用ISP软件的串口波特率计算功能
除生成的代码外,初始化还需要P_SW2|=0x80和EA=1

void Uart2_Isr(void) interrupt 8
{
      if (S2CON & 0x02)      //检测串口2发送中断
      {
                S2CON &= ~0x02;      //清除串口2发送中断请求位
      }
      if (S2CON & 0x01)      //检测串口2接收中断
      {
                S2CON &= ~0x01;      //清除串口2接收中断请求位
      }
}

void Uart2_Init(void)      //9600bps@11.0592MHz
{
      S2CON = 0x50;                //8位数据,可变波特率
      AUXR |= 0x04;                //定时器时钟1T模式
      T2L = 0xE0;                        //设置定时初始值
      T2H = 0xFE;                        //设置定时初始值
      AUXR |= 0x10;                //定时器2开始计时
      IE2 |= 0x01;                //使能串口2中断
}

rkrsnsyy 发表于 2026-1-28 13:59:06

P_SW2|=0x80和EA=1增加了这两个之后接受数据书正确的,但是不能发送数据 是不是P11脚是不是设置为准双口
页: [1]
查看完整版本: STC8C2K32SS2 芯片,初始化串口2和串口3失败