pc機與單片機串行通信課程設計_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  課程名稱:監(jiān)控系統(tǒng)課程設計 </p><p>  設計題目:PC機與單片機串行通信 </p><p>  院 系: </p><p>  專 業(yè): </p><p>  年 級:

2、 </p><p>  姓 名: </p><p>  指導教師: </p><p><b>  XX大學XX區(qū)</b></p><p>  xx年 xx月xx日</p><p>  課 程 設 計

3、任 務 書</p><p>  專 業(yè): 姓 名 學 號 </p><p>  開題日期: 年 月 日 完成日期:年 月 日</p><p>  題 目 :PC機與單片機的串行通信 </p><p>

4、<b>  一、設計的目的</b></p><p>  串行通信技術是單片機系統(tǒng)開發(fā)中常用的技術之一,串行口也是單片機常規(guī)內部集成的功能。設計PC機與單片機進行串行通信硬件電路及軟件流程,本設計通過定時器來設定通信的波特率,通過設置幾個寄存器來設定工作方式。PC機與單片機之間則由RS-232C接口相連。</p><p>  二、設計的內容及要求</p>

5、<p>  1、查閱資料,學習PC與 一個或多個單片機串口通信設計; </p><p>  2、硬件設計,給出原理框圖,并簡要介紹各組成部分; </p><p>  3、軟件設計,給出程序流程圖和程序清單,并說明各部分程序要實

6、現; </p><p>  4、總結,結出結論 </p><p><b>  三、指導教師評語 </b></p><p>  四、成 績 </p><

7、;p>  指導教師 (簽章) </p><p><b>  年月日</b></p><p><b>  1 設計意義</b></p><p>  單片機由于性價比高、使用靈活等優(yōu)點而廣泛應用于各種電子系統(tǒng)、自動</p><p>  控制系統(tǒng),但是存儲容量小。處理的數據量不大。

8、為了克服這一缺點,可以將單</p><p>  片機連接到PC機上,由單片機采集數據,然后將數據匯總到PC機,再進行各種數</p><p>  據處理。單片機與PC機之間的通訊是其中的關鍵技術之一,PC機與單片機間一般</p><p>  采用的是串行通信,由于51系列單片機中一般集成了雙全工的串行端口,只要配</p><p>  以電平轉換

9、的驅動電路、隔離電路就可組成一個簡單可行的通信接口。</p><p><b>  2 硬件設計</b></p><p><b>  2.1 整體設計</b></p><p>  在PC系統(tǒng)中都裝有異步通信適配器,利用它可以實現異步串行通信。適配器的核心元件是可編程的intel8251芯片,它使PC有能力與其他具有RS-23

10、2標準的接口的計算機或設備進行通信,而MCS-51單片機本身具有一個雙全工的串行口,因此只要配上電平轉換電路就可以和RS-232接口組成一個簡單的通信通道。</p><p>  簡單的PC與單片機通信只要3根線就可以了,單片機的TXD、RXD與PC的RXD、TXD分別相連,連接地線。由于51系列單片機的串行口使用的是TTL電平,因此在PC和單片機間要有RS-232電平轉換電路,圖1所示為PC與單片機的通信圖。&l

11、t;/p><p>  圖1 PC機與單片機的通信圖</p><p><b>  2.2 芯片選擇</b></p><p> ?。?)MCS-51單片機[1]</p><p>  MCS-51單片機內部具有一個采用UART工作方式的全雙工的串行通信接口。該接口不僅可以同時進行數據的接受和發(fā)送,也可以作為同步移位寄存器使用。該接

12、口有4種工作方式,其中字符格式有8位、10位、11位,并可以以不同的波特率工作。</p><p>  1〉串行口的內部結構</p><p>  MCS-51單片機的串行接口結構如圖2所示:</p><p>  圖2 MCS-51單片機的串行接口圖</p><p>  該接口有兩根串行通信傳輸線RXD(P3.0)和TXD(P3.1),以串行形式

