找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8348|回復(fù): 11
收起左側(cè)

單片機(jī)與RS232進(jìn)行通信 一直接收不到數(shù)據(jù)

[復(fù)制鏈接]
ID:209803 發(fā)表于 2017-6-10 17:05 | 顯示全部樓層 |閱讀模式

各位大神請看下這個程序哪里出問題了,一直接收不到數(shù)據(jù),需要實(shí)現(xiàn)下面這個功能
1.PNG 2.PNG

  1. #include <AT89X51.h>
  2. #define uchar unsigned  char
  3. #define uint unsigned int
  4. uchar trdata[]={0xaa,0x01,0x03,0x0f,0x00,0x05};
  5. uchar rece;
  6. uchar j;

  7. //uchar  code trdata1[]={'R','I','C','H','M','C','U',0x0d,0x0a,0x00};
  8. uchar flag=1;
  9. void delay1ms(uint i)
  10. {
  11. uchar j;
  12.          while(i--)
  13.          {
  14.                  for(j=0;j<115;j++)          //1ms基準(zhǔn)延時程序
  15.                  {
  16.                   ;
  17.                  }
  18.          }
  19. }
  20. main()
  21. {
  22. uchar i;
  23. SCON= 0x50;                //串口方式允許接收
  24. //SM0=0;
  25. //SM1=1;
  26. //REN=0;
  27. PCON= 0x00;                     //SMOD=0
  28. TMOD= 0x20;                //定時器1定時方式2
  29. TH1= 0xfd;                //11.0592M 9600波特率
  30. TL1= 0xfd;
  31. TR1= 1;                  //啟動定時器
  32. EA=1;
  33.   while(1)
  34.         {
  35.           if(flag==1){
  36.             ES=0;        
  37.             i=0;
  38.         while(trdata[i]!=0x05)
  39.                     {
  40.                                 P0=trdata[i];
  41.                             SBUF=trdata[i];
  42.                           while(!TI);
  43.                           TI=0;
  44.                           i++;
  45.                                 delay1ms(1000);
  46.                 }
  47.                   if(i>4)
  48.                     {
  49.                         flag=0;
  50.                         ES=1;
  51.                      }
  52.                         }
  53.         }
  54. }
  55. void INT_UartRcv(void) interrupt 4
  56. {

  57.     if(RI==1){
  58.     RI=0;
  59.         rece=SBUF;
  60.         P0=0xff;
  61.         j++;
  62.         delay1ms(100);
  63. //        bulb=1;
  64. //        bulb1=1;        
  65.         if(j>12){
  66.           flag=1;
  67.           j=0;
  68.           ES=0;
  69.           }
  70.          }
  71. }
復(fù)制代碼
回復(fù)

使用道具 舉報

ID:209803 發(fā)表于 2017-6-10 17:07 | 顯示全部樓層
請各位大神幫忙
回復(fù)

使用道具 舉報

ID:209803 發(fā)表于 2017-6-10 17:08 | 顯示全部樓層
頂一下,求各位大神幫忙
回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2017-6-10 17:57 | 顯示全部樓層
把你的程序畫成流程框圖,你就知道問題在哪里了。
回復(fù)

使用道具 舉報

ID:82765 發(fā)表于 2017-6-10 20:01 | 顯示全部樓層
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

ID:209803 發(fā)表于 2017-6-10 21:28 | 顯示全部樓層
本帖最后由 至上力晨 于 2017-6-10 21:38 編輯
cjjcjj1 發(fā)表于 2017-6-10 20:01
你好!是仿真實(shí)現(xiàn)的嗎?發(fā)一下原理圖看看,幫你改一下

這個傳感器的端口為RS232端口,通信協(xié)議是ASC2碼,一個4個線,電源、地、信號發(fā)送和接收。信號線分別接到下圖DB9的2腳和3腳。傳感器和電腦相連通過串口調(diào)試助手可以看到返回的數(shù)據(jù),但是希望通過程序發(fā)送指令并接收返回的值。不知道程序出現(xiàn)什么問題了,這個程序的中斷進(jìn)不去,應(yīng)該就是沒有返回數(shù)據(jù)。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:209803 發(fā)表于 2017-6-10 21:30 | 顯示全部樓層
3.PNG
回復(fù)

使用道具 舉報

ID:209803 發(fā)表于 2017-6-10 21:31 | 顯示全部樓層
yzwzfyz 發(fā)表于 2017-6-10 17:57
把你的程序畫成流程框圖,你就知道問題在哪里了。

這可能是指令發(fā)送的問題吧,因?yàn)槲矣写谡{(diào)試助手可以采集到數(shù)據(jù)
回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2017-6-10 23:26 | 顯示全部樓層
本帖最后由 zl2168 于 2017-6-10 23:27 編輯

實(shí)例80  帶RS 232接口的雙機(jī)通信
Proteus仿真一下,確認(rèn)有效。
實(shí)例80 帶RS232接口的雙機(jī)通信.rar (45.52 KB, 下載次數(shù): 30)
232.jpg
以上摘自張志良編著80C51單片機(jī)仿真設(shè)計實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行。書中電路和程序設(shè)計有詳細(xì)說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
回復(fù)

使用道具 舉報

ID:209803 發(fā)表于 2017-6-11 09:06 | 顯示全部樓層
zl2168 發(fā)表于 2017-6-10 23:26
實(shí)例80  帶RS 232接口的雙機(jī)通信
先Proteus仿真一下,確認(rèn)有效。

同樣感謝,但是我不知道傳感器內(nèi)部是怎么進(jìn)行收發(fā)的
回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2017-6-11 09:26 | 顯示全部樓層
至上力晨 發(fā)表于 2017-6-11 09:06
同樣感謝,但是我不知道傳感器內(nèi)部是怎么進(jìn)行收發(fā)的

書上有詳細(xì)解讀分析。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
回復(fù)

使用道具 舉報

ID:162500 發(fā)表于 2017-6-11 10:12 | 顯示全部樓層
在中斷函數(shù)里加一些打印信息,看看進(jìn)沒進(jìn)中斷函數(shù)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表