找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

RS485的單片機(jī)程序問(wèn)題求助

[復(fù)制鏈接]
ID:261451 發(fā)表于 2018-1-12 15:39 | 顯示全部樓層 |閱讀模式
  1. #include <REG52.H>
  2. #include <stdio.h>

  3. sbit RS485 = P1^4;   
  4. bit SendFlag;
  5. unsigned int ReData,SenData;

  6. void delay(unsigned char i)
  7. {
  8.         unsigned char j;
  9.         for(i; i > 0; i--)
  10.                 for(j = 200; j > 0; j--);
  11. }

  12. void main (void)
  13.         {
  14.     SCON = 0x50;                       
  15.           TMOD|= 0x20;     
  16.                 PCON|= 0x80;                                                         
  17.                 TH1 = 0xF3;         
  18.                 TL1 = 0xF3;      
  19.                 TR1  = 1;                                                            
  20.                 ES   = 1;      
  21.                 EA   = 1;      
  22.         
  23.            // IE = 0x0;

  24.         while(1)
  25.     {
  26.         
  27.           if (SendFlag==1)   
  28.               {  
  29.                                 RS485=1;         
  30.               SBUF=SenData;           
  31.                   delay(50);
  32.        }
  33.          else
  34.              {
  35.               RS485=0;        
  36.              }
  37.     }
  38.   }

  39. void ser_int (void) interrupt 4 using 1
  40. {
  41. if(TI == 1)
  42. {
  43.         TI = 0;
  44.         SendFlag = 0;
  45. }

  46. if(RI == 1)      
  47. {
  48.         RI = 0;                  
  49.         ReData = SBUF;  
  50.         SenData=ReData;
  51.         SendFlag = 1;
  52. }
  53. }

復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:261451 發(fā)表于 2018-1-12 15:40 | 顯示全部樓層
通過(guò)串口助手發(fā)送00,每次接收到的不同
1.png
回復(fù)

使用道具 舉報(bào)

ID:274868 發(fā)表于 2018-1-12 16:39 | 顯示全部樓層
兄弟,首先你的代碼注釋為零啊,如果是老51單片機(jī)的話,晶振12MHZ,當(dāng)前配置應(yīng)該是正確的void UartInit(void)                //4800bps@12.000MHz
{
        PCON |= 0x80;                //使能波特率倍速位SMOD
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        TMOD |= 0x20;                //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
        TL1 = 0xF3;                //設(shè)定定時(shí)初值
        TH1 = 0xF3;                //設(shè)定定時(shí)器重裝值
        TR1 = 1;                //啟動(dòng)定時(shí)器1
        ES = 1;                //使能串口中斷
        EA = 1;                //使能總中斷
}
回復(fù)

使用道具 舉報(bào)

ID:47286 發(fā)表于 2018-1-13 00:29 | 顯示全部樓層
你是不是AB線接反了
回復(fù)

使用道具 舉報(bào)

ID:23606 發(fā)表于 2018-1-13 10:39 | 顯示全部樓層
換11.0592晶體并重新設(shè)置定時(shí)器試試
回復(fù)

使用道具 舉報(bào)

ID:261451 發(fā)表于 2018-1-15 10:44 | 顯示全部樓層
把232收發(fā)口短接收發(fā)正常,接上232轉(zhuǎn)485后,短接TR+和TR-收發(fā)就不對(duì)了
P]BEUAB$GN=UH`XN{CCBS.png
回復(fù)

使用道具 舉報(bào)

ID:261451 發(fā)表于 2018-1-15 10:44 | 顯示全部樓層
dzbj 發(fā)表于 2018-1-13 00:29
你是不是AB線接反了

沒(méi)有接反
回復(fù)

使用道具 舉報(bào)

ID:261451 發(fā)表于 2018-1-15 10:45 | 顯示全部樓層
是不是232轉(zhuǎn)485有問(wèn)題啊
回復(fù)

使用道具 舉報(bào)

ID:261451 發(fā)表于 2018-1-15 10:46 | 顯示全部樓層
pangfive 發(fā)表于 2018-1-12 16:39
兄弟,首先你的代碼注釋為零啊,如果是老51單片機(jī)的話,晶振12MHZ,當(dāng)前配置應(yīng)該是正確的void UartInit(voi ...

和程序里面設(shè)置的一樣啊
回復(fù)

使用道具 舉報(bào)

ID:70953 發(fā)表于 2018-5-7 23:32 | 顯示全部樓層
你的問(wèn)題解決了嗎?我也是這個(gè)問(wèn)題,真心不知道怎么回事,期待有人能給予解答。
回復(fù)

使用道具 舉報(bào)

ID:324682 發(fā)表于 2018-5-7 23:34 | 顯示全部樓層

支持正常 哈多發(fā)多大大的大的
回復(fù)

使用道具 舉報(bào)

ID:324682 發(fā)表于 2018-5-7 23:35 | 顯示全部樓層
tzcl 發(fā)表于 2018-5-7 23:32
你的問(wèn)題解決了嗎?我也是這個(gè)問(wèn)題,真心不知道怎么回事,期待有人能給予解答。

同求  搞得一頭霧水
回復(fù)

使用道具 舉報(bào)

ID:316757 發(fā)表于 2018-5-7 23:47 | 顯示全部樓層
請(qǐng)問(wèn)這是實(shí)現(xiàn)什么功能的
回復(fù)

使用道具 舉報(bào)

ID:70953 發(fā)表于 2018-5-8 00:13 | 顯示全部樓層
我有種想哭的感覺(jué)!在我的記憶中485通信是A連A,B連B,通信數(shù)據(jù)有問(wèn)題,但是比較規(guī)律,就是在最后一位改成00,其他的位返回有錯(cuò),但是有規(guī)律,我折騰了一晚上,結(jié)果就是因?yàn)锳連B,B連A.
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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