13、與外部邏輯接口。數據的接收和發(fā)送就是通過這兩根信號線來實現的。</p><p>  在物理上存在兩個互相獨立的接收、發(fā)送緩沖器SBUF,屬于特殊功能寄存器,這樣可以同時進行數據的接收和發(fā)送,實現全雙工傳送。</p><p>  2〉串行口的控制寄存器</p><p>  ①串行口數據緩沖器SBUF</p><p>  兩個互相獨立的接收、發(fā)送

14、緩沖器SBUF公用一個地址99H對應著2個寄存器:發(fā)送寄存器和接收寄存器。發(fā)送緩沖器用于存放要發(fā)送的數據,只能寫入,不能讀出。接收緩沖器用于存放接收到的數據,只能讀出,不能寫入。通過辨認對SBUF的指令是讀指令還是寫指令來區(qū)別是對接收緩沖器還是對發(fā)送緩沖器進行操作。</p><p>  讀SBUF,比如MOV A,SBUF指令,就是讀接收緩沖器的內容;</p><p>  寫SBUF,比

15、如MOV SBUF,A指令,就是修改發(fā)送緩沖器的內容。</p><p> ?、诖锌刂萍拇嫫鱏CON</p><p>  SCON可用于確定串行通信的工作方式和控制串行通道的某些功能,監(jiān)視和控制串行口的工作狀態(tài),也可用于存放要發(fā)送和接收到的第9個數據(TB9、RB8),并沒有接收和發(fā)送中斷標志RI和TI。</p><p>  表1 SCON的格式</p>

16、;<p>  SM0、SM1:串行口操作模式選擇位,指定了串行通信的工作方式。串行接口有4種工作方式。各種工作方式的區(qū)別在于功能、數據格式和波特率的不同。</p><p>  表2 串行口的各種工作方式</p><p>  在任務6中,就是使用了MOV SCON,#40H(01000000B)指令來設置單片機串行口的工作方式為方式1的。</p><p&g

17、t;  SM2:多機通信控制位。主要用于方式2和方式3 中(數據為9位)。</p><p>  在方式2和方式3處于接收狀態(tài)時,如SM2=1,REN=1,且接收到的第9位數據RB8是0,則RI(接收中斷標志位)不會被置1。只有在接收到的第9位數據RB8是1,則RI才會被置1。</p><p>  在方式2和方式3處于接收狀態(tài)時,如SM2=0,無論接收到的第9位數據RB8時0還是1,RI都會

18、被置1。</p><p>  在方式1中,如SM2=1,只有在接收到有效停止位時,則RI才會被置1。</p><p>  在模式0中,SM2必須為0。</p><p>  REN:允許串行接收控制位。由軟件置1或清除。REN=1,允許接收。啟動串行口的RXD,開始接收數據;REN=0,禁止接收。</p><p>  在任務6中就是用指令SET

19、B REN來允許乙機的串行口接收的。</p><p>  TB8:在方式2 和方式3時,它就是要發(fā)送的第9個數據位,一般是程控位2。按需要由軟件進行置1或清0。如在多處理通信中,用于表示是地址楨還是數據楨。在模式9中。此位不用。</p><p>  RB8:接收數據位8。在方式2和3時,它是接收到的第9個數據位。在模式1中,如SM2=0,RB8時接收到的停止位;在模式0中,此位不用。&l

20、t;/p><p>  TI:發(fā)送中斷標志位。在模式0中,當發(fā)送完第8位數據時,由硬件置1;在其他模式中,在發(fā)送停止位前,由硬件置1。TI=1時,申請中斷,CPU響應中斷后,發(fā)送下一楨數據。</p><p>  RI:接收中斷標志位。在模式0中,接收第8位結束時,由硬件置1;在其他模式中,在接收停止位的半中間,由硬件置1。RI=1時,申請中斷,要求CPU取走數據。但在模式一中,SM2=1時,如未

21、接收到有效的停止位,則不會對RI置位。</p><p>  在任何模式中,CPU響應中斷后,都必須用軟件來清除RI和TI。</p><p>  在任務6中,在甲機發(fā)送和乙機接收程序中,都有JBC這樣一條指令,就是用來清除TI和RI標志的。</p><p>  ③特殊功能寄存器PCON</p><p>  PCON主要是為CHMOS型單片機的電

