标题: 请教仿真单片机串口通讯甲机能发,乙机不能接收的问题 [打印本页]

作者: 芙蓉焊料    时间: 2024-1-8 10:18
标题: 请教仿真单片机串口通讯甲机能发,乙机不能接收的问题

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



单片机源程序如下:
发送:
  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();
                 }

}


作者: wc86110    时间: 2024-1-8 11:56
仿真嘛假设程序电路没错还需软件的操作设置问题,
作者: lkc8210    时间: 2024-1-8 11:57
可能是Proteus的Bug
作者: Hephaestus    时间: 2024-1-8 12:23
#include <STC89C5xRC.H>
这句话里面包含的SFR定义,与你用的AT89C52的SFR兼容吗?
作者: 芙蓉焊料    时间: 2024-1-8 13:20
改了头文件<reg52.h>也不行,难道是仿真软件的问题?
作者: tyrl800    时间: 2024-1-8 16:14
芙蓉焊料 发表于 2024-1-8 13:20
改了头文件也不行,难道是仿真软件的问题?

估计是两个单片机晶振不一样
作者: Hephaestus    时间: 2024-1-8 16:41
tyrl800 发表于 2024-1-8 16:14
估计是两个单片机晶振不一样

图上都没接晶振,然而串口好用,应该是仿真软件默认振荡,两个是一样的。
作者: mtt661    时间: 2024-1-10 12:35
接收没有开总中断把 EA=1   ???




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