資源描述:
《vc編程實現(xiàn)串口通訊》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、vc編程實現(xiàn)串口通訊首先,我們來大概的回憶一下單片機的串口通信。8051單片機的串行接口由數(shù)據(jù)緩沖寄存器SBUF、移位寄存器、串行控制寄存器SCON組成。8051單片機的串行接口是一個可編程的全雙工通信接口,通過軟件編程可以作為通用異步接收和發(fā)送器使用,也可作為同步移位寄存器,還可實現(xiàn)多機通信。其帖格式有8位、10位和11位,通過T1或T2設(shè)置各種波特率。1.1串行口工作原理在發(fā)送和接收數(shù)據(jù)前,先對串行口進行初始化設(shè)置,要明確串行口的工作方式、波特率等。1.發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù),由累加器A送入發(fā)送緩沖寄存器SBUF,在發(fā)送控制器控制下組成
2、幀結(jié)構(gòu),并自動以串行方式從TXD輸出,每發(fā)送完一幀TI置位,可以通過中斷方式或查詢方式來了解數(shù)據(jù)的發(fā)送情況。值得注意的是TI只能用軟件復(fù)位。2.接收數(shù)據(jù)單片機每接收完一幀數(shù)據(jù),RI置位,通過中斷或查詢方式來了解數(shù)據(jù)的接收情況,然后用MOVA,SBUF指令,將接收緩沖寄存器(SBUF)的值送累加器A。RI與TI一樣,也只能用軟件復(fù)位。1.2串行口工作方式8051單片機通過編程可選擇4種串行通信工作方式。1.方式0在方式0下,串行口用作同步移位寄存器,以8位數(shù)據(jù)為1幀,先發(fā)送或接收最低位,每個機器周期發(fā)送或接收1位,其波特率為fosc/1
3、2。串行數(shù)據(jù)由RXD端輸入或輸出,同步移位脈沖由TXD端送出。方式0數(shù)據(jù)發(fā)送與接收是無起始位和停止位,先發(fā)送或接收最低位,數(shù)據(jù)格式為:—D0D1D2D3D4D5D6D72.方式1在方式1下,串行口為10位通用異步接口,數(shù)據(jù)格式為:——0D0D1D2D3D4D5D6D71——發(fā)送數(shù)據(jù):當執(zhí)行MOVSBUF,A指令,CPU將1字節(jié)的數(shù)據(jù)寫入發(fā)送緩沖寄存器SBUF,數(shù)據(jù)從引腳TXD端輸出,當發(fā)送完1幀數(shù)據(jù)后,TI標志置1,可用中斷或查詢方式來了解數(shù)據(jù)發(fā)送情況,TI只有通過軟件復(fù)位。接收數(shù)據(jù):接收時,先使REN置1,使串行口處于允許接收狀態(tài),
4、RI標志為0,串行口采樣到RXD由1到0時,確認是起始位0,就開始接收1幀數(shù)據(jù)。當停止位到來時,RB8位置1,同時,中斷標志位RI也置1,用中斷或查詢方式,通知CPU從SBUF取走接收到的數(shù)據(jù)。3.方式2和方式3方式2和方式3均為11位異步通信方式,只是波特率的設(shè)置方法不同,數(shù)據(jù)格式為:—0D0D1D2D3D4D5D6D7D81——發(fā)送數(shù)據(jù):發(fā)送前,先要根據(jù)能信協(xié)議由軟件設(shè)置TB8,然后將要發(fā)送的數(shù)據(jù)寫入SBUF即可啟動發(fā)送器。接收數(shù)據(jù):接收時,先使REN置1,使串行口處于允許接收狀態(tài),RI標志為0。在滿足這個條件的前提下,再根據(jù)SM
5、2的狀態(tài)和所接收到的RB8的狀態(tài),才能決定此串行口在信息到來后是否會使RI置1。如果置1,在中斷方式下將申請中斷,接收數(shù)據(jù)。當SM2=0時,不管RB8為0還是為1,RI都置1,此串行口將接收發(fā)來的信息。當SM2=1,且RB8為1時,表示在多機能信情況下,接收的信息為地址幀,此時RI置1。串行口將接收發(fā)來的地址。當SM2=1,且RB8為0時,表示接收到的信息為數(shù)據(jù)幀,便不是發(fā)給本從機的,此時RI不置1,因而SBUF中所接收的數(shù)據(jù)幀將丟失。4.多機通信在方式2和方式3下,有一個專門用于多機通信的功能,這一功能使它可以方便地應(yīng)用于集散分布系
6、統(tǒng)中,這種系統(tǒng)采用一臺主機和多臺從機之間通信。多機通信的實現(xiàn),主要靠主、從機之間正確地設(shè)置與判斷多機通信控制位SM2和發(fā)送或接收的第9位數(shù)據(jù)位。在硬件上,所有從機的TXD接主機的RXD,所有從機的RXD接主機的TXD。在編程序前,首先要給從機地址編號,如分別為00H、01H、02H等,主機設(shè)置在工作方式2或方式3,TB8=1,從機初始化時設(shè)置SM2=1,處于方式2或方式3的允許接收狀態(tài)。主機與從機通信前,主機先發(fā)送一個地址字節(jié)(地址字節(jié)和數(shù)據(jù)字節(jié)可用第9位數(shù)據(jù)位來區(qū)別,第9位為1表示發(fā)送的是地址)給從機,從機接收到主機發(fā)來的信息時,第
7、9位RB8若為1,則置位中斷標志位RI,并在中斷后判斷主機送來的地址與本機是否相同,若相同,則被尋址的從機設(shè)置成SM2=0,準備接收即將從主機送來的數(shù)據(jù)幀,未被選中的從機保持SM2=1的狀態(tài)。當主機發(fā)送數(shù)據(jù)時,應(yīng)置TB8為0,此時,雖各從機處于接收狀態(tài),但由于TB8=0,所以只有SM2=0的從機才接收數(shù)據(jù),其余從機保持SM2=1狀態(tài)。1.3串行口控制串行口控制與串行口控制寄存器SCON、電源控制寄存器PCON、串行口發(fā)送/接收緩沖區(qū)SBUF中斷允許寄存器IE、中斷優(yōu)先級、定時控制寄存器TCON及方式控制寄存器TDOM有關(guān)。1.串行控制
8、寄存器SCONSCON是一個可位尋址的專用寄存器,地址為98H,用于串行數(shù)據(jù)通信的控制,位功能如下:SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作方式選擇位。工作方式的選擇如表8.1所示下。表8.