22、源控制而設置的SFR,在HMOS的MCS-51單片機中,除了最高位SMOD位外,其他位都是虛設的。</p><p>  表3 PCON的格式</p><p>  SMOD是串行口波特率選擇位,只有這一位和串行通信有關。方式0的波特率固定,當使SMOD=1時,則使方式1、方式2、方式3的波特率加倍。當SMOD=0時,各工作方式的波特率不加倍。</p><p>  3〉

23、串行口的工作方式</p><p>  MCS-51單片機的串行接口有四種工作方式,用戶可以通過SCON中的SM1、SM0位來選擇。</p><p><b> ?、俜绞? </b></p><p>  方式0為同步移位寄存器方式,其波特率是固定的,為振蕩頻率f的1/12,數據由RXD(P3.0腳)端輸入,同步移位脈沖由TXD(P3.1腳)端輸出,

24、發(fā)送、接收的是8位數據,低位在前。</p><p><b>  發(fā)送:</b></p><p>  當一個數據寫入串行口發(fā)送緩沖器SBUF時,串行口將8位數據以fosc/12的波特率從RXD引腳輸出(低位在前),發(fā)送完置中斷標志TI為1,請求中斷。在再次發(fā)送數據之前,必須由軟件清TI為0。具體接線圖如圖3所示。其中,74LS164為串入并出移位寄存器。</p&g

25、t;<p>  圖3 方式0 的發(fā)送接線圖</p><p><b>  接收:</b></p><p>  在滿足REN=1和RI=0的條件下,串行口即開始從RXD端以fosc/12的波特率輸入數據(低位在前),當接收完8位數據后,置中斷標志RI為1,請求中斷。在再次接收數據之前,必須由軟件清RI為0。具體接線圖如圖4所示。其中,74LS165為并入串出

26、移位寄存器。</p><p>  圖4 方式0 的接收接線圖</p><p>  串行控制寄存器SCON中的TB8和RB8在方式0中未用。值得注意的是,每當發(fā)送或接收完8位數據后,硬件會自動置TI或RI為1,CPU響應TI或RI中斷后,必須由用戶用軟件清0。方式0時,SM2必須為0。</p><p><b> ?、诜绞?</b></p&g

27、t;<p>  在方式1狀態(tài)下,串行口為8位異步通信接口。一楨信息為10位,包括1位起始位(0),8位數據位(低位在前)和1位停止位(1)。如圖5所示</p><p>  圖5 方式1的信息格式</p><p>  TXD為發(fā)送端,RXD為接收端。波特率不變。方式1是單片機與PC機串行通信最常用的方式。</p><p><b>  發(fā)送:&l

28、t;/b></p><p>  發(fā)送時,數據從TXD端輸出,當數據寫入發(fā)送緩沖器SBUF后,啟動發(fā)送器發(fā)送。當發(fā)送完一幀數據后,置中斷標志TI為1。方式1所傳送的波特率取決于定時器1的溢出率和PCON中的SMOD位。 </p><p><b>  接收:</b></p><p>  接收時,由REN置1,允許接收,串行口采樣RXD,當采

29、樣由1到0跳變時,確認是起始位“0”,開始接收一幀數據。當RI=0,且停止位為1或SM2=0時,停止位進入RB8位,同時置中斷標志RI;否則信息將丟失。所以,方式1接收時,應先用軟件清除RI或SM2標志。</p><p><b> ?、鄯绞?</b></p><p>  方式2下,串行口為11位UART,傳送波特率與SMOD有關。發(fā)送或接收一幀數據包括1位起始位0,8

30、位數據位,1位可編程位(用于奇偶校驗)和1位停止位1。其幀格式如圖6所示。</p><p>  圖6 方式2 的信息幀格式</p><p><b>  發(fā)送:</b></p><p>  發(fā)送時,先根據通信協(xié)議由軟件設置TB8,然后用指令將要發(fā)送的數據寫入SBUF,啟動發(fā)送器。寫SBUF的指令,除了將8位數據送入SBUF外,同時還將TB8裝入發(fā)

