欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 關(guān)于單片機串口接收數(shù)據(jù)后無法發(fā)送問題 [打印本頁]

作者: 黑電子ABCf    時間: 2023-4-29 11:02
標(biāo)題: 關(guān)于單片機串口接收數(shù)據(jù)后無法發(fā)送問題
大家好,新手小白。在做串口通信的時候,單獨的發(fā)送、接收能夠?qū)崿F(xiàn),在仿真的儀器上能看到確實接收到了數(shù)據(jù),但始終無法在接收完成后,向外發(fā)送接收到的數(shù)據(jù)或其他字符串,查詢或中斷方式都嘗試過,不知道問題到底出在哪兒了。麻煩大家?guī)兔饨饣螅x謝!


單片機源程序如下:
  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. /*以查詢方式接收數(shù)據(jù)
  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; //將數(shù)據(jù)寫入發(fā)送緩沖器,啟動發(fā)送
  44. while(!TI); //若沒有發(fā)送完畢,等待
  45. TI = 0;
  46. }
  47. void Uart1_SendStr(uchar *s)
  48. {
  49. while(*s!='\0')// \0 表示字符串結(jié)束標(biāo)志,檢測是否字符串末尾
  50. {
  51. Uart1_SendChar(*s);
  52. s++;
  53. }
  54. }
  55. /*以查詢方式接收數(shù)據(jù)
  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. }
復(fù)制代碼




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

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

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

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

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

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

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

這個可能性很大




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1