新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 詳解RS485通信

        詳解RS485通信

        作者: 時間:2016-12-16 來源:網絡 收藏

          /*****************************main.c 文件程序源代碼******************************/

        view plaincopy to clipboardprint?
        1. #include
        2. unsignedcharT0RH=0;//T0重載值的高字節
        3. unsignedcharT0RL=0;//T0重載值的低字節
        4. voidConfigTimer0(unsignedintms);
        5. externvoidUartDriver();
        6. externvoidConfigUART(unsignedintbaud);
        7. externvoidUartRxMonitor(unsignedcharms);
        8. externvoidUartWrite(unsignedchar*buf,unsignedcharlen);
        9. voidmain(){
        10. EA=1;//開總中斷
        11. ConfigTimer0(1);//配置T0定時1ms
        12. ConfigUART(9600);//配置波特率為9600
        13. while(1){
        14. UartDriver();//調用串口驅動
        15. }
        16. }
        17. /*串口動作函數,根據接收到的命令幀執行響應的動作
        18. buf-接收到的命令幀指針,len-命令幀長度*/
        19. voidUartAction(unsignedchar*buf,unsignedcharlen){
        20. //在接收到的數據幀后添加換車換行符后發回
        21. buf[len++]=;
        22. buf[len++]=;
        23. UartWrite(buf,len);
        24. }
        25. /*配置并啟動T0,ms-T0定時時間*/
        26. voidConfigTimer0(unsignedintms){
        27. unsignedlongtmp;//臨時變量
        28. tmp=11059200/12;//定時器計數頻率
        29. tmp=(tmp*ms)/1000;//計算所需的計數值
        30. tmp=65536-tmp;//計算定時器重載值
        31. tmp=tmp+33;//補償中斷響應延時造成的誤差
        32. T0RH=(unsignedchar)(tmp>>8);//定時器重載值拆分為高低字節
        33. T0RL=(unsignedchar)tmp;
        34. TMOD&=0xF0;//清零T0的控制位
        35. TMOD|=0x01;//配置T0為模式1
        36. TH0=T0RH;//加載T0重載值
        37. TL0=T0RL;
        38. ET0=1;//使能T0中斷
        39. TR0=1;//啟動T0
        40. }
        41. /*T0中斷服務函數,執行串口接收監控*/
        42. voidInterruptTimer0()interrupt1{
        43. TH0=T0RH;//重新加載重載值
        44. TL0=T0RL;
        45. UartRxMonitor(1);//串口接收監控
        46. }

          現在看這種串口程序,是不是感覺很簡單了呢?串口通信程序我們反反復復的使用,加上隨著學習的模塊越來越多,實踐的越來越多,原先感覺很復雜的東西,現在就會感到簡單了。從設備管理器里可以查看所有的 COM 口號,我們下載程序用的是 COM4,而 USB 轉RS485 虛擬的是 COM5,通信的時候我們用的是 COM5 口,如圖 18-3 所示。


        上一頁 1 2 3 下一頁

        關鍵詞: RS485通

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 玛纳斯县| 荆州市| 扶绥县| 门源| 申扎县| 鄂伦春自治旗| 绥江县| 古浪县| 商洛市| 信阳市| 黄梅县| 内江市| 淳化县| 定结县| 布拖县| 涪陵区| 盐源县| 乌鲁木齐市| 中阳县| 永善县| 福清市| 收藏| 广元市| 仙桃市| 景东| 沅江市| 无极县| 德格县| 绥棱县| 马山县| 肃宁县| 永胜县| 都安| 嘉禾县| 周至县| 高陵县| 库尔勒市| 北票市| 阳春市| 云安县| 紫金县|