请问下为什么我的串口一上电就一直在接收数据

[复制链接]
7783|17
 楼主| x_catl 发表于 2010-9-2 13:25 | 显示全部楼层 |阅读模式
请问下为什么我的串口一上电就一直在接收数据,而且都是十六进制的00




/******* 通用定义区 ********/
/***************************/
#include <pic.h>      // 所有子程序必须包含此头文件,以方便以后写工程文件时将所有的子头文件包含在config.h中
#include <stdlib.h>
         
typedef unsigned char  uint8;                   /* defined for unsigned 8-bits integer variable  无符号8位整型变量  */
typedef signed   char  int8;                    /* defined for signed 8-bits integer variable  有符号8位整型变量  */
typedef unsigned short uint16;                  /* defined for unsigned 16-bits integer variable  无符号16位整型变量 */
typedef signed   short int16;                   /* defined for signed 16-bits integer variable   有符号16位整型变量 */
typedef unsigned int   uint32;                  /* defined for unsigned 32-bits integer variable  无符号32位整型变量 */
typedef signed   int   int32;                   /* defined for signed 32-bits integer variable   有符号32位整型变量 */
typedef float          fp32;                    /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
typedef double         fp64;                    /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */

/*********************************************************************************************************
** 函数名称 :UART_INIT()
** 函数功能 :串口初始化
** 入口参数 :无        
**     
** 出口参数 :无
**********************************************************************************************************/
void UART_INIT()
{
TRISC=0Xff;
SPBRG=38;
BRGH=1;
SYNC=0;
SPEN=1;
RCIE=1;
PEIE=1;
GIE=1;
CREN=1;   
}
/*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :主函数
** 入口参数 :无        
**     
** 出口参数 :无
**********************************************************************************************************/
void main()
{
while(1)
{  
}
}
/*********************************************************************************************************
** 函数名称 :interrupt
** 函数功能 :中断
** 入口参数 :无        
**     
** 出口参数 :无
**********************************************************************************************************/
void interrupt usart()
{
uint8 mmm;
if(RCIF&&RCIE)
{
  RCIF=0;
  mmm=RCREG;  //原路返回数据给PC
  TXREG=mmm;
  while(!TRMT);
}
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| x_catl 发表于 2010-9-2 13:26 | 显示全部楼层
上面是写的最简单程序,不知道怎么突然出问题,郁闷,请各位路过好汉解答下啊,谢了
yewuyi 发表于 2010-9-2 13:36 | 显示全部楼层
检查232口线的连接,如果在悬空的状态下比较容易出现0X00或者0XFF的问题,另外很多串口调试助手存在这个问题,实则是高阻状态的感应电压造成的问题。

可以接上拉或者下拉电阻后再看是否存在这个问题。
 楼主| x_catl 发表于 2010-9-2 13:51 | 显示全部楼层
我的系统上面不加电,然后我就用串口调试助手自动发,出现下面的情况,能够直接返回到PC数据,而且数据量是从PC传出量的一半

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| x_catl 发表于 2010-9-2 13:52 | 显示全部楼层
3# yewuyi


请问在哪里加下拉电阻呢
yewuyi 发表于 2010-9-2 16:25 | 显示全部楼层
我的系统上面不加电,然后我就用串口调试助手自动发,出现下面的情况,能够直接返回到PC数据,而且数据量是从PC传出量的一半
x_catl 发表于 2010-9-2 13:51


系统未上电时与232芯片连接脚一般处于高阻状态,此时很容易有感应电压,如果通电后不出现错误发送,则可忽略。
jdylyn 发表于 2010-9-2 16:30 | 显示全部楼层
3# yewuyi  


请问在哪里加下拉电阻呢
x_catl 发表于 2010-9-2 13:52
同问
yewuyi 发表于 2010-9-3 08:35 | 显示全部楼层
数据脚
 楼主| x_catl 发表于 2010-9-3 09:11 | 显示全部楼层
单片机的TXD,RXD,还是PC的TXD,RXD,还是都要接?


8# yewuyi
 楼主| x_catl 发表于 2010-9-3 09:29 | 显示全部楼层
搞定了,在单片机的TXD和RXD上各接1个1K的上拉电阻,谢谢yewuyi!
yewuyi 发表于 2010-9-3 10:35 | 显示全部楼层
搞定了,在单片机的TXD和RXD上各接1个1K的上拉电阻,谢谢yewuyi!
x_catl 发表于 2010-9-3 09:29


如果通信速度不快的话,适当加大到10K以上。
hotpower 发表于 2010-9-3 17:43 | 显示全部楼层
提问说出结果难得。
ocon 发表于 2010-9-4 14:01 | 显示全部楼层
提问说出结果难得。
hotpower 发表于 2010-9-3 17:43
:victory:
headwolf_83 发表于 2010-9-22 22:31 | 显示全部楼层
硬件连接问题的可能性比较大,包括你的串口线有问题。比如交叉线和延长线没搞清楚。
lou0908 发表于 2010-9-28 21:59 | 显示全部楼层
好贴,我也遇到这种情况,学习了
大雄 发表于 2010-9-28 22:00 | 显示全部楼层
1# x_catl
fdfdfd
lx20150828 发表于 2015-10-23 10:21 | 显示全部楼层
yewuyi 发表于 2010-9-3 10:35
如果通信速度不快的话,适当加大到10K以上。

我的加了上拉电阻也不行。一直在接收数据。但不是00,乱七八糟都有,求帮助。。。。怎么办
cxb_880905 发表于 2015-11-3 12:37 | 显示全部楼层
yewuyi 发表于 2010-9-3 10:35
如果通信速度不快的话,适当加大到10K以上。

我也碰到同样的问题,谢谢你的解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

58

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部