标题: 哪位大神可以帮忙看下为什么单片机串口接收到的DATE[0]一直在变化? [打印本页]

作者: 闫新净    时间: 2020-8-24 16:04
标题: 哪位大神可以帮忙看下为什么单片机串口接收到的DATE[0]一直在变化?
#include "UART.h"

unsigned char DATE[10];
unsigned char  i=0;
bit busy;

void Init_Uart()        //UART初始化
{
                T2L=(65536-(FOSC/4/BAUD));
                T2H=(65536-(FOSC/4/BAUD))>>8;
                SCON=0X50;                                                 //8位可变波特率
                AUXR=0X15;                                                   //T2工作在1T模式;        用定时器T2作为波特率发生器
                AUXR1=0x40;
                ES=1;
                EA=1;        
}
void senddate(unsigned char dat)                        //发送字节
{
        while(busy);
        SBUF=dat;
        busy=1;
}
void sendstring(unsigned char *s)           //发送字符串
{
        while(*s!='\0')

        {
                senddate(*s++);                        
        }
}
void UART()interrupt 4                   //UART中断
{
        if(RI)
        {
                RI=0;
                DATE[i++]=SBUF;
                if(i==8)
                {
                        i=0;
                }
        }        
        if(TI)
        {
                TI=0;
                busy=0;
        }
}





1.JPG (61.46 KB, 下载次数: 100)

1.JPG

作者: 闫新净    时间: 2020-8-24 16:06
8位数据帧如上图,帧头和帧尾接收到的数据应该是不变的,为什么用逻辑分析仪抓出来的是一直在变化 ?
作者: 闫新净    时间: 2020-8-24 16:11
STC15F2K60S2单片机,串口1;帧头和帧尾应该是不变的,为什么用逻辑分析仪抓出来的是一直在变
作者: 1692483014    时间: 2020-8-24 18:17
RX一直在收到数据,将RX和外界断开再看看?
作者: wulin    时间: 2020-8-24 20:51
闫新净 发表于 2020-8-24 16:11
STC15F2K60S2单片机,串口1;帧头和帧尾应该是不变的,为什么用逻辑分析仪抓出来的是一直在变
  1. void UART()interrupt 4                   //UART中断
  2. {
  3.         RI=0;
  4.         DATE[i]=SBUF;
  5.         if(DATE[0]==0xaa)//验证数据头
  6.         {
  7.                 i++;
  8.                 if(i>=8)
  9.                 {
  10.                         i=0;
  11.                         busy=1;        //数据串接收完成
  12.                 }
  13.         }
  14. }
复制代码

作者: 1692483014    时间: 2020-8-25 09:22
闫新净 发表于 2020-8-24 16:11
STC15F2K60S2单片机,串口1;帧头和帧尾应该是不变的,为什么用逻辑分析仪抓出来的是一直在变

应该是发送端的问题。
发送端的代码设置是如何的?几个数据位,几个停止位,有没有校验位,波特率是多少?另外,对应的,逻辑分析仪的这几个参数是否匹配?




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