版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
7.1計算機串行通信基礎(chǔ)
7.2MCS-51單片機的串行接口
7.3串行口通信程序的設(shè)計
7.4單片機與PC機通信的設(shè)計
7.5習(xí)題
實例七單片機與PC機通信學(xué)習(xí)目標(biāo)◆理解串行通信的分類、制式及MCS-51串行口的結(jié)構(gòu)?!衾斫釳CS-51單片機串行口的工作方式,并正確地進行配置?!粽_使用VirtualSerialPortKit、Proteus、SSCOM仿真單片機與PC機通信電路及串行通信程序?!粼O(shè)計和制作單片機與PC機通信的RS-232接口電路,對電路中的故障現(xiàn)象進行分析判斷并加以解決,通過調(diào)試得到正確結(jié)果。
工作任務(wù)
◆測試串口通信接口電路并對結(jié)果進行描述。
◆設(shè)計、制作與調(diào)試串口通信系統(tǒng)。
◆撰寫設(shè)計文檔與測試報告。
基于單片機的電子系統(tǒng)或設(shè)備一般以單片機為核心,配合其他設(shè)備完成相應(yīng)信息的采集及各種控制工作,因此,單片機與其他器件的通信顯得格外重要。單片機與外部設(shè)備的通信由接口電路來完成。本實例將介紹單片機與PC機進行串行通信的接口電路設(shè)計及相關(guān)串口通信程序的編寫。7.1計算機串行通信基礎(chǔ)學(xué)習(xí)目標(biāo)◆理解異步通信和同步通信?!衾斫獍腚p工和全雙工制式。工作任務(wù)◆設(shè)計雙單片機全雙工通信電路。
就像要經(jīng)過一座獨木橋到河的對岸,每次只能一人通行的情況一樣,串行通信方式是指計算機主機與外設(shè)之間以及主機系統(tǒng)與主機系統(tǒng)之間數(shù)據(jù)以串行方式傳輸?shù)耐ㄐ欧绞?,二進制數(shù)據(jù)按位傳送。在進一步學(xué)習(xí)MCS-51串行I/O接口之前,下面先學(xué)習(xí)與串行通信相關(guān)的基礎(chǔ)知識。
7.1.1串行通信的分類
由于串行通信在一根傳輸線上既要傳送數(shù)據(jù)信息又要傳送聯(lián)絡(luò)控制信息,為了區(qū)分是數(shù)據(jù)信息還是控制信息,串行通信有固定的數(shù)據(jù)格式要求,即異步和同步數(shù)據(jù)格式,相應(yīng)地就有異步通信和同步通信兩種通信方式。
1.異步通信
異步通信是以字符為信息單位傳送的,每個字符即為一幀數(shù)據(jù),可以隨機出現(xiàn)在數(shù)據(jù)流中,即發(fā)送端發(fā)出的每個字符在數(shù)據(jù)流中出現(xiàn)的時間是任意的,接收端預(yù)先并不知道。通過規(guī)定字符幀格式,接收端就知道發(fā)送端何時開始發(fā)送數(shù)據(jù),何時數(shù)據(jù)發(fā)送完。字符幀格式如圖7-1所示,由起始位、數(shù)據(jù)位、奇偶校驗位和停止位四部分組成。各部分的功能如下:
(1)起始位:占1位,始終為邏輯0低電平,用于向接收設(shè)備表示發(fā)送端開始發(fā)送一幀信息。
(2)數(shù)據(jù)位:根據(jù)情況可取5位、6位、7位或8位,低位在前,高位在后。
(3)奇偶校驗位:占1位,用于表征串行通信中采用奇校驗還是偶校驗。
(4)停止位:為邏輯“1”高電平,通??扇?位、1.5位或2位,向接收端表示一幀數(shù)據(jù)已傳送結(jié)束。圖7-1異步通信的字符幀格式在通信過程中,發(fā)送端逐幀發(fā)送信息,接收端逐幀接收信息。相鄰字符幀之間可以無空閑位,也可以有空閑位,由用戶根據(jù)需要設(shè)定。
2.同步通信
同步通信以數(shù)據(jù)塊為信息單位傳送,每幀信息包括成百上千個字符,每個字符也由5~8位組成,其格式如圖7-2所示。同步字符位于幀開頭,可以是1~2個字符。采用兩個同步字符,稱為雙同步方式;采用一個同步字符,稱為單同步方式。校驗字符有1~2個,位于幀末尾,用于接收端對接收到的數(shù)據(jù)字符的正確性進行校驗。圖7-2同步通信的字符幀格式同步通信中字符幀內(nèi)部位與位之間的傳送是同步的,字符與字符之間的傳送也是同步的,對同步時鐘的要求非常嚴(yán)格。
同步傳送的優(yōu)點是可得到較高的傳送速率,通??蛇_56Mb/s或更高;缺點是要求發(fā)送時鐘和接收時鐘保持嚴(yán)格同步,硬件較復(fù)雜。助記:河對岸有一景區(qū),只能通過一獨木橋到達對岸,為防止發(fā)生意外事件,景區(qū)管理部門設(shè)計了兩種方案組織游客過河:其一是由一導(dǎo)游領(lǐng)隊(起始位),后面是游客(5~8位),最后跟一位管理人員,只要第一隊與第二隊間有時間間隔(也可以沒有),游客以小隊為單位過獨木橋,到達對岸即可進入景區(qū);其二是在上橋前先組織好,先分成適當(dāng)?shù)男£?每一隊相當(dāng)于一個數(shù)據(jù)字符),再組合成大隊由管理部門指定一工作人員帶領(lǐng)大隊游客過河(該大隊通過過程中,不允許其他人員通過,也不允許相互插隊),在橋的另一端,工作人員只有在過橋人員中認(rèn)識第一位為景點工作人員時才允許大隊進入。
【練習(xí)】
項目:奇偶檢驗位的設(shè)置。
項目編號:EX7_1。
任務(wù)要求:某串行通信系統(tǒng)采用異步通信方式,起始位、停止位各1位,數(shù)據(jù)位8位,采用偶校驗,當(dāng)傳送數(shù)據(jù)為58H時,奇偶校驗位的值為多少?
分析:58H→01011000B。偶校驗是指所有傳送數(shù)位(數(shù)據(jù)位和校驗位)中,“1”的個數(shù)為偶數(shù)個。58H中“1”的個數(shù)為奇數(shù)個,因此校驗位為“1”。
7.1.2串行通信的制式
串行通信中,數(shù)據(jù)通常是在兩個站之間傳送的。按照數(shù)據(jù)流的方向可分成單工、半雙工和全雙工三種制式。
1.單工制式
使用一根傳輸線,由發(fā)送器傳送至接收器,這種方式為單工制式,如圖7-3所示。圖7-3單工制式
2.半雙工制式
使用同一根傳輸線既作接收又作發(fā)送,雖然數(shù)據(jù)可以在兩個方向上傳送,但某一時刻,只能有一端發(fā)送,這種方式為半雙工制式,如圖7-4所示。圖7-4半雙工制式
3.全雙工制式
使用兩根不同的傳輸線傳送,通信雙方能在同一時刻進行發(fā)送和接收操作,這種方式即為全雙工制式,如圖7-5所示。圖7-5全雙工制式
【練習(xí)】
項目:雙單片機全雙工電路設(shè)計。
項目編號:EX7_2。
任務(wù)要求:MCS-51單片機中RXD、TXD分別用來接收與發(fā)送,試?yán)L制雙單片機全雙工通信電路。
設(shè)計設(shè)備與軟件:計算機1臺,Proteus軟件1套。
設(shè)計步驟:
(1)打開Proteus,選擇兩片MCS-51單片機;
(2)參考后面的圖7-11完成電路連接。7.2MCS-51單片機的串行接口學(xué)習(xí)目標(biāo)◆理解MCS-51串行口的結(jié)構(gòu),并正確掌握SBUF在串口通信中的作用?!衾斫馓厥夤δ芗拇嫫鱏CON、PCON各位的功能?!衾斫馑姆N工作方式,并計算各工作方式的波特率。工作任務(wù)
◆設(shè)置串行口的工作方式。
◆設(shè)置串行通信的波特率。
MCS-51單片機內(nèi)部有一個可編程全雙工串行通信接口,可作為通用異步接收/發(fā)送器(UniversalAsynchronousReceiver/Transmitter,UART),也可作為同步移位寄存器。接下來討論該接口的內(nèi)部結(jié)構(gòu)、工作方式及波特率。
7.2.1串行口的結(jié)構(gòu)
該串行通信接口由數(shù)據(jù)發(fā)送/接收緩沖器SBUF、發(fā)送控制器、接收控制器、輸入移位寄存器、輸出控制門和波特率發(fā)生器T1組成,如圖7-6所示。其中,SBUF是兩個物理上獨立的特殊功能寄存器,占用同一地址99H。圖7-6串行口的內(nèi)部結(jié)構(gòu)示意圖圖7-6中,波特率發(fā)生器由定時器T1承擔(dān),為串行發(fā)送或接收提供移位時鐘;接收控制器是雙緩沖結(jié)構(gòu),在前一個字節(jié)被從接收緩沖器(SBUF)讀出之前,第二個字節(jié)即開始被接收(串行輸入至移位寄存器),但是在第二字節(jié)被接收完畢而前一個字節(jié)未被CPU讀取時,會丟失前一個字節(jié)的內(nèi)容。串行通信中,不論發(fā)送還是接收,都是由特殊功能寄存器SBUF與累加器A之間的傳送操作來完成的。發(fā)送時,向SBUF發(fā)“寫”命令(執(zhí)行“MOVSBUF,A”指令),向發(fā)送緩沖器SBUF裝載并開始由TXD(P3.1,串行數(shù)據(jù)發(fā)送端)引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完畢后使發(fā)送中斷標(biāo)志TI=1。在接收中斷標(biāo)志RI=0的條件下,置允許接收位REN=1啟動接收,一幀數(shù)據(jù)進入移位寄存器,并裝載到接收緩沖器SBUF中,RI=1,執(zhí)行“讀”命令(“MOVA,SBUF”指令),由接收緩沖器SBUF取出信息并通過內(nèi)部總線送給CPU。
【練習(xí)】
項目:單字節(jié)數(shù)據(jù)發(fā)送。
項目編號:EX7_3。
任務(wù)要求:編程,完成將內(nèi)部RAM中地址為45H的內(nèi)存單元中的數(shù)據(jù)通過串口發(fā)送出去。
分析:將數(shù)據(jù)由串口發(fā)送,可采用“MOVSBUF,A”指令,因此:
MOVA, 45H
MOVSBUF, A
7.2.2串行口的控制寄存器
MCS-51對串口的控制是通過對串行口控制寄存器SCON和電源控制寄存器PCON兩個特殊功能寄存器的操作來實現(xiàn)的。
1.串行口控制寄存器SCON
SCON用以設(shè)定串行口的工作方式、接收/發(fā)送控制以及狀態(tài)標(biāo)志。SCON的字節(jié)地址為98H,可進行位尋址,其格式如圖7-7所示。圖7-7SCON的格式
(1)?SM0和SM1:工作方式選擇位。這兩位用于設(shè)定串行口的工作方式,詳細定義如表7-1所示。
(2)?SM2:多機通信控制位。該位主要在方式2和方式3下使用。在方式2或方式3下,當(dāng)SM2=0時,串行口以單機發(fā)送或接收方式工作,TI和RI以正常方式被激活,但不會引起中斷請求;當(dāng)SM2=1且RB8=1時,RI不僅被激活,而且可以向CPU請求中斷。在方式0下,SM2不用,設(shè)置為0。在方式1下,SM2也應(yīng)設(shè)置為0,此時RI只有在接收電路接收到停止位“1”時才被激活成“1”,并能自動發(fā)出串行口中斷請求(中斷開放)。
(3)?REN:允許接收控制位。REN=0,禁止串行口接收;REN=1,允許串行口接收。該位由軟件置位或清零。
(4)?TB8:發(fā)送數(shù)據(jù)第9位。該位用于在方式2和方式3下存放發(fā)送數(shù)據(jù)第9位。該位由軟件置位或清零。
(5)?RB8:接收數(shù)據(jù)第9位。該位用于在方式2和方式3下存放接收數(shù)據(jù)第9位(奇偶位或地址/數(shù)據(jù)標(biāo)識位)。在方式1下,若SM2=0,則RB8用于存放接收到的停止位。在方式0下,不使用RB8。
(6)?TI:發(fā)送中斷標(biāo)志位。在方式0下,發(fā)送電路發(fā)送完第8位數(shù)據(jù)時,TI由硬件置位;在其他方式下,TI在發(fā)送電路開始發(fā)送停止位時置位。不管是什么方式,都需要由軟件清零。
(7)?RI:接收中斷標(biāo)志位。在方式0下,RI在接收電路接收到第8位數(shù)據(jù)時由硬件置位;在其他方式下,RI總是在接收電路接收到停止位的中間位置時置位。該位由軟件清零。
2.電源控制寄存器PCON
PCON的字節(jié)地址為87H,不能進行位尋址,其格式如圖7-8所示。圖7-8PCON的格式
PCON中與串行通信有關(guān)的僅D7位,即SMOD。SMOD為波特率倍增位。在串行口方式1、方式2、方式3下,串行通信波特率與2SMOD成正比,即在SMOD?=?1時,波特率提高1倍。
【練習(xí)】
項目:串口工作方式設(shè)置。
項目編號:EX7_4。
任務(wù)要求:編程,設(shè)置串口工作于方式1,且允許串行口接收。
分析:工作方式的設(shè)置實際就是對SCON寄存器的配置,因此,其步驟如下:
(1)理解SCON各位的含義;
(2)根據(jù)需要設(shè)置SCON各位。
參考代碼如下:
SETB SM1
CLR SM0
SETB REN
7.2.3串行口的工作方式
MCS-51單片機的串行口有方式0、方式1、方式2和方式3等四種工作方式。
1.工作方式0
在工作方式0下,串行口作為同步移位寄存器使用,數(shù)據(jù)由RXD端輸入,同步移位脈沖由TXD端輸出,發(fā)送或接收的是8位數(shù)據(jù),低位在先。
發(fā)送操作在TI=0時進行,CPU通過“MOVSBUF,A”指令給“SBUF(發(fā)送)”送出發(fā)送字符后,即從RXD線上發(fā)出8位數(shù)據(jù)。8位數(shù)據(jù)發(fā)送完后,TI由硬件置位,在中斷開放的情況下,可向CPU請求中斷。CPU響應(yīng)中斷后先用軟件對TI清零,然后再給“SBUF(發(fā)送)”送下一個欲發(fā)送字符,并重復(fù)上述過程。在進行發(fā)送操作時,串行口相當(dāng)于一個并入串出的移位寄存器。接收過程在RI=0和REN=1的條件下啟動。串行數(shù)據(jù)由RXD線輸入。接收電路接收到8位數(shù)據(jù)后,RI自動置“1”并發(fā)出串行口中斷請求(若中斷開放)。CPU查詢到RI=1或響應(yīng)中斷后便通過“MOVA,SBUF”指令把“SBUF(接收)”中的數(shù)據(jù)送入累加器A。RI也由軟件復(fù)位。
提示:MCS-51的串行口工作在方式0下的主要用途是通過連接外部同步移位寄存器擴張一個并行I/O口。
2.工作方式1
在工作方式1下,串行口被設(shè)定為10位異步通信方式。字符幀格式如圖7-9所示,包括1位起始位、1位停止位和8位數(shù)據(jù)位。圖7-9工作方式1的字符幀格式
TI=0時,執(zhí)行“MOVSBUF,A”指令開始發(fā)送,發(fā)送電路自動在8位發(fā)送字符前后分別添加1位起始位和停止位,并在移位脈沖的作用下在TXD線上一次發(fā)送一幀信息,發(fā)送完后自動維持TXD線為高電平。TI由硬件在發(fā)送停止位時置位。接收操作在RI=0且REN=1的條件下進行。接收電路以所選波特率的16倍速率采樣RXD線,檢測到RXD端輸入電平發(fā)生負(fù)跳變(起始位)時,內(nèi)部16分頻計數(shù)器復(fù)位,并將1FFFH寫入移位寄存器。計數(shù)器的16個狀態(tài)把傳送一位數(shù)據(jù)的時間16等分,在每個時間的7、8、9三個計數(shù)狀態(tài)位,檢測器采樣RXD端電平,接收的值是三次采樣中至少兩次相同的值(三中取二原則)。如果在第一位時間內(nèi)接收到的值不為0,則復(fù)位接收電路,重新搜索RXD端輸入電平的負(fù)跳變;若接收到的值是0,則說明起始位有效,將其移入移位寄存器,并開始接收該幀數(shù)據(jù)的其余信息,仍然以三中取二原則來確定所采樣數(shù)據(jù)的值。在接收到第9位數(shù)據(jù)位(停止位)時,接收電路在同時滿足RI=0且SM2=0或接收到的停止位為“1”時,把接收到的8位數(shù)據(jù)存入SBUF(接收)中,把停止位送入RB8中,使RI=1并發(fā)出串行口中斷請求(若中斷開放)。如果條件不滿足,那么這次接收到的數(shù)據(jù)被舍去,不裝入SBUF(接收)中。
3.工作方式2和工作方式3
工作方式2和工作方式3均為11位異步收發(fā),兩者的差異在于通信波特率不同:方式2的波特率由fosc經(jīng)32或16分頻得到,方式3的波特率由定時器T1或T2的溢出率經(jīng)32分頻后提供。TXD為數(shù)據(jù)發(fā)送端,RXD為數(shù)據(jù)接收端,傳送的一幀數(shù)據(jù)格式如圖7-10所示,包括1起始位、1停止位、8位數(shù)據(jù)位、1位附加的第9位(發(fā)送時為SCON中的TB8,接收時為RB8),第9位可由用戶安排,可以是奇偶校驗位,也可以是其他控制位。圖7-10工作方式2、3的數(shù)據(jù)幀格式由于方式2和方式3有9位有效數(shù)據(jù)位,因此發(fā)送時除要把8位待發(fā)送數(shù)據(jù)裝入SBUF(發(fā)送)外,還要把第9位數(shù)據(jù)位預(yù)先裝入SCON的TB8中,可用以下指令中的一條裝入:
SETB TB8
CLR TB8
第9位數(shù)據(jù)位的值裝入TB8后,用一條以SBUF為目的的傳送指令把發(fā)送數(shù)據(jù)裝入SBUF來啟動發(fā)送過程。一幀數(shù)據(jù)發(fā)送完后,硬件對TI置位,CPU便可以通過查詢TI來以同樣的方法發(fā)送下一幀數(shù)據(jù)。接收操作在RI=0且REN=1的條件下進行。接收電路以所選波特率的16倍速率采樣RXD線,檢測到RXD端輸入電平發(fā)生負(fù)跳變(起始位)時,內(nèi)部16分頻計數(shù)器復(fù)位,并將1FFFH寫入移位寄存器。計數(shù)器的16個狀態(tài)把傳送一位數(shù)據(jù)的時間16等分,在每個時間的7、8、9三個計數(shù)狀態(tài)位,檢測器采樣RXD端電平,接收的值是三次采樣中至少兩次相同的值(三中取二原則)。如果在第一位時間內(nèi)接收到的值為0,說明起始位有效,將其移入移位寄存器,開始接收這一幀數(shù)據(jù)。接收時,數(shù)據(jù)從右邊移入移位寄存器,1從左邊移出,在起始位0移到最左邊時,控制電路進行最后一次移位。當(dāng)RI=0且SM2=0(或接到的第9位數(shù)據(jù)為1)時,接收到的數(shù)據(jù)裝入SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,并向CPU請求中斷(若中斷開放)。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,一位時間后繼續(xù)搜索RXD的負(fù)跳變。
【練習(xí)】
項目:多字節(jié)數(shù)據(jù)發(fā)送。
項目編號:EX7_5。
任務(wù)要求:編程,將內(nèi)部RAM中初始地址為40H的10個數(shù)據(jù)通過串口發(fā)送出去(串口工作于方式1)。
分析:首先需要從存儲單元取出數(shù)據(jù),再發(fā)送該數(shù)據(jù)(可參考項目EX7_3),等待發(fā)送完一個字節(jié),再取下一個數(shù)據(jù)進行發(fā)送,直到發(fā)送完10個數(shù)據(jù)。
注意:發(fā)送中斷標(biāo)志位TI需硬件清零。參考代碼如下:
LOOP: MOV R0, #40H
MOV A, @R0
INC R0
MOV SBUF, A
JNB TI, $
CLR TI
CJNE R0, #4AH, LOOP
7.2.4波特率
波特率是串行通信中的重要指標(biāo),反映了串行傳送數(shù)據(jù)的速率,單位是b/s(bitpersecond)。對于MCS-51單片機的串行口,工作方式不同,其波特率也不同。用戶應(yīng)根據(jù)實際情況選擇適當(dāng)?shù)墓ぷ鞣绞郊巴ㄐ挪ㄌ芈省?/p>
1.工作方式0的波特率
在工作方式0下,串行口的通信波特率固定為fosc/12(fosc為主機頻率)。
2.工作方式2的波特率
在工作方式2下,串行口的通信波特率為:,即在PCON中的SMOD位為1時,波特率為1/32?×?fosc,SMOD位為0時,波特率為1/64?×?fosc。
3.工作方式1或工作方式3的波特率
這兩種工作方式的通信波特率是由定時器的溢出率決定的,計算公式為: 。其中,定時器T1的溢出率定義為。
T1作為波特率發(fā)生器時,最典型的用法是使T1工作在自動裝入的8位定時器方式(即方式2),此時的波特率為:2SMOD?×?fosc/[32?×?12?×?(256-TH1)]。常用的串行口通信波特率以及各參數(shù)的關(guān)系如表7-2所示。
【練習(xí)】
項目:波特率設(shè)置。
項目編號:EX7_6。
任務(wù)要求:工作于方式1,晶振為11.0592MHz,設(shè)置串口波特率為9600b/s。
步驟:
(1)設(shè)置定時器T1的工作方式。
(2)確定波特率是否需要翻倍;
(3)確定定時器的計數(shù)初值。
(4)啟動定時器T1。參考代碼如下:
MOV TMOD, #20H ;T1工作于方式2
MOV PCON, #00H ;波特率不翻倍
MOV TL1, #0FDH
MOV TH1, #0FDH
SETB TR1 ;啟動T17.3串行口通信程序的設(shè)計學(xué)習(xí)目標(biāo)◆學(xué)會使用工作方式0?!魧W(xué)會制定串行通信協(xié)議?!魧W(xué)會編寫串行通信程序。工作任務(wù)◆設(shè)計雙單片機串行通信程序。前面學(xué)習(xí)了MCS-51單片機串口的內(nèi)部結(jié)構(gòu)、工作方式及相應(yīng)的波特率,下面我們通過幾個簡單的應(yīng)用實例來學(xué)習(xí)單片機串行通信軟件的編寫。
1.基于工作方式0的循環(huán)彩燈
在前面的介紹中我們知道,當(dāng)MCS-51單片機的串行口工作于工作方式0時,其相當(dāng)于一個同步移位寄存器,通過外接8位串行輸入和并行輸出的同步移位寄存器(74LS164或CD4094)實現(xiàn)串行數(shù)據(jù)變換為并行數(shù)據(jù)輸出,通過外接8位并行輸入和串行輸出的同步移位寄存器(74LS165或CD4014)實現(xiàn)并行變串行。
在前面的章節(jié)中,我們學(xué)到了用P1口作輸出口,編寫程序控制P1口各發(fā)光二極管依次輪流點亮,每次點亮的時間為0.5s。在下面的例1中,控制8只彩燈,占用了8個端口,在端口資源緊張的情況下,就要考慮端口的擴展。例7-1采用CD4094進行端口擴展的電路原理圖如圖7-11所示,試編寫程序?qū)崿F(xiàn)從D1到D8循環(huán)點亮,每次的點亮?xí)r間為0.5s。
分析:CD4094是8位串行輸入(D端,2腳)并行輸出的同步移位寄存器。CLK為同步脈沖輸入端。STB為控制端,若STB=0,則8位并行數(shù)據(jù)輸出端關(guān)閉,但允許串行數(shù)據(jù)從D端輸入;若STB=1,則D輸入端關(guān)閉,但允許8位數(shù)據(jù)并行輸出。圖7-114094擴展的循環(huán)彩燈電路圖軟件設(shè)計:
(1)流程圖。通過分析電路圖,設(shè)置流程圖如圖7-12所示。圖7-12程序流程圖(a)主程序流程圖;(b)中斷服務(wù)程序流程圖
(2)參考程序代碼如下:
;**************************************************
;文件名:4094彩燈.ASM
;作者:zjliu
;說明:發(fā)光二極管接CD4094并行輸出口
;RXD發(fā)送串行數(shù)據(jù),TXD提供移位時鐘
;**************************************************
ORG 0000H
STB BITP3.2
START: LJMP MAIN ;轉(zhuǎn)向主程序
ORG 0023H
AJMP S16 ;轉(zhuǎn)向中斷服務(wù)程序
ORG 0100H
;主程序
MAIN: MOV SCON,#00H
;串行口初始化為方式0
MOVIE,#90H ;開串行口中斷
CLR STB ;禁止CD4094并行輸出
MOVA,#80H ;起始顯示碼送A
MOVSBUF,A ;8051串行輸出
LOOP: AJMPLOOP ;等待串行口輸出完畢
;中斷服務(wù)程序
S16: SETB STB ;點亮發(fā)光二極管
ACALL DELAY ;延時0.5s
CLR TI;清發(fā)送中斷標(biāo)志
RR A ;準(zhǔn)備點亮下一位
CLR STB;滅顯示
MOVSBUF,A ;串行口輸出
RETI
2.雙單片機串行口通信程序設(shè)計
實際應(yīng)用中,常常需要單片機與單片機、單片機與PC機或單片機與其他嵌入式系統(tǒng)交換信息?,F(xiàn)舉例說明單片機與單片機之間是如何通過串行口進行數(shù)據(jù)交換的。
例7-2已知某一系統(tǒng)中有兩片8051:一片用于數(shù)據(jù)采集,所采集的10個數(shù)據(jù)存于起始地址為40H的內(nèi)部RAM中;另一片用于數(shù)據(jù)處理,接收的結(jié)果也存放于40H開始的內(nèi)部RAM中。試畫出兩片8051采用串口連接的電路原理圖并編寫通信子程序。分析:8051有一個全雙工可編程串行口,具有UART功能,該串口的數(shù)據(jù)發(fā)送端為TXD,數(shù)據(jù)接收端為RXD,只需要對串行口的控制寄存器和波特率作適當(dāng)設(shè)置,便可在程序控制下完成數(shù)據(jù)收發(fā)。兩片8051連接的原理簡圖如圖7-13所示。圖中,U1為主機(數(shù)據(jù)采集),U2為從機(數(shù)據(jù)處理)。U1的TXD、RXD分別與U2的RXD、TXD相連。這種方式利用單片機自身的TLL電平直接傳輸信息,其傳輸距離一般不超過5m。在較遠距離通信時,通常采用RS-232C標(biāo)準(zhǔn)電平進行點到點連接。在使用RS-232C時,注意TTL電平與RS-232C電平的轉(zhuǎn)換一般采用MAX232芯片。圖7-13兩片8051連接的原理簡圖軟件設(shè)計:
(1)通信協(xié)議。兩片單片機能夠?qū)崿F(xiàn)良好的通信,往往需要做一些約定,比如如何建立連接,連接是否建立成功,傳輸速率等。這種約定也就是通信協(xié)議。本例協(xié)議內(nèi)容如下:
①波特率為9600b/s,采用主從式通信,即主機(U1)發(fā)送,從機(U2)接收,串行口工作于方式1。
②握手過程:當(dāng)U1發(fā)送時,先發(fā)送聯(lián)絡(luò)信號“F1”,U2接收到后回答一個“F2”的應(yīng)答信號,表示同意接收,若未收到,則繼續(xù)呼叫。③數(shù)據(jù)傳輸過程:U1在收到U2發(fā)回的應(yīng)答信號“F2”后便開始發(fā)送數(shù)據(jù)。
④校驗過程:采用“和校驗”方式,數(shù)據(jù)塊發(fā)送完后便發(fā)送“校驗和”信號,U2在接收到“校驗和”后與計算出的“校驗和”作比較。若兩者相等,則說明傳輸正確,U2回答“00H”;若不相等,則U2回答“FFH”,請求重發(fā)。
⑤U1接收到“00H”,通信結(jié)束;接收到“FFH”,重新發(fā)送數(shù)據(jù)。
(2)程序流程圖如圖7-14所示。
(3)參考程序代碼。系統(tǒng)振蕩頻率為11.0592MHz,串行口工作于方式1,波特率為9600b/s,讓定時器T1工作于方式2,查表得TH1=TL1=FDH,PCON的SMOD位為0。
①發(fā)送子程序(U1):
;***********************************************
;文件名:p2ps.asm
;作者:zjliu
;說明:完成從40H開始數(shù)據(jù)塊中10個數(shù)據(jù)的發(fā)送
;***********************************************
ORG 0300H圖7-14程序流程圖(a)U1發(fā)送程序流程圖;(b)U2接收程序流程圖
【練習(xí)】
項目:雙單片機通信程序設(shè)計。
項目編號:EX7_7。
任務(wù)要求:單片機工作于方式1,晶振為11.0592MHz,波特率為9600b/s,完成通信協(xié)議的制定,并完成通信程序的編寫、調(diào)試。
設(shè)計設(shè)備與軟件:計算機1臺,MedWin或其他同類軟件1套,Proteus軟件1套。設(shè)計步驟:
(1)制定通信協(xié)議。
(2)軟件設(shè)計并用MedWin或其他軟件完成編碼。
(3)仿真調(diào)試代碼,編譯生成.hex文件并加載至單片機。
(4)調(diào)試并完成練習(xí)報告。7.4單片機與PC機通信的設(shè)計學(xué)習(xí)目標(biāo)◆使用VirtualSerialPortKit、Proteus、SSCOM仿真單片機與PC機通信電路及串行通信程序?!粼O(shè)計并制作單片機與PC機通信的RS-232C接口電路,對電路中的故障現(xiàn)象進行分析并加以解決,通過調(diào)試得到正確結(jié)果。
工作任務(wù)◆測試串口通信接口電路并對結(jié)果進行描述?!粼O(shè)計、制作與調(diào)試串口通信系統(tǒng)?!糇珜懺O(shè)計文檔與測試報告。
實際應(yīng)用中,常常采用單片機作為下位機負(fù)責(zé)數(shù)據(jù)采集、接收上位機命令并發(fā)送給執(zhí)行結(jié)構(gòu),上位機則完成管理數(shù)據(jù)(采用數(shù)據(jù)庫)、向下位機發(fā)送指令等功能,這種上、下位機的通信便可采用串行方式。在此,我們將討論單片機與計算機通信的硬件設(shè)計及軟件設(shè)計,希望對讀者的工作有所幫助。
1.硬件設(shè)計
由于PC機上是RS-232C標(biāo)準(zhǔn)的串口,采用的是負(fù)邏輯,而MCS-51單片機的輸入、輸出電平則是TTL電平,因此,要實現(xiàn)單片機與PC機的通信就必須對單片機的TTL電平作電平轉(zhuǎn)換。完整的電路如圖7-15所示。圖7-15串口通信下位機電路圖7-15中,虛擬終端為Proteus提供的虛擬儀器,它使得用戶可以用PC機的鍵盤發(fā)送或傳送串行數(shù)據(jù),也可以用屏幕顯示接收到的串行數(shù)據(jù),因此可采用虛擬終端對串行通信程序進行調(diào)試驗證。
為了更貼近實際應(yīng)用,在此介紹另外一種串行通信仿真方式。該方式采用Proteus中的COMPIM、FabulaTech公司的虛擬串口軟件VirtualSerialPortKit(Version5.3試用版)、串口調(diào)試軟件SSCOM3.2實現(xiàn),電路如圖7-16所示。圖7-16Proteus仿真電路下面首先對使用的工具作一簡單介紹。
VirtualSerialPortKit是一款可以成對創(chuàng)建虛擬串口,并且將兩虛擬串口通過虛擬串口線連接起來的軟件。創(chuàng)建串口對的過程如下:
(1)打開VirtualSerialPortKit。
(2)選擇“Port”菜單,再選擇“AddPair”,彈出“AddVirtualSerialPorts”對話框,如圖7-17所示。
(3)分別從兩個下拉框中選擇端口(下拉框中對已存在的串口在其后面加“overlapped”,如“COM1(overlapped)”),再單擊“OK”,創(chuàng)建串口對成功。圖7-17添加串口對
SSCOM3.2是一款功能較強大的串口調(diào)試軟件,其主界面如圖7-18所示,圖7-18中,上方為接收顯示窗口,接收到的數(shù)據(jù)顯示在該窗口中,最底端的狀態(tài)欄顯示各種信息,待發(fā)送數(shù)據(jù)從發(fā)送窗口輸入,串口號、波特率、數(shù)據(jù)位、停止位、校驗位等用于串口設(shè)置。圖7-18串口調(diào)試軟件
COMPIM是Proteus提供的串行口物理接口模型。COMPIM有8個引腳:TXD、RXD、RTS、CTS、DSR、DTR、DCD和RI。其中,TXD、RTS和DTR為設(shè)備的輸入并在物理端口上成為輸出;RXD、CTS、DSR、DCD和RI為物理端口的輸入并在設(shè)備上成為輸出。
使用COMPIM時,需要做適當(dāng)設(shè)置,選中“COMPIM”并打開其屬性進入到“EditComponent”對話框,如圖7-19所示。各選項功能及默認(rèn)值如表7-3所示。
2.軟件設(shè)計
(1)流程圖如圖7-20所示。圖7-19COMPIM的設(shè)置圖7-20流程圖(a)主程序;(b)中斷服務(wù)程序
(2)程序編寫如下:
;***********************************************
;文件名:pcmcu.asm
;作者:zjliu
;說明:接收上位機指令,1——紅燈亮并發(fā)回RED
;2——綠燈亮并發(fā)回GREEN
;***********************************************
ORG 0000H
RED BIT P1.0
GREEN BIT P1.1
LJMP MAIN
ORG 0023H
LJMP SI ;跳至中斷服務(wù)程序
;主程序
ORG 0100H
MAIN: MOV SP, #60H
MOV SCON, #50H ;設(shè)置串口工作方式為方式1
MOV TMOD, #20H ;設(shè)置定時器1工作方式為方式1
ANL PCON, #7FH
MOV TH1, #0FDH
;設(shè)置波特率為9600b/s,時鐘為11.0592?MHz
MOV TL1, #0FDH
SETB TR1 ;啟動定時器1
SETB EA ;開CPU中斷
WAIT: SETB ES ;開串口中斷
SJMP WA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋建筑實習(xí)報告錦集5篇
- 學(xué)生撒謊檢討書15篇
- 教育目的心得模板10篇
- 產(chǎn)科護士工作心得體會8篇
- 疾病查房-帕金森病(護理類)課件
- 海事處廉政教育月黨課
- 七年級信息技術(shù)教案
- 七年級美術(shù)的說課稿10篇
- 浙江省紹興市職業(yè)教育中心2024-2025學(xué)年高一上學(xué)期期中考試中國特色社會主義試題
- 借款協(xié)議書(2篇)
- MOOC 心理健康與創(chuàng)新能力-電子科技大學(xué) 中國大學(xué)慕課答案
- 黃蒿界礦井及選煤廠建設(shè)項目環(huán)境影響報告書
- MOOC 數(shù)字電路分析與設(shè)計-浙江大學(xué) 中國大學(xué)慕課答案
- 感動中國人物張桂梅心得體會(30篇)
- 2024年云南昆明市公安局文職輔警招聘筆試參考題庫附帶答案詳解
- 采購計劃員年終工作總結(jié)
- 技術(shù)總監(jiān)年度述職報告
- 第十四章出口管制課件
- 常用井下工具原理與用途課件
- 廣東省東莞市2023-2024學(xué)年高一上學(xué)期期末生物試題
- 腦病科中醫(yī)健康宣教課件
評論
0/150
提交評論