31、送移位寄存器的第9位,并通知發(fā)送控制器進行一次發(fā)送。一幀信息即從TXD發(fā)送,在送完一幀信息后,TI被自動置1,在發(fā)送下一幀信息之前,TI必須由中斷服務程序或查詢程序清0。</p><p><b>  接收:</b></p><p>  當REN=1時,允許串行口接收數據。數據由RXD端輸入,接收11位的信息。當接收器采樣到RXD端的負跳變,并判斷起始位有效后,開始接收

32、一幀信息。當接收器接收到第9位數據后,若同時滿足以下兩個條件:RI=0和SM2=0或接收到的第9位數據為1,則接收數據有效,8位數據送入SBUF,第9位送入RB8,并置RI=1。若不滿足上述兩個條件,則信息丟失。</p><p><b> ?、芊绞?</b></p><p>  方式3為波特率可變的11位UART通信方式,除了波特率以外,方式3和方式2完全相同。<

33、;/p><p>  4〉MCS-51串行口的波特率</p><p>  在串行通信中,收發(fā)雙方對傳送的數據速率,即波特率要有一定的約定。MCS-51單片機的串行口通過編程可以有4種工作方式。其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可變,由定時器1的溢出率決定,下面加以分析。</p><p><b> ?、俜绞?和方式2 </b>

34、</p><p>  在方式0中,波特率為時鐘頻率的1/12,即fosc/12,固定不變。</p><p>  在方式2中,波特率取決于PCON中的SMOD值,當SMOD=0時,波特率為fosc/64;當SMOD=1時,波特率為fosc/32。 </p><p><b> ?、诜绞?和方式3</b></p><p>  

35、在方式1和方式3下,波特率由定時器1的溢出率和SMOD共同決定。即:方式1和方式3的波特率=·定時器1溢出率</p><p>  其中,定時器1的溢出率取決于單片機定時器1的計數速率和定時器的預置值。計數速率與TMOD寄存器中的C/位有關。當C/=0時,計數速率為fosc/12;當C/=1時,計數速率為外部輸入時鐘頻率。</p><p>  下表列出了各種常用的波特率及獲得辦法。

36、</p><p>  表4定時器1產生的常用波特率</p><p>  2.3 RS-232接口簡介</p><p><b> ?。?)信息格式</b></p><p>  PC 的主板上通常都預留有一個或兩個九針(DB一9)全雙工串行接口(COM1、COi2),其電氣標準遵循RS一232C標準. </p>

37、<p>  RS-232是使用最早、應用最多的一種異步串行通信總線標準,它是美國電子工業(yè)協(xié)會1962年公布,1969年最后修訂而成的。其中RS表示recommended standard,232是該標準的識別號。RS-232主要用來定義各電路數據終端之間的電氣性能。RS-232接口總線適用于設備之間的通信距離不大于15米,傳輸速度最大為20Kbit/s。</p><p>  RS-232采用標準的異

38、步通信串行數據格式,即信息的開始為起始位,信息的結束為停止位1,信息本身可以是5、6、7、8位,可根據需要再加上一位奇偶校驗位,如果兩個信息之間有間隔,加上空閑位1。如圖7所示</p><p>  圖7 RS-232的信息格式</p><p>  在通常的異步串行通信中只使用其中三個引腳,即引腳2(接收RXD)、引腳3(發(fā)送TXD)、引腳5(信號地SG).各引腳功能如圖8所示.</p

39、><p>  圖8 九針串口引腳功能圖</p><p> ?。?)RS-232C的接口信號</p><p>  RS-232C規(guī)標準接口有25條線,4條數據線、11條控制線、3條定時線、7條備用和未定義線。</p><p>  常用的只有9根,它們是:</p><p><b> ?、俾摻j控制信號線:</b&

40、gt;</p><p>  數據裝置準備好(Data set ready-DSR)——有效時(ON)狀態(tài),表明MODEM處于可以使用的狀態(tài)。</p><p>  數據終端準備好(Data set ready-DTR)——有效時(ON)狀態(tài),表明數據終端可以使用。這兩個信號有時連到電源上,一上電就立即有效。這兩個設備狀態(tài)信號有效,只表示設備本身可用,并不說明通信鏈路可以開始進行通信了,能否開

