51单片机串行口通信数据丢失问题

来自:    更新日期:早些时候
51单片机串口通信上位机接收数据丢失,怎么解决~

数据丢失多半是因为中断造成的,当串口通讯时,系统被其他中断占用了,那么就会出现数据丢失的情况,所以为了保险,可以采取以下措施:
1、将串口中断优先级设为最高。
2、增加反馈信号,DTR和DSR两个信号可以用起来。

有点看不懂啊,楼主代码写得不错,对串口肯定掌握的很好了。

不过我看着好像没有起始端跟终止端啊,代码好高深值得学习,本来还想让你加个校验位的,我太无知了,帮不到您了

中断服务程序占用时间太长,将网EEPROM写的程序放在外边,另外,需要开辟一个接收缓冲区,否则有可能丢失数据,用串口助手是没有握手的,所以PC没有多长时间的等待,你来不及接收就丢失了。

eeprom的速度太慢了,增加缓冲或使用flash存储!

多谢您了,我试过将往EEPROM写的程序放在外边,可是还会有这种状况,是因为没开辟缓冲区吗?还有我发的数据会有30K左右大小,需要开辟多大的缓冲区呢?多谢多谢了~
这你要试试看,因为这跟你写EEPROM的快慢有关,还有与你采用的单片机有关,有的单片机有内部扩展RAM,当然可以开得大些,一般的单片机最多就只有很少的20H~FFH这么些可用RAM,不过我建议你开个64个字节的缓冲区试试,估计足够用了,注意先进先出的存取缓冲区。


51单片机串行口通信数据丢失问题视频

相关评论:
  • 1721279647751单片机串行口通信数据丢失问题
    薛聂超中断服务程序占用时间太长,将网EEPROM写的程序放在外边,另外,需要开辟一个接收缓冲区,否则有可能丢失数据,用串口助手是没有握手的,所以PC没有多长时间的等待,你来不及接收就丢失了。

  • 1721279647751单片机串口通信上位机接收数据丢失,怎么解决
    薛聂超数据丢失多半是因为中断造成的,当串口通讯时,系统被其他中断占用了,那么就会出现数据丢失的情况,所以为了保险,可以采取以下措施:1、将串口中断优先级设为最高。2、增加反馈信号,DTR和DSR两个信号可以用起来。

  • 17212796477为什么我对51单片机复位之后串口通信第一次传送数据为第一位为空,led...
    薛聂超应该是复位时状态不稳,加之程序没有处理好造成的,为避免出现这个情况,可以在程序开始,将参数手动设置一下,比如:TI=0;RI=0;将波特率、定时器等设置完之后再启动串口。

  • 1721279647751单片机与PC进行串口通信,用串口调试工具显示数据没数据。。。
    薛聂超首先检测你的硬件电路。方法是,拔掉你的单片机,把RXD和TXD脚短路。然后在串口调试助手里面,选任意波特率发送任意字符,如果收到的是发送的内容,则能肯定MAX232和RS-232之间连接正确。接下来就要检查你的程序了 最容易出问题的就是波特率了。如果你用12M的晶振,那么,最好设置波特率为1200 或 2400。

  • 1721279647751单片机与计算机串口通信无法读出数据?
    薛聂超答:1 判断你的硬件有没有问题;方法是 用跳线讲串口的pin2 和pin3短接,用串口调试助手发送数据看调试助手能不 能自己收到,能就说明是单片机程序有问题 2 你检查你的波特率是生成程序是否正确, 中断和主程序用 1楼给你程序,我看了 没问题。这样就可以实现串口通信了 ...

  • 17212796477两个51单片机485串口通信接收数据出错原因?大概发送三、五次会有一次...
    薛聂超1.有人在发送数据之前,先关闭了串口中断!等待发送完毕后,再打开串口中断。这样,在发送数据的等待期间内,如果收到了数据,将不能进入中断函数,也就不会保存的这个新收到的数据。这种处理方法,就会遗漏收到的数据。2.有人在发送数据之前,并没有关闭串口中断,当 TI = 1 时,是可以进入中断...

  • 1721279647751单片机串口发送数据时会产生中断吗
    薛聂超如果开了串口中断,接收,发送都会产生中断。建议,都用中断方式。串口接收到数据后,如果没有读出来,又接收到数据了,前面的一个数据就丢掉了。特别是当你接收到字符串的时候,你关中断,或者用查询方式,就容易掉数据。

  • 1721279647751单片机串口通讯(模式1)问题:发送内容前半部分出错,后半部分正确。错...
    薛聂超ET1=1;此语句是罪魁祸首,定时器1已经作为串口波特率发生器了,就不能做其他用途了,此时定时必须禁止中断,而你程序中恰恰相反,来了句ET1=1;开启了定时器1中断,导致串口波特率发生混乱。那当然串口通信会有问题了,删掉ET1=1;该语句即可。

  • 17212796477这个51单片机串口通讯程序为什么接受不了数据?
    薛聂超首先,你的程序没有问题,不能接收数据,从以下几个原因找:1、这是在实验板上做测试吗,那看一下实验板上单片机的晶振频率是不是11.0592MHz,必须是这个频率,否则就无法接收数据。2、实验板的单片机要接收数据,你是怎么向单片机发数据的,是用电脑发的吗,在电脑是用串口助手发的吗。你这程序是...

  • 1721279647751单片机串口连接到电脑上计算机无法显示com端口如何解决(51单片机接收...
    薛聂超5. 51单片机串口打开失败 IE = 0x90;把里面的上面那句去掉,就行了。把ES=1,再来一个IE = 0x90;实际上ES=0了 6. 51单片机串口接收数据的处理程序 3.比如读取内存地址0x22中的数据 C语言中对于内存的访问是基于指针的,这个毋庸置疑,具体操如下 unsigned int *p= (unsigned int*)0x...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网