找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2202|回复: 9
收起左侧

Proteus8.13版本仿真单片机串口只能发送,不能接收问题

[复制链接]
ID:647261 发表于 2023-6-13 10:08 | 显示全部楼层 |阅读模式
我用的是proteus 8.13版本,串口总是只能发送,不能接收,搞了我好多天了
刚刚突然看到论坛上有个网友说8.13版本的串口就是不能接收的
想请教一下,目前哪个版本比较好用?
串口实验如下:
按键按一下,另一个单片机上的数显示加1
原理图,可以看到发送的时候,SBUF已经有数据了:
11.jpg

代码:
两个单片机的代码是一样的,频率也设置成了11.0592MHz了
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit key = P3^7;
  5. uchar DATA,num;

  6. void delay10ms(uint n)
  7. {
  8.    uchar i,j;
  9.    for(;n>0;n--)
  10.    {
  11.       for(i=0;i<18;i++)
  12.       {
  13.          for(j=0;j<184;j++){;}
  14.       }
  15.    }
  16. }

  17. void UART_init(void)
  18. {
  19.    SCON = 0X50;
  20.    TMOD = 0X20;
  21.    PCON = 0X00;
  22.    TH1  = 0XFD;                //波特率9600,@11.0592MHz
  23.    TL1  = 0XFD;
  24.    ET1  = 0;
  25.    TR1  = 1;
  26.    EA   = 1;
  27.    ES   = 1;
  28. }

  29. void UART() interrupt 4
  30. {
  31.    if(RI)
  32.    {
  33.       RI=0;
  34.       DATA = SBUF;
  35.    }
  36.    if(TI)
  37.    {
  38.       TI=0;
  39.    }  
  40. }

  41. void main(void)
  42. {
  43.    UART_init();
  44.    num  = 0x00;
  45.    DATA = 0x00;
  46.    P2   = 0x00;
  47.    while(1)
  48.    {
  49.       P2 = DATA/10 << 4 | DATA%10;         //数码管显示接收的数
  50.           if(!key)                        //检测按键按下
  51.           {
  52.                   delay10ms(1);
  53.                 if(!key)
  54.                 {
  55.                         while(!key);         //检测按键松开
  56.                         ++num;
  57.                         SBUF = num;        //发送数据
  58.                 }
  59.           }

  60.    }
  61. }
复制代码



回复

使用道具 举报

ID:161164 发表于 2023-6-13 11:05 | 显示全部楼层
附件是我收集的各版本的仿真驱动(到8.13)
把档案内的MCS8051.DLL替换掉以下档案试试
C:\Program Files\Labcenter Electronics\Proteus 8 Professional\DATA\MODELS\MCS8051.DLL MCS8051.zip (1.71 MB, 下载次数: 94)

评分

参与人数 2黑币 +25 收起 理由
admin + 20 回帖助人的奖励!
sttt300 + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:384109 发表于 2023-6-13 10:57 | 显示全部楼层
分模块单独测试吧
回复

使用道具 举报

ID:1083771 发表于 2023-6-13 12:00 | 显示全部楼层
向上兼容不太行,换个旧点的版本。
回复

使用道具 举报

ID:123289 发表于 2023-6-13 13:24 | 显示全部楼层
将RX、TX线交叉一下。
回复

使用道具 举报

ID:647261 发表于 2023-6-13 14:41 | 显示全部楼层
lkc8210 发表于 2023-6-13 11:05
附件是我收集的各版本的仿真驱动(到8.13)
把档案内的MCS8051.DLL替换掉以下档案试试
C:\Program Files\La ...

真的可以了,非常感谢!
回复

使用道具 举报

ID:1013137 发表于 2023-6-25 16:52 | 显示全部楼层
lkc8210 发表于 2023-6-13 11:05
附件是我收集的各版本的仿真驱动(到8.13)
把档案内的MCS8051.DLL替换掉以下档案试试
C:\Program Files\La ...

您好,最后一个是8.13的么?
回复

使用道具 举报

ID:161164 发表于 2023-6-26 09:37 | 显示全部楼层
xue~ 发表于 2023-6-25 16:52
您好,最后一个是8.13的么?

看档案日期,最新的就是8.13
回复

使用道具 举报

ID:108158 发表于 2024-7-11 12:00 | 显示全部楼层
替换文件后发送HEX文件,总会少一个数据
回复

使用道具 举报

ID:332444 发表于 2024-7-11 17:10 | 显示全部楼层
串口通信看我博文一个代码在7.8和8.13都可以使用。https://so.csdn.net/so/search?q= ... g&u=xianfajushi。我通常都写一个文件中接收与发送,要分开也简单。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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