找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

我的单片机串口通信,目的是发送什么就接受什么,程序总是出现问题

查看数: 3426 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-2-27 16:00

正文摘要:

#include<reg52.h> #define uchar unsigned char #define uint unsigned int          void main() {         TMOD=0x20;     &n ...

回复

ID:514254 发表于 2022-3-3 11:28
  1. #include <reg51.h>
  2. /**************************************************
  3. 接收数据中断服务子函数
  4. ***************************************************/
  5. void RXD_CHAR() interrupt 4
  6. {
  7.     unsigned char RXD_data;
  8.     if(RI==1) {                                //判断串行接收中断
  9.         RXD_data = SBUF;        //读取数据
  10.         P0 = RXD_data;                 //显示所读取的数据
  11.         RI = 0;                                //接收完毕,清中断标志
  12.     }                               
  13. }
  14. void main()
  15. {
  16.     TMOD = 0x20;                //将定时器1作为比特率的产生器
  17.     TH1  = 0xFD;                //比特率设置为9600bit/s
  18.     SCON = 0x50;                //串行工作模式为1,允许接收01010000                                  
  19.     EA = 1;                                //开总中断
  20.     ES = 1;                                //开串行中断
  21.     TR1 = 1;                        //启动定时器1
  22.    
  23.         while(1) {
  24.         ;        
  25.     }
  26. }
复制代码


仅供参考
ID:143186 发表于 2022-3-3 11:10
不要发送123,用两位数试一下,例如发送12,看返回什么
ID:466505 发表于 2022-2-28 17:10
中断要判定是接收中断还是发送中断
ID:1007106 发表于 2022-2-28 16:27
先配置好串口
ID:301191 发表于 2022-2-28 15:53
顶一下
ID:997450 发表于 2022-2-28 08:12
TEC 发表于 2022-2-27 16:44
出现的是什么问题? 一般是先把串口配置好之后,SM0=0;SM1=1;再REN=1;,允许串口接收。

图片发了,有没有可能是编码问题?我用的Keil
ID:625730 发表于 2022-2-27 16:44
出现的是什么问题? 一般是先把串口配置好之后,SM0=0;SM1=1;再REN=1;,允许串口接收。
ID:844772 发表于 2022-2-27 16:00
你没弄清楚51 串口中断要求,你收发都写到一起了,造成中断嵌套了。1、无论收发都会进中断;2、发一般写到主程序,包括TI清零;3、额外提醒,中断中对RI要先判断啊,否则发信触发中断也读一遍成什么了。

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

Powered by 单片机教程网

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