41、始進行通信要由下面的控制信號決定。</p><p>  請求發(fā)送(Request to send-RTS)——用來表示DTE請求DCE發(fā)送數據,即當終端要發(fā)送數據時,使該信號有效(ON狀態(tài)),向MODEM請求發(fā)送。它用來控制MODEM是否要進入發(fā)送狀態(tài)。</p><p>  允許發(fā)送(Clear to send-CTS)——用來表示DCE準備好接收DTE發(fā)來的數據,是對請求發(fā)送信號RTS的

42、響應信號。當MODEM已準備好接收終端傳來的數據,并向前發(fā)送時,使該信號有效,通知終端開始沿發(fā)送數據線TxD發(fā)送數據。</p><p>  這對RTS/CTS請求應答聯絡信號是用于半雙工MODEM系統(tǒng)中發(fā)送方式和接收方式之間的切換。在全雙工系統(tǒng)中作發(fā)送方式和接收方式之間的切換。在全雙工系統(tǒng)中,因配置雙向通道,故不需要RTS/CTS聯絡信號,使其變高。</p><p>  接收線信號檢出(R

43、eceived Line detection-RLSD)——用來表示DCE已接通通信鏈路,告知DTE準備接收數據。當本地的MODEM收到由通信鏈路另一端(遠地)的MODEM送來的載波信號時,使RLSD信號有效,通知終端準備接收,并且由MODEM將接收下來的載波信號解調成數字兩數據后,沿接收數據線RxD送到終端。此線也叫做數據載波檢出(Data Carrier dectection-DCD)線。</p><p> 

44、 振鈴指示(Ringing-RI)——當MODEM收到交換臺送來的振鈴呼叫信號時,使該信號有效(ON狀態(tài)),通知終端,已被呼叫。</p><p>  ②數據發(fā)送與接收線:</p><p>  發(fā)送數據(Transmitted data-TxD)——通過TxD終端將串行數據發(fā)送到MODEM,(DTE→DCE)。</p><p>  接收數據(Received data

45、-RxD)——通過RxD線終端接收從MODEM發(fā)來的串行數據,(DCE→DTE)。</p><p><b> ?、鄣鼐€</b></p><p>  有兩根線SG、PG——信號地和保護地信號線,無方向。</p><p>  上述控制信號線何時有效,何時無效的順序表示了接口信號的傳送過程。例如,只有當DSR和DTR都處于有效(ON)狀態(tài)時,才能在D

46、TE和DCE之間進行傳送操作。若DTE要發(fā)送數據,則預先將DTR線置成有效(ON)狀態(tài),等CTS線上收到有效(ON)狀態(tài)的回答后,才能在TxD線上發(fā)送串行數據。這種順序的規(guī)定對半雙工的通信線路特別有用,因為半雙工的通信才能確定DCE已由接收方向改為發(fā)送方向,這時線路才能開始發(fā)送。</p><p>  2個數據信號:發(fā)送TXD;接收RXD。</p><p>  1個信號地線:SG。</

47、p><p><b>  6個控制信號:</b></p><p>  DSR&#0;&#0;數傳機(即modem)準備好,Data Set Ready.</p><p>  DTR&#0;&#0;數據終端(DTE,即微機接口電路,如Intel8250/8251,16550)準備好,Data Terminal Ready

48、。</p><p>  RTS&#0;&#0;DTE請求DCE發(fā)送(Request To Send)。</p><p>  CTS&#0;&#0;DCE允許DTE發(fā)送(Clear To Send),該信號是對RTS信號的回答。</p><p>  DCD&#0;&#0;數據載波檢出,Data Carrier Detec

49、tion當本地DCE設備(Modem)收到對方的DCE設備送來的載波信號時,使DCD有效,通知DTE準備接收, 并且由DCE將接收到的載波信號解調為數字信號, 經RXD線送給DTE。</p><p>  RI&#0;&#0;振鈴信號 Ringing當DCE收到交換機送來的振鈴呼叫信號時,使該信號有效,通知DTE已被呼叫。</p><p>  表5 RS-232C的接口信號&

