久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3190|回復: 7
打印 上一主題 下一主題
收起左側

我的單片機串口通信,目的是發送什么就接受什么,程序總是出現問題

[復制鏈接]
跳轉到指定樓層
樓主
50黑幣
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4.         

  5. void main()
  6. {
  7.         TMOD=0x20;                //選擇定時器1工作方式2-8位自動重裝
  8.         TH1=0xe8;
  9.         TL1=0xe8;                        //設置波特率=((2^smod)* F)/(32*12*(256-N)=9600                //smod=0
  10.         REN=1;
  11.         SM0=0;                                //選擇串口通信模式1
  12.         SM1=1;
  13.         TR1=1;                                //定時器1開啟
  14.         EA=1;                                        //中斷總開關
  15.         ES=1;                                        //串行中斷允許位
  16.         while(1);
  17. }        

  18. void inter()interrupt 4
  19. {
  20.                 uchar s;
  21.                 RI=0;                //接收
  22.                 s=SBUF;
  23.                 RI=0;
  24.                 SBUF=s;
  25.                 while(!TI);
  26.                 TI=0;
  27. }
復制代碼
接收和發送內容不對等,如圖

2022-02-28_080828.png (35.9 KB, 下載次數: 87)

2022-02-28_080828.png

2022-02-28_080723.png (33.49 KB, 下載次數: 85)

2022-02-28_080723.png

最佳答案

查看完整內容

你沒弄清楚51 串口中斷要求,你收發都寫到一起了,造成中斷嵌套了。1、無論收發都會進中斷;2、發一般寫到主程序,包括TI清零;3、額外提醒,中斷中對RI要先判斷啊,否則發信觸發中斷也讀一遍成什么了。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:844772 發表于 2022-2-27 16:00 | 只看該作者
你沒弄清楚51 串口中斷要求,你收發都寫到一起了,造成中斷嵌套了。1、無論收發都會進中斷;2、發一般寫到主程序,包括TI清零;3、額外提醒,中斷中對RI要先判斷啊,否則發信觸發中斷也讀一遍成什么了。
回復

使用道具 舉報

板凳
ID:625730 發表于 2022-2-27 16:44 | 只看該作者
出現的是什么問題? 一般是先把串口配置好之后,SM0=0;SM1=1;再REN=1;,允許串口接收。
回復

使用道具 舉報

地板
ID:997450 發表于 2022-2-28 08:12 | 只看該作者
TEC 發表于 2022-2-27 16:44
出現的是什么問題? 一般是先把串口配置好之后,SM0=0;SM1=1;再REN=1;,允許串口接收。

圖片發了,有沒有可能是編碼問題?我用的Keil
回復

使用道具 舉報

5#
ID:301191 發表于 2022-2-28 15:53 | 只看該作者
頂一下
回復

使用道具 舉報

6#
ID:1007106 發表于 2022-2-28 16:27 | 只看該作者
先配置好串口
回復

使用道具 舉報

7#
ID:466505 發表于 2022-2-28 17:10 | 只看該作者
中斷要判定是接收中斷還是發送中斷
回復

使用道具 舉報

8#
ID:143186 發表于 2022-3-3 11:10 | 只看該作者
不要發送123,用兩位數試一下,例如發送12,看返回什么
回復

使用道具 舉報

9#
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. }
復制代碼


僅供參考
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天爽天天操 | 麻豆亚洲 | 日韩一区二区三区视频 | 国产欧美精品一区二区三区 | 激情一区二区三区 | 欧美区日韩区 | 国产精品免费一区二区 | 久久久久亚洲精品中文字幕 | 亚洲国产一区视频 | 欧美日韩精品久久久免费观看 | 亚洲精品视频导航 | 久久久久久久久久久丰满 | 国产免费观看久久黄av片涩av | 欧美成人二区 | 久久久久久久久久久蜜桃 | 国产精品国产精品 | 欧美日韩综合一区 | 天天操妹子 | 久久久夜色精品亚洲 | 高清视频一区二区三区 | 天天玩夜夜操 | 亚洲一区二区三区四区五区中文 | 精品一区二区三区四区在线 | 亚洲精美视频 | 日日干夜夜操 | 国产精品久久久久久久久久久久久久 | 久久99精品久久久久久国产越南 | 我要看黄色录像一级片 | 午夜在线视频 | 日韩中文字幕一区二区 | 欧美jizzhd精品欧美巨大免费 | 国产精品中文字幕在线播放 | 黄色成人免费在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 日韩欧美福利视频 | 免费成人高清在线视频 | 国产乱码精品一区二区三区五月婷 | 亚洲人成人网 | 日本欧美视频 | 日韩欧美国产不卡 | 精品久久香蕉国产线看观看亚洲 |