fengyuxiaoxiao 发表于 2012-5-18 12:57:30

Protues虚拟串口通信仿真 及遇到的问题

本帖最后由 fengyuxiaoxiao 于 2012-5-18 12:59 编辑

本人新手,最近两天在搞单片机串口通信,遇到了点问题:程序是根据郭天翔的例子写的,我在自己的开发板里能够通过,但是用Protues 仿真的时候就出现问题

fengyuxiaoxiao 发表于 2012-5-18 13:00:57

程序:#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=" I get";
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0xc,39,0x5e,0x79,0x71};
ucharflag,a,i;
void init()
{
   TMOD=0x20;
   TH1=0xfd;
   TL1=0xfd;
   TR1=1;
   REN=1;
   SM0=0;
   SM1=1;
// SCON=0x50;
   EA=1;
   ES=1;

}
void main()
{P1=0xf0;
   P0=0x3f;
   P2=0xff;
   init();
   while(1)
    {
   if(flag==1)
          { ES=0;
             for(i=0;i<7;i++)
                  {   
                     SBUF=table;
                     while(!TI);
                          TI=0;
                  }
                  
              SBUF=a;
              while(!TI);
              TI=0;
                  flag=0;
                  ES=1;
                  P0=table1;
          }
   }
}
void ser()interrupt 4
{        
      RI=0;
          a=SBUF;
      flag=1;
}

fengyuxiaoxiao 发表于 2012-5-18 13:04:08

就是还没发送数据,单片机就已经接收到数据了,一次发出6个 I get,请问高手能告诉我这是什么原因?

fengyuxiaoxiao 发表于 2012-5-18 13:08:32

这是个虚拟串口工具

fengyuxiaoxiao 发表于 2012-5-18 13:09:05

attach://18408.zip

nongxiaoming 发表于 2012-5-18 13:13:36

楼主啊,protues里面那个串口是不需要MAX232做电平转换的,默认是转换过的~你接了个232是不对的~

fengyuxiaoxiao 发表于 2012-5-18 13:30:09

我删了,但是还是有问题,单片机都不发出数据了,貌似没有收到数据,收到数据数码管 应该显示的,虚拟窗口也没有 提示

fengyuxiaoxiao 发表于 2012-5-18 13:31:07

lookdown 发表于 2012-12-18 16:06:48

貌似右边的虚拟表要连rxd

路过羊圈的狼 发表于 2013-5-8 11:24:22

不知道我的回答是不是晚了点,
1貌似你的table【】中并没有7个字符。
2郭天祥的这个列子在初始化中不应该这样写,直接写SCON=0X50就不会有串口干扰的问题。
3protues仿真的时候,收集到的输入数字并不是你数字键盘上的1 2 3.....9,而是对应数字的十进制ASCII码。
页: [1]
查看完整版本: Protues虚拟串口通信仿真 及遇到的问题