找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 908|回复: 4
收起左侧

能不能帮我看看为什么数据后接收不到?

[复制链接]
ID:955868 发表于 2021-9-23 16:44 | 显示全部楼层 |阅读模式
  1. #include "reg52.h"

  2. void ConfigUART(unsigned int baud);

  3. void main()
  4. {
  5.     EA = 1;
  6.     ConfigUART(9600);
  7.     while(1);
  8. }

  9. void ConfigUART(unsigned int baud)
  10. {
  11.     SCON = 0x50;//配置为模式1
  12.     TMOD &= 0xf0;
  13.     TMOD |= 0x20;
  14.     TH1 = 256 - (11059200/12/32)/baud;
  15.     TL1 = TH1;
  16.     ET1 = 0;//利用T1中断来进行接收(发送)完成的中断,所以要禁用T1的计时器中断
  17.     TR1 = 1;
  18. }

  19. void InterruptUART() interrupt 4
  20. {
  21.     if(RI)
  22.    {
  23.       RI = 0;
  24.       SBUF = SBUF + 1;//将接收的数据+1再发回去
  25.    }       
  26.     if(TI)
  27.    {
  28.       TI = 0;
  29.    }
  30. }
复制代码


屏幕截图 2021-09-23 164334.png
回复

使用道具 举报

ID:624769 发表于 2021-9-23 17:34 | 显示全部楼层
ES = 1   呢????
回复

使用道具 举报

ID:161164 发表于 2021-9-23 17:46 | 显示全部楼层
  1. #include "reg52.h"

  2. void ConfigUART(unsigned int baud);
  3. unsigned char TBUF;
  4. void main()
  5. {
  6.     EA = 1;
  7.     ConfigUART(9600);
  8.     while(1)
  9.                 {
  10.                         if(TBUF)//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  11.                         {
  12.                                 SBUF = TBUF;
  13.                                 TBUF = 0;
  14.                         }
  15.                 }
  16. }

  17. void ConfigUART(unsigned int baud)
  18. {
  19.     SCON = 0x50;//配置为模式1
  20.     TMOD &= 0x0F;//错1<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  21.     TMOD |= 0x20;
  22.     TH1 = 256 - (11059200/12/32)/baud;
  23.     TL1 = TH1;
  24.     ET1 = 0;//利用T1中断来进行接收(发送)完成的中断,所以要禁用T1的计时器中断
  25.     TR1 = 1;
  26.     ES = 1;//错2<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  27. }

  28. void InterruptUART() interrupt 4
  29. {
  30.     if(RI)
  31.    {
  32.       RI = 0;
  33.       TBUF = SBUF + 1;//将接收的数据+1再发回去//错3<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  34.    }      
  35.     if(TI)
  36.    {
  37.       TI = 0;
  38.    }
  39. }
复制代码
错1:不是TMOD &= 0xF0;
错2:没有开启串口中断
错3:最好不要在串口中断中对SBUF赋值
回复

使用道具 举报

ID:514901 发表于 2021-9-24 09:04 | 显示全部楼层
EA = ES = 1;
回复

使用道具 举报

ID:968007 发表于 2021-9-24 17:19 | 显示全部楼层
你要加上EAES都等于1
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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