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

標題: 關于單片機串口接收數據后無法發送問題 [打印本頁]

作者: 黑電子ABCf    時間: 2023-4-29 11:02
標題: 關于單片機串口接收數據后無法發送問題
大家好,新手小白。在做串口通信的時候,單獨的發送、接收能夠實現,在仿真的儀器上能看到確實接收到了數據,但始終無法在接收完成后,向外發送接收到的數據或其他字符串,查詢或中斷方式都嘗試過,不知道問題到底出在哪兒了。麻煩大家幫忙解解惑,謝謝!


單片機源程序如下:
  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. }
復制代碼




作者: lkc8210    時間: 2023-4-29 22:13
試試uchar Uart1R_Buf[20]=0,point1=0;
作者: 黑電子ABCf    時間: 2023-4-30 19:35
lkc8210 發表于 2023-4-29 22:13
試試uchar Uart1R_Buf[20]=0,point1=0;

謝謝伙伴,有嘗試過像這樣給Uart1R_Buf一個10的長度,并在中斷函數中設置接收長度超過10時,讓point1重新指向0,但還是實現不了將接收到的數據再發送出去【唉想不通】
作者: 黑電子ABCf    時間: 2023-5-4 17:07
伙伴們,我嘗試用STC數據手冊上的官方例程但同樣無法實現接收后發送數據問題,而且只能實現串口1的發送,不能實現串口2的發送,求大佬指點迷津【憂桑】!
作者: 最后一個夏天1    時間: 2023-5-4 17:58
不知道你用的什么版本,說出來你可能不信,我之前用8.13的ptoteus,不管怎么仿真,單片機都收不到數據,一模一樣的環境和程序,我換了個版本就可以。
作者: 黑電子ABCf    時間: 2023-5-4 20:41
最后一個夏天1 發表于 2023-5-4 17:58
不知道你用的什么版本,說出來你可能不信,我之前用8.13的ptoteus,不管怎么仿真,單片機都收不到數據,一 ...

呃用的8.13版本,那我也換個版本試試
作者: 黑電子ABCf    時間: 2023-5-5 12:18
黑電子ABCf 發表于 2023-5-4 20:41
呃用的8.13版本,那我也換個版本試試

試了,不行,問題到底出在哪兒了呢【腦殼痛】
作者: 黑電子ABCf    時間: 2023-5-5 13:02
黑電子ABCf 發表于 2023-5-5 12:18
試了,不行,問題到底出在哪兒了呢【腦殼痛】

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

單獨發送都不行只能說明proteus模型不完整,上實物吧。
作者: sttt300    時間: 2023-6-13 09:31
最后一個夏天1 發表于 2023-5-4 17:58
不知道你用的什么版本,說出來你可能不信,我之前用8.13的ptoteus,不管怎么仿真,單片機都收不到數據,一 ...

啊,這……這……這……我也是用8.13版本的,可以發送數據,就是收不到數據,我已經搞了好久了,一直搞不明白哪里出了問題,正準備搜集一下資料,再整理了好了上論壇求助呢
不知道你現在換了什么版本的,能正常串口收發呢?
感謝!
作者: Longan.Wang    時間: 2023-6-16 17:37
Hephaestus 發表于 2023-5-5 13:49
單獨發送都不行只能說明proteus模型不完整,上實物吧。

這個可能性很大




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91丨九色丨国产在线 | 欧美精品在线视频 | 亚洲精品色 | 日韩精品一区二区视频 | 久久伊人网站 | 深夜福利视频网站 | 日本欧美久久久久免费播放网 | 午夜精品999| 亚洲欧美一区二区三区四区 | 黄色网址在线播放 | 青青草伊人网 | 欧美日韩在线看 | 亚洲特级片 | 超碰人人在线 | 欧美一区二区三区在线 | ass亚洲尤物裸体pics | 精品免费国产一区二区三区四区 | 激情婷婷综合 | 五月在线视频 | 四虎永久在线 | 18在线观看免费入口 | 四虎在线播放 | 黄色一级视频网站 | 91激情视频 | www.一区 | 亚洲综合日韩 | 高清一级片 | 亚洲黄色片 | 亚洲精品黄 | aaaaaa毛片 | 欧美成人a | 中日韩毛片| 欧美极品在线 | 国产黄色免费观看 | 69av在线 | www婷婷| 精久久久久| 国产精品一区av | 在线观看h片 | 国产一级黄色大片 | 国产一区二区精品丝袜 |