标题: 单片机串口怎么接受不到数据? [打印本页]

作者: 格式化无悔    时间: 2023-5-19 10:01
标题: 单片机串口怎么接受不到数据?
void Usart() interrupt 4
{
    u8 receiveData;
    receiveData= Weight_Shiwu;
//     receiveData=SBUF;//出去接收到的数据
//    RI = 0;//清除接收中断标志位
    SBUF=receiveData;//将接收到的数据放入到发送寄存器
    while(!TI);             //等待发送数据完成
    TI=0;                         //清除发送完成标志位
   
}
作者: 格式化无悔    时间: 2023-5-19 10:14
void UsartInit()  {      SCON=0X50;            //设置为工作方式1      TMOD=0X20;            //设置计数器工作方式2      PCON=0X80;            //波特率加倍      TH1=0XF3;                //计数器初始值设置,注意波特率是4800的      TL1=0XF3;      ES=1;                        //打开接收中断      EA=1;                        //打开总中断      TR1=1;                    //打开计数器  }
作者: 小牢头    时间: 2023-5-19 12:17
通讯的要看2方设置和晶振
作者: 最后一个夏天1    时间: 2023-5-19 12:47
检查下波特率和接线吧
作者: yxtao    时间: 2023-5-19 13:11
查看一下初始化有没有问题,然后看看串口有没有收到实际的数据
作者: yzwzfyz    时间: 2023-5-19 14:50
通讯是双方的事,需要双方满足条件。单独讨论一方无意义。
作者: 格式化无悔    时间: 2023-5-19 15:05
yxtao 发表于 2023-5-19 13:11
查看一下初始化有没有问题,然后看看串口有没有收到实际的数据

串口没有收到数据
作者: xuyaqi    时间: 2023-5-19 18:29
你的串口中断只是发送,没有接收。
作者: LXJG    时间: 2023-5-19 23:11
串口有没有初始化,或者引脚接的不对
作者: TTQ001    时间: 2023-5-20 08:32
请让我们看看设置和初始化串口的代码。
作者: ydatou    时间: 2023-5-20 09:55

串口中断的写法如图所示。
如楼主只想把接收的数据转发回去,SBUF = receiveData;此行注释去除就行。
如果想正常使用串口发送,要添加如下代码:
  1. //注意串口初始化要有TI=1;
  2. char putchar (char c)
  3. {
  4.         while(!TI);
  5.         TI=0;
  6.         SBUF = c;
  7.         return c;
  8. }
复制代码




作者: kk17328    时间: 2023-6-1 08:25
波特率没有设置对,一般都是这种低级问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1