50、lt;/p><p> ?。?)RS-232電平轉換器—MAX232</p><p>  RS-232規(guī)定了自己的電氣標準,由于它是在TTL電路之前研制的,因此它的電平不是+5V和地,而是采用負邏輯,即邏輯“0”:+5V~—5V,邏輯“1”:—5V~—15V。因此RS-232不能和TTL電平直接相連,必須進行電平轉換。本設計選用MAX232。</p><p>  MAX2

51、32的引腳圖如下所示:</p><p>  圖9 MAX232的引腳圖</p><p><b>  管腳說明如下</b></p><p> ?、貱0+、C0-、C1+、C1-是外接電容端;</p><p>  ②R1IN、R2IN是2路RS-232C電平信號接收輸入端;</p><p> ?、跼l

52、OUT、R2OUT是2路轉換后的TTL電平接收信號輸出端,送8051的RXD接收端;</p><p> ?、躎lIN、T2IN是2路TTL電平發(fā)送輸入端,接8051的TxD發(fā)送端;</p><p> ?、軹lOUT、T2OUT是2路轉換后的發(fā)送RS-232C電平信號輸出端,接傳輸線;</p><p> ?、轛+經電容接電源+5V;</p><p&

53、gt;<b>  ⑦V-經電容接地。</b></p><p>  這種連接的傳輸介質一般采用雙絞線,通信距離一般不超過15m,傳輸率小于20kB/s。</p><p>  (4)RS-232總線規(guī)定[2]</p><p>  RS-232標準總線為25根,采用標準的D型25芯插頭座。引腳及功能如圖10所示</p><p>

54、;  圖10 RS-232C引腳圖</p><p>  在最簡單的全雙工系統(tǒng)中,僅有發(fā)送數據、接收數據和信號地三根線即可。</p><p>  對于MCS-51單片機。利用其RXD線、TXD線和一根地線。就可以構成符合RS-232接口標準的全雙工串行通信口,這是PC機和單片機最簡單的零調制經濟型連接,是進行全雙工通信所必須的最少線路。</p><p>  圖11給

55、出了采用MAX232芯片的PC機與單片機串行通信接口電路,與PC機相連采用PC機的9芯標準插座。</p><p>  圖11 PC機與單片機串行通信接口電路</p><p><b>  3 軟件編程</b></p><p>  將PC機鍵盤的輸入發(fā)送給單片機,單片機收到PC機發(fā)來的數據后,回送同一數據給PC機,并在屏幕上顯示出來。只要屏幕上顯示

56、的字符和所鍵入的字符相同,說明兩者之間的通信正常。[3]</p><p>  雙方約定:波特率為2400bit/s,通信格式為8個數據位,一個停止位,無奇偶校驗位。</p><p>  3.1 單片機通訊軟件。單片機通過中斷方式接收PC機發(fā)送的數據,并回送。根據信息格式,可以設定單片機的串行口工作在方式1。在串行口方式1中,波特率是由定時器T1產生的。如晶振為6MHZ,波特率為2400bi

57、t/s,這時T1工作在方式2(自動重新裝入初值)。經計算,T1的初始值應為F3H,SMOD=1。 </p><p>  程序框圖如圖12、13所示:</p><p>  圖12 主程序流程圖</p><p>  圖13 中斷服務子程序流程圖</p><p><b>  程序設計如下:</b></p><

58、;p>  ORG 0000H</p><p>  LJMP START ;主程序入口</p><p>  ORG 0023H</p><p>  LJMP INTS ;串行口中斷入口</p><p>  ORG 0100H</p><p>  

59、START:MOV TMOD,#20H ;初始化定時器1為方式2 </p><p>  MOV TL1,#0F3H ;與2400波特率相應的定時器初值</p><p>  MOV TH1,#0F3H</p><p>  SETB TR1 ;啟動定時器1</p><p>  MOV

60、 SCON,#50H ;串行口工作在方式1,允許接收</p><p>  MOV PCON,#80H ;SMOD=1</p><p>  SETB EA ;開串行口中斷</p><p>  SETB ES ;允許中斷</p><p>  LOOP: SJMP

