找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 383|回复: 5
收起左侧

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

[复制链接]
闫新净 发表于 2020-8-24 16:04 | 显示全部楼层 |阅读模式
#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
回复

使用道具 举报

 楼主| 闫新净 发表于 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;帧头和帧尾应该是不变的,为什么用逻辑分析仪抓出来的是一直在变

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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