找回密码
 立即注册
查看: 193|回复: 1

串口1P31 P31 奇校验1位停止位在STC8H8K64U-LQFP64运行正常改到STC8H8K64U -TSSOP20

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:276
  • 最近打卡:2026-03-23 09:32:26
已绑定手机

20

主题

45

回帖

1246

积分

金牌会员

积分
1246
发表于 2026-1-2 15:08:17 | 显示全部楼层 |阅读模式
串口1P31 P31 奇校验1位停止位在STC8H8K64U-LQFP64运行正常改到STC8H8K64U -TSSOP20就不正常运行下面是串口1的配置奇校验1位停止位
/**
* 串口1初始化函数 (用于与电脑通信,P3.0/P3.1)
* 配置: 波特率9600, 奇校验, 1位停止位
*/
void UART1_Init(u32 brt)
{   
    SCON = 0xD0;        // 模式3:9位数据, 可变波特率, 包含校验位
    PCON |= 0x80;       // SMOD=1, 波特率倍频

    AUXR |= 0x40;       // 定时器时钟1T模式
    AUXR &= 0xFE;       // 串口1选择定时器1为波特率发生器

    TMOD &= 0x0F;       // 设置定时器模式
    TH1 = (u8)((65536UL - (MAIN_Fosc / 4) / brt) >> 8);
    TL1 = (u8)(65536UL - (MAIN_Fosc / 4) / brt);

    ET1 = 0;            // 禁止Timer1中断
    TR1 = 1;            // 运行Timer1

    ES = 1;             // 允许串口中断
    EA = 1;             // 开启总中断

    P_SW1 &= ~0xc0;     // UART1/USART1: RxD(P3.0), TxD(P3.1)

}

/**
* 计算奇校验位
*/
unsigned char calculate_odd_parity(unsigned char dat)
{
    unsigned char parity = 0;
    unsigned char temp = dat;  // 使用临时变量避免修改原数据
    while(temp) {
        parity ^= temp & 1;
        temp >>= 1;
    }
    return !parity;  // 奇校验:使数据位中1的总数为奇数
}

/**
* 串口1发送一个字节(带奇校验)
*/
void UART1_SendByte(unsigned char dat)
{
    // 计算奇校验位并设置TB8
    TB8 = calculate_odd_parity(dat);

    SBUF = dat;                 // 写入发送数据
    while(!TI);                 // 等待发送完成(TI=1)
    TI = 0;                     // 清除TI标志位
}

/**
* 发送字符串
*/
void SendString(u8 *s, u8 num)
{
    u8 i;
    for(i = 0; i < num; i++) {
        UART1_SendByte(s);
    }
}


/**
* 发送11个0x55字节(同步命令)
*/
void SendSyncCommand()
{
    SendString((char*)SYNC_CMD, 11);
}
/**
* 发送11个0x00字节(查询命令)
*/
void SendQueryCommand()
{
    SendString((char*)QUERY_CMD, 11);
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:276
  • 最近打卡:2026-03-23 09:32:26
已绑定手机

20

主题

45

回帖

1246

积分

金牌会员

积分
1246
发表于 2026-1-2 19:36:02 | 显示全部楼层
已经解决又是把芯片搞烧了
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-23 23:09 , Processed in 0.103458 second(s), 47 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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