找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 360|回复: 7
收起左侧

请教仿真单片机串口通讯甲机能发,乙机不能接收的问题

[复制链接]
ID:891876 发表于 2024-1-8 10:18 | 显示全部楼层 |阅读模式

请大家帮我看看,仿真串口能正常发送,但接收不到数据不知为何?

101.JPG

单片机源程序如下:
发送:
  1. #include <STC89C5xRC.H>
  2. #include<intrins.h>

  3. void Delay(unsigned int xms)                //@11.0592MHz
  4. {
  5.         unsigned char i, j;
  6.         while(xms--)
  7.         {
  8.                 _nop_();
  9.                 i = 2;
  10.                 j = 199;
  11.                 do
  12.                 {
  13.                         while (--j);
  14.                 } while (--i);
  15.         }
  16. }

  17. unsigned char Ledtab[16]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff,0x00};

  18. void send(unsigned char ucdata)
  19. {
  20.         SBUF = ucdata;
  21.         while(TI==0);
  22.         TI=0;
  23. }

  24. void main()
  25. {
  26.          unsigned char i;
  27.          TMOD=0X20;
  28.          SCON=0X40;
  29.          PCON=0X00;
  30.          TH1=0XFD;
  31.          TL1=0XFD;
  32.          TR1=1;
  33.          P1=0XFF;

  34.         while(1)
  35.         {
  36.                 for(i=0;i<16;i++)
  37.                  {
  38.                          P1=Ledtab[i];
  39.                          send(Ledtab[i]);
  40.                          Delay(200);
  41.                  }
  42.         }
  43.         
  44. }
复制代码


接收:
#include <STC89C5xRC.H>

unsigned char Receive()  
{
        unsigned char ucdata;
        
        while(RI==0);
                RI=0;
                ucdata = SBUF;
                return ucdata;

}


void main()
{
    TMOD=0X20;
          SCON=0X50;
          PCON=0X00;
          TH1=0XFD;
          TL1=0XFD;
          TR1=1;
          REN=1;
         P1=0XFF;
    while(1)
                 {
                         P1=Receive();
                 }

}

回复

使用道具 举报

ID:96682 发表于 2024-1-8 11:56 来自手机 | 显示全部楼层
仿真嘛假设程序电路没错还需软件的操作设置问题,
回复

使用道具 举报

ID:161164 发表于 2024-1-8 11:57 | 显示全部楼层
可能是Proteus的Bug
回复

使用道具 举报

ID:883242 发表于 2024-1-8 12:23 | 显示全部楼层
#include <STC89C5xRC.H>
这句话里面包含的SFR定义,与你用的AT89C52的SFR兼容吗?
回复

使用道具 举报

ID:891876 发表于 2024-1-8 13:20 | 显示全部楼层
改了头文件<reg52.h>也不行,难道是仿真软件的问题?
回复

使用道具 举报

ID:275826 发表于 2024-1-8 16:14 | 显示全部楼层
芙蓉焊料 发表于 2024-1-8 13:20
改了头文件也不行,难道是仿真软件的问题?

估计是两个单片机晶振不一样
回复

使用道具 举报

ID:883242 发表于 2024-1-8 16:41 | 显示全部楼层
tyrl800 发表于 2024-1-8 16:14
估计是两个单片机晶振不一样

图上都没接晶振,然而串口好用,应该是仿真软件默认振荡,两个是一样的。
回复

使用道具 举报

ID:1010435 发表于 2024-1-10 12:35 | 显示全部楼层
接收没有开总中断把 EA=1   ???
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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