串口接收到的数据不对,发送4个数,也只显示3个,求指点

#include<pic.h> //包含单片机内部资源预定义
#include<pic16f727.h>
#pragma config CONFIG1=0x1265
#pragma void interrupt usart(void)
void init();
void main()
{
init();
//TXREG=3;
//while(!TRMT);
while(1)
{
/*if(RCIF) //判断是否为串口接收中断
{
TXREG=RCREG; //把接收到的数据发送回去
while(TRMT==0);
}*/
}
}
void init()
{
OSCCON=0x3C; //时钟频率选择4M
PORTC=0xFF;
TRISC=0xFF;
TXSTA=0x24;//发送8位数据
RCSTA=0X90;//接收8位数据
SPBRG=0x19;//波特率设置9600
GIE=1; //开放全局中断
PEIE=1; //使能外部中断
RCIE=1;
}
void interrupt usart(void)
{
if(RCIE&&RCIF) //判断是否为串口接收中断
{
TXREG=RCREG; //把接收到的数据发送回去
while(TRMT==0);
}
}

第1个回答  2015-01-26
需要给你写一份吗追问

希望你帮我指点一下那个地方有错误

追答

需要定做可以丘上说
我id

Android 关于串口接收数据 乱码
byte[] buffer 这个参数的值本来就是你接收到的数据序列啊,例如你传一个‘U’,那么buffer[0]的值就应该是0x55,多字符就一个一个取就可以了

51单片机串行通行时 接收到的数据和发送的数据不一致
1 T1时钟初值都没配置,复位默认为0,也就是说波特率都没有配置,幸运的是两片单片机都没配置,也就是波特率刚好相等。2 单片机程序最基本运行程序就是错的,没有死循环,程序只执行了一遍,然后就胡乱运行,怎么可能按你的要求运行。建议不要改程序,还是重新学写程序,买块开发板,按照附带的例程...

...指点,我的串口程序看起来没有错误啊,却偏偏发送不到电脑上,这是为什...
另外,更重要的一点,你电脑上是用串口助手接收的吗?因为,你发送的数据是按十六进制数发送的,所以,串口助手必须显示十六进制数接收。如下图,画红圈一项打上勾。

labview中串口通讯时遇到这个问题,求帮忙指点下,怎么解决? 谢谢_百度知...
回答:你的数据采集VI 中可能 创建了一个 文件路径 ,但是这个文件名对于生成的文件是无效的,比如文件名中有,?之类的符号!

stc单片机串口测试程序,串口接收再发送问题
……你自己把逻辑锁死了。收到一回4字节序列后,flag1置位,之后发送数据。可是在发送数据的时候又会进入中断的,由于接收缓冲区中还是那4字节的序列,于是flag1再次被置位……于是乎进入永不停歇的死循环。你的串口中断应当判断一下是发送还是接收……

三菱PLC串口RS通讯时 数据丢失 是什么原因?
换串口测试软件。降低发送速度。看是你程序的问题还是串口测试软件的问题。用这个串口软件 :Serial Port Utility。

求助vb串口接收数据并显示
用 mscomm 控件 吧 他的 OnComm 事件可以接收 指定数目 的数据 还是 推荐 清华的经典书 Visual_Basic与_RS-232_串行通信控制 循序渐进,入门很好的 有 pdf 电子文档 找不到可以 联系

单片机串口接收数据包时,SBUF是怎么处理的??求大神指点。我是新手,望...
串口接收到的数据,会放在SBUF里 等收满了,会产生中断,然后你在中断里直接去SBUF里数据就好了 比如Res_data = SBUF;这样就把收到的数据取出来了

...串口通信时在串口调试助手里看到的是乱码 求指点 这是我的代码:_百...
乱码的话,一般情况是波特率不正确导致的。确认你单片机的波特率和上位机接收的波特率是一样的。上层软件的波特率设置为9600就应该可以了。

C语言串口发送只能发送一次求高手指点
\/\/所要发送的数据 uchar *p; Com_Init(); p = Buffer; while (1) { SBUF = *p; while (!TI) \/\/如果发送完毕,硬件会置位TI { _nop_(); } p++; if (*p == '\\0')

相似回答