找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3451|回复: 2
打印 上一主题 下一主题
收起左侧

请教STC8G1K08A单片机串口接收问题

[复制链接]
跳转到指定楼层
楼主
请大侠指点下:
串口为什么发送正常,接收却不正常呢?



单片机源程序如下:
#include "STC8G.h"
#include "intrins.h"
void UartInit(void)                //115200bps@33.1776MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器时钟1T模式
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设置定时器模式
        TL1 = 0xB8;                //设置定时初始值
        TH1 = 0xFF;                //设置定时初始值
        ET1 = 0;                //禁止定时器%d中断
        TR1 = 1;                //定时器1开始计时
}
void GPI_Init(void)
{
    P3M0 = 0x00;
    P3M1 = 0x00;
    P31 = 0; //PWM关
}
/* 串口发送字节数据函数 参数是要发送的字节 */
void UartSend_Data(unsigned char dat)
{
    SBUF = dat;  // 把要发送的数据给了SBUF寄存器
    while(!TI);  // 等待数据发送完成
    TI = 0;      // 清除发送完成标志位
}
void main()
{
    /* 定义一个8位变量 用于接收串口接收的字节 */
    unsigned char x =0;
    GPI_Init();
    UartInit(); // 串口初始化
    while (1)
    {
        SBUF = 0x01;  // 把要发送的数据给了SBUF寄存器
        while(!TI);  // 等待数据发送完成
        TI = 0;
        if (TI)
        {
            TI = 0;     //清中断标志
            P31 = !P31; //测试PWM端口
        }
        if (RI)// 如果串口接收到数据
        {
            RI = 0;      //清中断标志
            x =SBUF;
            if (x == 0x01)
            {
                P31 = !P31;  //翻转MOS管状态
                UartSend_Data('l');
            }
            if (x == 0x02)
            {
                P32 = !P32;  //翻转led状态
                SBUF = 'm';  // 把要发送的数据给了SBUF寄存器
                while(!TI);  // 等待数据发送完成
                TI = 0;      // 清除发送完成标志位
            }
        }
    }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:878061 发表于 2022-1-11 20:59 | 只看该作者
  P31 = !P31; //测试PWM端口
回复

使用道具 举报

板凳
ID:878061 发表于 2022-1-11 21:01 | 只看该作者
不要操作P3.1,换个IO口,因为串口空闲状态为高电平,遇到低电平就会开始判断起始位

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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