本文目录一览

1,急 C51串口通信的简单基本实例 读起来有疑惑 求解释 在线

SBUF的数据是来自于上位机,初略看了一下,此为接收中断,也就是你先要接收到数据,然后再将数据发出去,那么此例子就必须有个PC或者另外一个单片机发信息给你。

急 C51串口通信的简单基本实例 读起来有疑惑 求解释 在线

2,51串口怎么接收16位数据

51串口每次只是接收8位数据。16位数据,在发送之前,分解一下,分别传送即可。 ------------如果是16字节,就必须知道,那一个是第一字节,以后收到的,顺序存放即可。单片机要等到收齐了16个字节,再进行数据处理。

51串口怎么接收16位数据

3,请问C51系列单片机或者具有C51内核的单片机具有2个以上串口的型

w77E58、W77E516STC12C5A60S2这两种是双串口的单片机,此外还有C8051F020
中断值为1 故写为void intt0() interrupt 1

请问C51系列单片机或者具有C51内核的单片机具有2个以上串口的型

4,C51如何接收和发送 串口工具 16位数据

51单片机一次只能接收1个字节数据(8位),若要接收两个字节,串口工具应该分成两字节发送。比如先发送高字节,再发送低字节。对于 100H,按十六进制发送 01 00,单片机收到第一字节数据保存起来,收到第二字节后将两个8位数合并成16位数。

5,C51单片机有几个IO口

让我来告诉你答案!不一样的,比如AT89C2051,只有P1和P3口;普通的8051有P0,P1,P2,P3四个口;STC12C5A60S2等有P0~P4口,有的封装还有P5口。
32个

6,51单片机串口通信 数据大于八位256怎么办 一旦超过就失真啦 能分开传

怎么个失真法呢?!串口通信本来一次基本发送/接收都是一个字节的,就是八位。SBUF收发寄存器是八位的,如果你发送时赋给他的值是500,SBUF也只能取500的对应二进制的低八位,不知道你说的是不是这样的溢出失真。而每一次接收后就会使RI相应置1,SBUF缓存着刚刚接收的一个字节数据,要及时转存处理,要不然下次发送/接收又会被新的数据代替。就这样一个一个字节的重复就形成许多字节的连续收发。串口这东西很好用的,通信也很方便的很多地方会用到。

7,求助C51 串口多字节接收及比较

用字符串比较函数strcmp(table,tab)即可 如果一样返回0否则返回相差的值。最简单的方法直接for(i=0;i<4;i++) if(table[i]>tab[i]) //大于时的处理方法 } else if(table[i]==tab[i]) //等于时的处理方法 } else //小于时的处理方法 }}
拿出来比就是啦if(table[0]>tab[0])...}

8,在c51单片机串口通讯时的问题sendchar什么意思temp为什么要

这是在哪看到的程序吗?这是当收到一个字节的数据后,返回四个字节的数据,send_char( ); 这是一个发送数据的子程序,调用这个子程序就发送一个字节的数据,而temp 是16位数,一次发不了,要分成高8位和低8位,发送两次,而temp/256 就是取temp的高8位,而temp%256是取低8位。同理,humi/256,humi%256,也是分别取高8位和低8位发送。
搜一下:在c51单片机串口通讯时的问题,send_char什么意思,temp为什么要对256取整,取余。temp时无符号整型。再看看别人怎么说的。

9,C51如何接收和发送 串口工具 16位数据

51单次只能发送一个字节,8位,对于大于一个字节的数据,都是作为数据流处理,由单片机和上位机根据事先约定的通讯协议进行解析。16位数据就是2个字节,发两次即可,至于高字节在前还是低字节在前,根据双方约定就可以了。
51单片机一次只能接收1个字节数据(8位),若要接收两个字节,串口工具应该分成两字节发送。比如先发送高字节,再发送低字节。对于 100H,按十六进制发送 01 00,单片机收到第一字节数据保存起来,收到第二字节后将两个8位数合并成16位数。
51单次只能发送一个字节,8位,对于大于一个字节的数据,都是作为数据流处理,由单片机和上位机根据事先约定的通讯协议进行解析。16位数据就是2个字节,发两次即可,至于高字节在前还是低字节在前,根据双方约定就可以了。再看看别人怎么说的。

10,C51单片机串口通信

串口助手因为没有握手信号的关系,所以发送数据是没有等待的,因此,单片机端接受需要开辟缓冲区才可以保证数据不丢失。用C的话就,你就用一个数组来做就OK了。#include<reg51.h>#define uchar unsigned charuchar getdat[16],getp,putp;sbit LED=P1^0;void serisr() interrupt 4if(RI) RI=0; getdat[putp]=SBUF; putp++; putp&=0x0f; }}main() uchar comd[5],i; TMOD=0x20; SCON=0x50; TH1=0xfd; TL1=0xfd; TR1=1; EA=1; getp=putp=0; while(1) if(getp!=putp) comd[i]=getdat[getp]; i++; getp++; getp&=0x0f; } if(i==2) i=0; if((comd[0]==0x1b))&&(comd[1]==0x31)&&(comd[2]==0x01))LED=0; if((comd[0]==0x1b))&&(comd[1]==0x30)&&(comd[2]==0x02))LED=1; }}
如果每隔一段时间led亮灭一次的话,比如亮一秒灭一秒吧,你可以定时1秒,送个高电平给口线,然后再定时1秒,把高电平取反给口线,如此循环就行了。
不是很简单吗?在接收中断里面加个计数器,接收完3个字节数据后再对数据进行处理。
你这个是这样的,你检测两个和检测三个的长度改了吗? 我的意思是,如果你检测00两位的数组长度没有变, 那么你发三次就会变成01. 另外一种可能是,串口发送的时候,空格是不计的。电脑发送的,你程序里面判定要有空格了。 发你判定接受数据代码上来
1.c51单片机中,串口通信属于rs232,rs422,rs485等标准的通讯范畴2、一般在一个具有硬件控制或工业控制分布式网络环境,采用串口通讯较多,一般配置一可以和下位机通讯的上位机程序3、更多交流参考我空间主页有关文章

文章TAG:c51串口有多少位串口  多少  串口通信  
下一篇