标题: 做双机串行通信的仿真出了问题 [打印本页]

作者: 么么儿    时间: 2017-11-30 22:34
标题: 做双机串行通信的仿真出了问题
本帖最后由 么么儿 于 2017-11-30 22:52 编辑

发送和接收的程序编译时都没有错误,用proteus仿真时,虚拟终端不能显示发出的数据字节,而是不停的跳这些绿色的框
作者: 么么儿    时间: 2017-11-30 22:38
第一次做双机串行通信的东西,对硬件当面真的好多地方不懂

IMG_20171130_222829.jpg (84.91 KB, 下载次数: 29)

IMG_20171130_222829.jpg

IMG_20171130_222534.jpg (66.19 KB, 下载次数: 25)

IMG_20171130_222534.jpg

作者: 999333    时间: 2017-12-1 09:18
第一,程序虽然编译过了,但你确保逻辑上的错误
作者: 999333    时间: 2017-12-1 09:19
第二应该试着去其他电脑试一下,因为仿真有时候也会出错的
作者: zl2168    时间: 2017-12-1 10:16
本帖最后由 zl2168 于 2017-12-1 10:19 编辑

给你介绍一个正确有效的案例,自己对照查错吧!
Proteus仿真一下,确认有效。
实例77  双机串行通信方式1
实例77 双机通信方式1.rar (40.4 KB, 下载次数: 21)


实例78  双机串行通信方式2 实例78 双机通信方式2.rar (46.57 KB, 下载次数: 4)
实例79  双机串行通信方式3 实例79 双机通信方式3.rar (45.3 KB, 下载次数: 2)
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。


作者: 么么儿    时间: 2017-12-1 10:33
999333 发表于 2017-12-1 09:19
第二应该试着去其他电脑试一下,因为仿真有时候也会出错的

在舍友的电脑上也试了,不行
作者: 999333    时间: 2017-12-1 11:26
么么儿 发表于 2017-12-1 10:33
在舍友的电脑上也试了,不行

把仿真和程序发过来我看看
作者: 么么儿    时间: 2017-12-1 14:48
999333 发表于 2017-12-1 11:26
把仿真和程序发过来我看看

#include<reg52.h>                 
#define uchar unsigned char
#define uint unsigned int  
void delayms(uchar n)
{
uchar m,s;
for(m=n;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()
{
Init_Com();         //初始化
delayms(40); //延时等待

while(1)
  {

  do{
     SBUF=0XAA;          //发送AAH
           while(!TI);
         TI=0;
         while(!RI);
         RI=0;
     }

        while(SBUF!=0XBB); //等待接收乙发送的BBH

   do{                           //发送P1口状态
     SBUF=P1;
           while(!TI);
         TI=0;
         SBUF=0XFF;
         while(!TI);
         TI=0;
         while(!RI);
         RI=0;
     }
    while(SBUF!=0XFF);
  }
}这个是发送程序
#include<reg52.h>                 //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型
void delayms(uchar n)
{
uchar m,s;
for(m=n;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()
{
Init_Com();         //初始化
delayms(40); //延时等待

while(1)
  {

  do{
     while(!RI);//等待接收中断置位
         RI=0;                //中断清零
     }

       while(SBUF!=0XAA);

        do{                          
         SBUF=0XBB;        //向甲发送BBH
           while(!TI);
         TI=0;
         while(!RI);
         RI=0;
         P2=SBUF;
         while(!RI);
         RI=0;
     }
    while(SBUF!=0XFF);

     SBUF=0xFF;
           while(!TI);
         TI=0;
         }
}这个是接收程序




作者: 么么儿    时间: 2017-12-1 14:50
#include<reg52.h>                 //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型
void delayms(uchar n)
{
uchar m,s;
for(m=n;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()
{
Init_Com();         //初始化
delayms(40); //延时等待

while(1)
  {

  do{
     while(!RI);//等待接收中断置位
         RI=0;                //中断清零
     }
   
       while(SBUF!=0XAA);

        do{                          
         SBUF=0XBB;        //向甲发送BBH
           while(!TI);
         TI=0;
         while(!RI);
         RI=0;
         P2=SBUF;
         while(!RI);
         RI=0;
     }
    while(SBUF!=0XFF);
                 
     SBUF=0xFF;
           while(!TI);
         TI=0;
         }
}发送程序




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1