PIC16F877單片機USART功能模塊帶有一個八位的波特率發(fā)生器BRG,BRG支持USART的同步和異步工作方式。用SPBRG寄存器控制一個獨立的八位定時器的周期。在異步方式下,發(fā)送狀態(tài)/控制寄存器TXSTA的BRGH位(即D2)被用來控制波特率。對串行口進行的初始化如下:

數(shù)據(jù)接收模塊由一個中斷函數(shù)組成。該中斷函數(shù)將觸摸屏發(fā)來的Modbus數(shù)據(jù)幀存儲在一個自定義的數(shù)組中,當(dāng)一幀數(shù)據(jù)接收完時,置接收結(jié)束標(biāo)志位為1,轉(zhuǎn)入數(shù)據(jù)處理及發(fā)送模塊。串行通信接收器的核心是接收移位寄存器RSR,當(dāng)接收到停止時,如果RCREG緩沖器為空,RSR就把接收到的數(shù)據(jù)送入RCREG。傳送完成后,接收中斷標(biāo)志位RCIF被置1。實際的中斷是否被CPU響應(yīng),可以通過設(shè)置外圍接口中斷允許寄存器PIE1的中斷允許位RCIE來控制。
數(shù)據(jù)處理及發(fā)送模塊執(zhí)行Modbus協(xié)議功能碼對應(yīng)的運用。eView觸摸屏與單片機以Modbus協(xié)議通信,用到的Modbus功能碼如表2所示。

以Modbus功能碼03為例來說明觸摸屏及單片機的實際通信數(shù)據(jù)格式。如單片機地址編號為01H,觸摸屏需要查看單片機中地址為0031H的寄存器的值,發(fā)送命令格式如表3所示!

假設(shè)單片機中地址為0031H的寄存器中斷為05H,則單片機的回復(fù)命令如表4所示。

當(dāng)波特率達到38400kb/s時,通信仍然穩(wěn)定可靠。本系統(tǒng)具有連接電路簡單、組態(tài)靈活、通信可靠性高等特點,并已成功應(yīng)用于物料篩選控制系統(tǒng)項目中。由于Modbus通信協(xié)議的開放性的特點,國外進口控制器串行通信大者支持該協(xié)議,因此本文所實現(xiàn)的采用Modbus協(xié)議的串行通信具有廣泛的應(yīng)用價值。





