单片机与RS232进行通信 一直接收不到数据

[复制链接]
759|13
手机看帖
扫描二维码
随时随地手机跟帖
zhanglli|  楼主 | 2018-12-4 14:43 | 显示全部楼层 |阅读模式
单片机与RS232进行通信 一直接收不到数据
lium| | 2018-12-4 14:47 | 显示全部楼层

楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
zhanglli|  楼主 | 2018-12-4 14:51 | 显示全部楼层
#include <51.h>
#define uchar unsigned  char
#define uint unsigned int
uchar trdata[]={0xaa,0x01,0x03,0x0f,0x00,0x05};
uchar rece;
uchar j;
//uchar  code trdata1[]={'R','I','C','H','M','C','U',0x0d,0x0a,0x00};
uchar flag=1;
void delay1ms(uint i)
{
uchar j;
         while(i--)
         {
                 for(j=0;j<115;j++)          //1ms基准延时程序
                 {
                  ;
                 }
         }
}
main()
{
uchar i;
SCON= 0x50;                //串口方式允许接收
//SM0=0;
//SM1=1;
//REN=0;
PCON= 0x00;                     //SMOD=0
TMOD= 0x20;                //定时器1定时方式2
TH1= 0xfd;                //11.0592M 9600波特率
TL1= 0xfd;
TR1= 1;                  //启动定时器
EA=1;
  while(1)
        {
          if(flag==1){
            ES=0;
            i=0;
        while(trdata!=0x05)
                    {
                                P0=trdata;
                            SBUF=trdata;
                          while(!TI);
                          TI=0;
                          i++;
                                delay1ms(1000);
                }
                  if(i>4)
                    {
                        flag=0;
                        ES=1;
                     }
                        }
        }
}
void INT_UartRcv(void) interrupt 4
{
    if(RI==1){
    RI=0;
        rece=SBUF;
        P0=0xff;
        j++;
        delay1ms(100);
//        bulb=1;
//        bulb1=1;
        if(j>12){
          flag=1;
          j=0;
          ES=0;
          }
         }
}

使用特权

评论回复
hanwe| | 2018-12-4 14:54 | 显示全部楼层
把你的程序画成流程框图,你就知道问题在哪里了

使用特权

评论回复
yufe| | 2018-12-4 14:57 | 显示全部楼层
是仿真实现的吗?发一下原理图看看,帮你改一下

使用特权

评论回复
llia| | 2018-12-4 15:01 | 显示全部楼层
这个传感器的端口为RS232端口,通信协议是ASC2码

使用特权

评论回复
wangpe| | 2018-12-4 15:03 | 显示全部楼层
传感器和电脑相连通过串口调试助手可以看到返回的数据,但是希望通过程序发送指令并接收返回的值。

使用特权

评论回复
langgq| | 2018-12-4 15:06 | 显示全部楼层
不知道程序出现什么问题了,这个程序的中断进不去,应该就是没有返回数据。

使用特权

评论回复
wangzsa| | 2018-12-4 15:09 | 显示全部楼层
如果有串口调试助手可以采集到数据

使用特权

评论回复
zhuww| | 2018-12-4 15:12 | 显示全部楼层

不是很清楚传感器内部是怎么进行收发的。

使用特权

评论回复
lium| | 2018-12-4 15:16 | 显示全部楼层

仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。

使用特权

评论回复
guoyt| | 2018-12-4 15:19 | 显示全部楼层
在中断函数里加一些打印信息,看看进没进中断函数。

使用特权

评论回复
hanwe| | 2018-12-4 15:22 | 显示全部楼层
中断中加断点仿真中断就更能清楚查问题了。

使用特权

评论回复
zhanglli|  楼主 | 2018-12-4 15:26 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1016

主题

9386

帖子

1

粉丝