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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于單片機串口接收數據后無法發送問題

[復制鏈接]
跳轉到指定樓層
樓主
大家好,新手小白。在做串口通信的時候,單獨的發送、接收能夠實現,在仿真的儀器上能看到確實接收到了數據,但始終無法在接收完成后,向外發送接收到的數據或其他字符串,查詢或中斷方式都嘗試過,不知道問題到底出在哪兒了。麻煩大家幫忙解解惑,謝謝!


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. bit flag1=0;
  5. uchar Uart1R_Buf[]=0,point1=0;
  6. void Serial_Init();
  7. void Uart1_SendChar(uchar C);
  8. void Uart1_SendStr(uchar *s);
  9. // uchar Uart1_RecieveChar();

  10. void main()
  11. {
  12. // uchar Rev;
  13. Serial_Init();
  14. while(1)
  15. {
  16. /*以查詢方式接收數據
  17. Rev=Uart1_RecieveChar();
  18. Uart1_SendStr("Rev_Data:");
  19. Uart1_RecieveChar();
  20. */
  21. /*以中斷方式接收*/
  22. if(flag1)
  23. {
  24. flag1=0;
  25. if(Uart1R_Buf[0]=='O'&&Uart1R_Buf[1]=='K')
  26. Uart1_SendStr(Uart1R_Buf);
  27. }
  28. }
  29. }

  30. void Serial_Init()
  31. {
  32. PCON=0x00;
  33. SCON=0x50;
  34. TMOD=0x20;
  35. TH1=0xFD;
  36. TL1=0xFD;
  37. TR1=0;
  38. ES=1; //允許串口中斷;
  39. EA=1;
  40. }
  41. void Uart1_SendChar(uchar C)
  42. {
  43. SBUF=C; //將數據寫入發送緩沖器,啟動發送
  44. while(!TI); //若沒有發送完畢,等待
  45. TI = 0;
  46. }
  47. void Uart1_SendStr(uchar *s)
  48. {
  49. while(*s!='\0')// \0 表示字符串結束標志,檢測是否字符串末尾
  50. {
  51. Uart1_SendChar(*s);
  52. s++;
  53. }
  54. }
  55. /*以查詢方式接收數據
  56. uchar Uart1_RecieveChar()
  57. {
  58. uchar Rev;
  59. // R=SBUF;
  60. while(!RI); //若沒有接收完畢,等待
  61. Rev=SBUF;
  62. RI = 0;
  63. return Rev;
  64. }
  65. */
  66. void Uart1_Isr() interrupt 4
  67. {
  68. if(RI==1)
  69. {
  70. RI=0;
  71. Uart1R_Buf[point1]=SBUF;
  72. if(Uart1R_Buf[point1]=='\0')
  73. {
  74. point1=0;
  75. flag1=1;
  76. }
  77. else point1++;
  78. }
  79. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:161164 發表于 2023-4-29 22:13 來自觸屏版 | 只看該作者
試試uchar Uart1R_Buf[20]=0,point1=0;
回復

使用道具 舉報

板凳
ID:924899 發表于 2023-4-30 19:35 來自觸屏版 | 只看該作者
lkc8210 發表于 2023-4-29 22:13
試試uchar Uart1R_Buf[20]=0,point1=0;

謝謝伙伴,有嘗試過像這樣給Uart1R_Buf一個10的長度,并在中斷函數中設置接收長度超過10時,讓point1重新指向0,但還是實現不了將接收到的數據再發送出去【唉想不通】
回復

使用道具 舉報

地板
ID:924899 發表于 2023-5-4 17:07 | 只看該作者
伙伴們,我嘗試用STC數據手冊上的官方例程但同樣無法實現接收后發送數據問題,而且只能實現串口1的發送,不能實現串口2的發送,求大佬指點迷津【憂桑】!
回復

使用道具 舉報

5#
ID:646520 發表于 2023-5-4 17:58 | 只看該作者
不知道你用的什么版本,說出來你可能不信,我之前用8.13的ptoteus,不管怎么仿真,單片機都收不到數據,一模一樣的環境和程序,我換了個版本就可以。
回復

使用道具 舉報

6#
ID:924899 發表于 2023-5-4 20:41 | 只看該作者
最后一個夏天1 發表于 2023-5-4 17:58
不知道你用的什么版本,說出來你可能不信,我之前用8.13的ptoteus,不管怎么仿真,單片機都收不到數據,一 ...

呃用的8.13版本,那我也換個版本試試
回復

使用道具 舉報

7#
ID:924899 發表于 2023-5-5 12:18 | 只看該作者
黑電子ABCf 發表于 2023-5-4 20:41
呃用的8.13版本,那我也換個版本試試

試了,不行,問題到底出在哪兒了呢【腦殼痛】
回復

使用道具 舉報

8#
ID:924899 發表于 2023-5-5 13:02 | 只看該作者
黑電子ABCf 發表于 2023-5-5 12:18
試了,不行,問題到底出在哪兒了呢【腦殼痛】

用了8.6版本,用官方例程能夠實現串口1的接發,但串口2還是不行,而且單獨的發送也實現不了
回復

使用道具 舉報

9#
ID:883242 發表于 2023-5-5 13:49 | 只看該作者
黑電子ABCf 發表于 2023-5-5 13:02
用了8.6版本,用官方例程能夠實現串口1的接發,但串口2還是不行,而且單獨的發送也實現不了

單獨發送都不行只能說明proteus模型不完整,上實物吧。
回復

使用道具 舉報

10#
ID:647261 發表于 2023-6-13 09:31 | 只看該作者
最后一個夏天1 發表于 2023-5-4 17:58
不知道你用的什么版本,說出來你可能不信,我之前用8.13的ptoteus,不管怎么仿真,單片機都收不到數據,一 ...

啊,這……這……這……我也是用8.13版本的,可以發送數據,就是收不到數據,我已經搞了好久了,一直搞不明白哪里出了問題,正準備搜集一下資料,再整理了好了上論壇求助呢
不知道你現在換了什么版本的,能正常串口收發呢?
感謝!
回復

使用道具 舉報

11#
ID:77589 發表于 2023-6-16 17:37 | 只看該作者
Hephaestus 發表于 2023-5-5 13:49
單獨發送都不行只能說明proteus模型不完整,上實物吧。

這個可能性很大
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜国产 | 免费一看一级毛片 | 欧美成人精品一区二区三区 | 亚洲高清在线观看 | 狠狠干夜夜草 | 日韩一区二区三区精品 | 日本精品视频一区二区 | 欧美色成人| 精品视频一区在线 | 综合精品 | 亚洲精品99 | 久久久久国产 | 国产精品久久久久久久久婷婷 | 国产精品久久久久久婷婷天堂 | 精品久久久久久久人人人人传媒 | 五月天婷婷综合 | 99热这里有精品 | 日韩欧美天堂 | 亚洲人成人一区二区在线观看 | 91大神在线资源观看无广告 | 综合久 | 一区二区av | 亚洲精品精品 | 日韩影院一区 | 日韩网| 亚洲情侣视频 | 玖玖玖av | 视频一区中文字幕 | 精品毛片视频 | 欧美综合精品 | 亚洲精品一区国语对白 | 偷拍第一页 | 久久久久久成人网 | 在线一级片 | 午夜欧美一区二区三区在线播放 | 久久久久久久久国产 | 成人一区二区三区在线观看 | 中文字幕日韩一区 | 日本一区二区三区在线观看 | 日韩精品免费视频 | 成人午夜在线 |