找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+RS485連接4個從機,必須同時連接四個才能工作,主機的EA和ES都是關閉狀態(tài)

[復制鏈接]
跳轉到指定樓層
樓主
ID:931206 發(fā)表于 2022-5-6 13:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    while (1)
    {



        delay_1ms(5);
        SEND_data(0x01);    //獲取主機一的數(shù)據(jù)
        delay_1ms(5);
        DISplay_RT_1();              //顯示獲取的數(shù)據(jù)


        delay_1ms(5);
        SEND_data(0x02);    //獲取主機二的數(shù)據(jù)
        delay_1ms(5);
        DISplay_RT_2();              //顯示獲取的數(shù)據(jù)
//
//
        delay_1ms(5);
        SEND_data(0x03);    //獲取主機三的數(shù)據(jù)
        delay_1ms(5);
        DISplay_RT_3();              //顯示獲取的數(shù)據(jù)


        delay_1ms(5);
        SEND_data(0x04);    //獲取主機四的數(shù)據(jù)
        delay_1ms(5);
        DISplay_RT_4();              //顯示獲取的數(shù)據(jù)

    }


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

使用道具 舉報

沙發(fā)
ID:883242 發(fā)表于 2022-5-7 00:49 | 只看該作者
多半是沒有上下拉導致空閑時總線狀態(tài)不確定導致的。用示波器看過波形了嗎?
回復

使用道具 舉報

板凳
ID:94031 發(fā)表于 2022-5-7 10:35 | 只看該作者
程序編制應加上,任何一路長時間沒應答信號,應跳過進行下一路操作,否則會死在沒連接那路。
回復

使用道具 舉報

地板
ID:883242 發(fā)表于 2022-5-7 10:49 | 只看該作者
xuyaqi 發(fā)表于 2022-5-7 10:35
程序編制應加上,任何一路長時間沒應答信號,應跳過進行下一路操作,否則會死在沒連接那路。

EA、ES都關閉了,那就只能是查詢式,死在沒應答信號的可能性基本沒有。
回復

使用道具 舉報

5#
ID:931206 發(fā)表于 2022-5-9 13:25 | 只看該作者
Hephaestus 發(fā)表于 2022-5-7 00:49
多半是沒有上下拉導致空閑時總線狀態(tài)不確定導致的。用示波器看過波形了嗎?

有上下拉電阻,用proteus仿真也是必須四個同時在線才能正常工作
回復

使用道具 舉報

6#
ID:931206 發(fā)表于 2022-5-9 13:38 | 只看該作者
Hephaestus 發(fā)表于 2022-5-7 10:49
EA、ES都關閉了,那就只能是查詢式,死在沒應答信號的可能性基本沒有。

那該怎么改呢,我不知道它是卡在那個地方,是卡在讀不到下位機傳輸?shù)臄?shù)據(jù)上還是卡在將數(shù)據(jù)顯示在顯示屏上
回復

使用道具 舉報

7#
ID:931206 發(fā)表于 2022-5-9 13:48 | 只看該作者
xuyaqi 發(fā)表于 2022-5-7 10:35
程序編制應加上,任何一路長時間沒應答信號,應跳過進行下一路操作,否則會死在沒連接那路。

對,我想了一下就是發(fā)送地址讀數(shù)據(jù)超時然后就一直死在那個程序了,這是我讀數(shù)據(jù)程序,該怎么解決呢?
  1. unsigned char SEND_data(unsigned char addr)
  2. {
  3.     unsigned char i = 0;

  4.     Rs485_die = 1;
  5.     TB8 = 1;
  6.     TI = 0;
  7.     SBUF = addr;
  8.     while (!TI);
  9.     TI = 0;

  10.     Rs485_die = 0;
  11.     for (i = 0; i < 4; i++)
  12.     {
  13.         RI = 0;
  14.         while (!RI);
  15.         RH_TP[i] [i]= SBUF;
  16.         RI = 0;

  17.     }



  18.     Rs485_die = 1;
  19. }
復制代碼

回復

使用道具 舉報

8#
ID:94031 發(fā)表于 2022-5-9 16:09 | 只看該作者
kill2007 發(fā)表于 2022-5-9 13:48
對,我想了一下就是發(fā)送地址讀數(shù)據(jù)超時然后就一直死在那個程序了,這是我讀數(shù)據(jù)程序,該怎么解決呢?

for (i = 0; i < 4; i++)
{
        unsigned int m;
       
        RI = 0;
        m=0;
        while(!RI)
        {
         m=m+1;
         if(m>10000){i=5;break;}
        }
        RH_TP = SBUF;
        RI = 0;
}
回復

使用道具 舉報

9#
ID:931206 發(fā)表于 2022-5-10 22:57 | 只看該作者
xuyaqi 發(fā)表于 2022-5-9 16:09
for (i = 0; i < 4; i++)
{
        unsigned int m;

okok,非常感謝大佬
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表