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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+RS485通信程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:477505 發表于 2020-1-9 11:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這段代碼要改成這樣,例如:發送01 06 00 01 00 17  接收01 06 00 01 00 17
有大神幫我改改嗎,剛學還有很多不懂

void Uart3_Init(void)
{                                 
        S3CON |= 0x50;                  //串口3選擇定時器3為波特率發生器,啟動串行接收器
        S3CON &= 0x70;                  //8位數據,可變波特率

        T3H=(65536-(MAIN_Fosc/12/4/BAUD))/256;
        T3L=(65536-(MAIN_Fosc/12/4/BAUD))%256;
        
        T4T3M |= 0x08;       //允許定時器3運行
        IE2 |= 0x08;         // 串口3中斷打開
        IE2 &= 0xDF;         // 關閉定時器3中斷
        EA = 1;                                        // 總中斷打開
}

void SendDataByUart3(uint8 dat)
{
    S3BUF = dat;                 //寫數據到UART數據寄存器
        while(!(S3CON&S3TI));        //在停止位沒有發送時,S3TI為0即一直等待
    S3CON&=~S3TI;                //清除S3CON寄存器對應S3TI位(該位必須軟件清零)
}


void U3SendString(uint8 *s)
{
    IE2 &= 0xF7;                                        // 串口3中斷關閉
        while (*s)                       //檢測字符串結束標志
    {

                        SendDataByUart3(*s++);         //發送當前字符
    }
    IE2 |= 0x08;                     // 串口3中斷打開
}

int main()
{
          P0M1 &= 0xFE;        P0M0 &= 0xFE;                          //設置P0.0為準雙向口
        P0M1 &= 0xFD;        P0M0 |= 0x02;                          //設置P0.1為推挽輸出
        
        rs485_dr=0;      //控制485接收
        Uart3_Init();
        

        while(1)
        {
                if(temp1==50)   //接收到的數為“2”
                {
                        rs485_dr=1;   //控制485發送
                        U3SendString("Hello World\r\n");        //通過串口2發送字符串“FIYU”
                        uart3_rflage=0;                   //清零串口2接收標識符
                        rs485_dr=0;                       //控制485接收
                        delay_ms(10);                     //初始化后延時
                        temp1=0;                          //清零接收的臨時數據
                }
        }
}

void Uart3() interrupt 17 using 1
{
        IE2 &= 0xF7;                                        // 串口3中斷關閉
        if (S3CON & S3RI)                //串行接收到停止位的中間時刻時,該位置1
          {
              S3CON &= ~S3RI;              //清除S3CON寄存器對應S3RI位(該位必須軟件清零)
                  temp1 = S3BUF;               //把串口3緩存SBUF寄存器數據存放到數組temp1中
                  uart3_rflage = 1;                 
           }
           if (S3CON & S3TI)                //在停止位開始發送時,該位置1
           {
              S3CON &= ~S3TI;                                //清除S3CON寄存器對應S3TI位(該位必須軟件清零)
           }
        IE2 |= 0x08;                     // 串口3中斷打開
}



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

使用道具 舉報

沙發
ID:619594 發表于 2020-1-9 15:41 | 只看該作者
你好!
對于你這段代碼來說,要實現你說的功能,基本是要重新寫了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩1区| 成人免费视频在线观看 | 99re99 | 天天久久 | 成人av免费播放 | 黄片毛片在线观看 | www久| 日日艹夜夜艹 | 97偷拍视频 | 九九热免费看 | 精品在线免费观看视频 | 国产精品成人在线观看 | 噜噜噜色网| 午夜激情在线视频 | 毛片大全 | 日韩电影免费观看中文字幕 | 欧美一区二区三区在线观看 | 精品一二三区在线观看 | 国精久久 | 精品九九| 日韩成人精品 | 在线一级片 | 国产精品高潮呻吟久久av黑人 | 欧美日韩一区二区三区四区 | 亚洲欧美国产毛片在线 | 超碰在线网站 | 国产一区二区三区免费观看在线 | 人人亚洲 | 国产一区二区精品在线观看 | 中文字幕一区二区三区精彩视频 | 久久91精品 | 国产精品久久久久久久久 | 久久久久国产精品午夜一区 | 日韩精品久久久 | 精品国产视频 | 欧美色综合 | 亚洲国产成人精品女人久久久野战 | 亚洲精品无| 日日摸夜夜添夜夜添精品视频 | 中文字幕一区二区三区精彩视频 | 国产一区二区视频免费在线观看 |