61、 LOOP ;等待數據接收</p><p>  INTS: CLR EA ;禁止中斷</p><p>  CLR RI ;清除中斷標志RI</p><p>  MOV A,SBUF ;從SBUF取接收到的數據</p><p>  MOV

62、 SBUF,A ;回送</p><p>  WAIT: JNB TI,WAIT ;判斷回送是否完畢</p><p>  CLR TI ;清除TI標志</p><p>  POP A ;發(fā)送完,恢復現場</p><p>  POP DPH<

63、/p><p>  POP DPL</p><p>  SETB EA ;允許中斷,準備接收新的數據</p><p>  RETI ;中斷返回</p><p><b>  END </b></p><p>  3.2 PC機通信軟件&

64、lt;/p><p>  PC機方面的通信程序用匯編語言編寫。</p><p><b>  程序如下:</b></p><p>  stack Segment para stack 'code'</p><p>  Db 256 dup(0)</p><

65、p>  Stack ends</p><p>  Code Segment para public 'code'</p><p>  Start proc far</p><p>  Assume cs:code,ss:stack</p><p><b>  PUSH DS<

66、;/b></p><p>  MOV AX,0</p><p>  PUSH AX</p><p><b>  CLI</b></p><p>  INPUT: MOV AL,80H ;置DLAB=1 </p><p>  MOV

67、 DX,3FBH ;寫入通信線控制寄存器</p><p>  OUT DX,AL</p><p>  MOV AL,30H ;置產生2400 b/s波特率除數低位</p><p>  MOV DX,3F8H</p><p>  OUT DX,AL

68、 ;寫入除數鎖存器低位</p><p>  MOV AL,00H ;置產生2400 b/s波特率除數高位</p><p>  MOV DX,3F9H</p><p>  OUT DX,AL ;寫入除數鎖存器高位</p><p>  MOV

69、AL,03H ;設置數據格式</p><p>  MOV DX,3FBH ;寫入通信線路控制寄存器</p><p>  OUT DX,AL</p><p>  MOV AL,00H ;禁止所有中斷</p><p>  MOV

70、 DX,3F9H</p><p>  OUT DX,AL</p><p>  WAIT1: MOV DX,3FDH ;發(fā)送保持寄存器不空則循環(huán)等待</p><p>  IN AL,DX</p><p>  TEST AL,20H</p><p>  JZ

71、WAIT1</p><p>  WAIT2: MOV AH,1 ;檢查鍵盤緩沖區(qū),無字符則循環(huán)等待</p><p>  INT 16H</p><p>  JZ WAIT2</p><p>  MOV AH,0 ;若有,則取鍵盤字符&

72、lt;/p><p>  INT 16H</p><p>  SEND: MOV DX,3F8H ;發(fā)送鍵入的字符</p><p>  OUT DX,AL</p><p>  RECE: MOV DX,3FDH ;檢查接收數據是否準備好</

73、p><p>  IN AL,DX</p><p>  TEST AL,01H</p><p>  JZ RECE</p><p>  TEST AL,1AH ;判斷接收到的數據是否出錯</p><p>  JNZ ERROR</p>

74、<p>  MOV DX,3F8H</p><p>  IN AL,DX ;讀取數據</p><p>  AND AL,7EH ;去掉無效位</p><p>  PUSH AX</p><p>  MOV BX,0

75、 ;顯示接收字符</p><p>  MOV AH,14</p><p>  INT 10H</p><p>  POP AXCMP AL,0DH ;接到的字符若不是回車則返回</p><p>  JNZ WAIT1</p><p>

76、;  MOV AL,0AH ;是回車則回車換行</p><p>  MOV BX,0</p><p>  MOV AH,14H</p><p>  INT 10H</p><p>  JMP WAIT1</p><p>  ERROR: MOV

77、DX,3F8H ;讀接收寄存器,清除錯誤字符</p><p>  IN AL,DX</p><p>  MOV AL, '?' ;顯示‘?’號</p><p>  MOV BX,0</p><p>  MOV AH,14H</p&g

78、t;<p>  INT 10H</p><p>  JMP WAIT1 ;繼續(xù)循環(huán)</p><p>  Start ends</p><p>  Code ends</p><p>  end start</p><p><b>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論