找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2400|回复: 8
收起左侧

做双机串行通信的仿真出了问题

[复制链接]
ID:255495 发表于 2017-11-30 22:34 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 么么儿 于 2017-11-30 22:52 编辑

发送和接收的程序编译时都没有错误,用proteus仿真时,虚拟终端不能显示发出的数据字节,而是不停的跳这些绿色的框 QQ图片20171130225152.jpg QQ图片20171130225217.jpg
回复

使用道具 举报

ID:255495 发表于 2017-11-30 22:38 来自手机 | 显示全部楼层
第一次做双机串行通信的东西,对硬件当面真的好多地方不懂
IMG_20171130_222829.jpg
IMG_20171130_222534.jpg
回复

使用道具 举报

ID:222948 发表于 2017-12-1 09:18 | 显示全部楼层
第一,程序虽然编译过了,但你确保逻辑上的错误
回复

使用道具 举报

ID:222948 发表于 2017-12-1 09:19 | 显示全部楼层
第二应该试着去其他电脑试一下,因为仿真有时候也会出错的

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:111634 发表于 2017-12-1 10:16 | 显示全部楼层
本帖最后由 zl2168 于 2017-12-1 10:19 编辑

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

使用道具 举报

ID:255495 发表于 2017-12-1 10:33 来自手机 | 显示全部楼层
999333 发表于 2017-12-1 09:19
第二应该试着去其他电脑试一下,因为仿真有时候也会出错的

在舍友的电脑上也试了,不行
回复

使用道具 举报

ID:222948 发表于 2017-12-1 11:26 | 显示全部楼层
么么儿 发表于 2017-12-1 10:33
在舍友的电脑上也试了,不行

把仿真和程序发过来我看看
回复

使用道具 举报

ID:255495 发表于 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;
         }
}这个是接收程序

这个是电路图

这个是电路图



回复

使用道具 举报

ID:255495 发表于 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;
         }
}发送程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表