計(jì)算機(jī)通信系統(tǒng)設(shè)計(jì)_第1頁
計(jì)算機(jī)通信系統(tǒng)設(shè)計(jì)_第2頁
計(jì)算機(jī)通信系統(tǒng)設(shè)計(jì)_第3頁
計(jì)算機(jī)通信系統(tǒng)設(shè)計(jì)_第4頁
計(jì)算機(jī)通信系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 目錄1 設(shè)計(jì)任務(wù)12 設(shè)計(jì)方案13硬件設(shè)計(jì)13.1 AT89C51簡介13.2 MAX232芯片簡介43.3 串行通信電路54 軟件設(shè)計(jì)64.1 BIOS串行通信口功能64.2 單片機(jī)串行口控制寄存器及波特率的計(jì)算74.3 程序流程圖104.3.1 PC機(jī)部分程序流程圖104.3.2 單片機(jī)部分125 心得體會(huì)13參考文獻(xiàn)14附錄一15附錄二17 計(jì)算機(jī)通信系統(tǒng)設(shè)計(jì)1 設(shè)計(jì)任務(wù)1. 畫出簡要的硬件原理圖,編寫通信程序。 2. 程序運(yùn)行后,實(shí)現(xiàn)PC機(jī)和單片機(jī)之間的串行通信。2 設(shè)計(jì)方案PC機(jī)與單片機(jī)之間最簡單的連接是零調(diào)制3線經(jīng)濟(jì)型,所謂三線就是指發(fā)送數(shù)據(jù)線TxD、接收數(shù)據(jù)線RxD以及信號(hào)地線

2、GND。連接時(shí),雙方的地線直接相連,收發(fā)數(shù)據(jù)線交叉相連。這是進(jìn)行全雙工通信所必需的最少數(shù)目的線路。由于單片機(jī)的輸入、輸出、均為TTL電平,而PC機(jī)配置的是RS-232標(biāo)準(zhǔn)串行接口,二者的電氣規(guī)范不一致,因此要完成PC機(jī)與單片機(jī)之間的串行通信,必須進(jìn)行電平轉(zhuǎn)換。本次課程設(shè)計(jì)我們選用AT89C51單片機(jī),電平轉(zhuǎn)換芯片選用MAXIM公司生產(chǎn)的MAX232芯片。3硬件設(shè)計(jì)3.1 AT89C51簡介AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,

3、俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。以下是AT89C51芯片的引腳圖: 圖3-1 AT89C51引腳圖接下來對(duì)單片機(jī)個(gè)管教進(jìn)行簡要說明:VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開路雙向

4、I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL

5、門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是帶8個(gè)內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(IL

6、L)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 INT0(外部中斷0)P3.3 INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引

7、腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部

8、程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。3.2 MAX232芯片簡介MAX232芯片是MAXIM公司生產(chǎn)的、包含兩路接收器和驅(qū)動(dòng)器的IC芯片,適用于各種EIA232C和V.28/V.24的通信接口。MAX232芯片內(nèi)部有一個(gè)電源電壓變換器,可以把輸入的+5V電源電壓變換成RS-232C輸出所需要的正負(fù)10V電壓。所以,采用此芯

9、片的接口串行通信系統(tǒng)只需要單一的+5V電源就可以了。 以下是MAX232芯片的引腳圖: 圖3-2MAX232引腳MAX232典型工作電路圖: 圖3-3 MAX232典型工作電路圖在MAX232工作電路中,電容C1、C2、C3、C4、以及V_、V+是電源變換電路部分。在實(shí)際應(yīng)用中,期間對(duì)電源噪聲很敏感。因此,Vcc必須要對(duì)地加去耦電容,其他電容同樣是用以提高抗干擾能力,在連接時(shí)必須盡量靠近器件。下半部分是發(fā)送和接收部分,實(shí)際應(yīng)用中,和可直接接TTL/CMOS點(diǎn)評(píng)的89C51單片機(jī)的串行發(fā)送端TXD;和可直接接TTL/CMOS電平的89C51單片機(jī)的串行接收端RXD;和可直接接PC機(jī)的RS-232

10、串口接收端RXD;和可直接接PC機(jī)的RS-232串口發(fā)送端TXD.3.3 串行通信電路通過以上對(duì)AT89C51和MAX232兩個(gè)芯片的介紹,接下來設(shè)計(jì)串行通信電路?,F(xiàn)從MAX232芯片中兩路發(fā)送接收中任選一路作為接口。應(yīng)注意其發(fā)送、接受的引腳要對(duì)應(yīng)。以下為接口電路圖: 圖3-4 PC機(jī)與單片機(jī)通信電路4 軟件設(shè)計(jì)編寫程序,實(shí)現(xiàn)單片機(jī)與PC機(jī)之間的串行通信。程序?qū)崿F(xiàn)以下功能:單片機(jī)向PC機(jī)發(fā)送數(shù)據(jù),PC機(jī)接收后將接收到的數(shù)據(jù)反饋給單片機(jī),由單片機(jī)檢測發(fā)送的數(shù)據(jù)是否正確,正確則繼續(xù)發(fā)送并由數(shù)碼管顯示該數(shù)字,否則重新發(fā)送,直至數(shù)據(jù)發(fā)送完畢。4.1 BIOS串行通信口功能PC機(jī)提供比較靈活的關(guān)于串行口

11、的BIOS中斷調(diào)用方法,即通過”INT 14”調(diào)用ROM BIOS串行通信口例行程序。該例行程序包括將串口初始化為指定的字節(jié)結(jié)構(gòu)和傳輸速率,檢查控制器的狀態(tài)、讀寫字符等功能。下面介紹”INT 14”中斷調(diào)用功能。1 初始化串行通信口(AH=0) 調(diào)用參數(shù):AL=初始化參數(shù) DX=通信口號(hào),0:COM1, 2:COM2 返回參數(shù):AH=通信口狀態(tài) AL=調(diào)制解調(diào)器狀態(tài) 2 向串行通信口寫字符(AH=1) 輸入?yún)?shù):AL=所寫字符 DX=通信口號(hào),0:COM1, 2:COM2 輸出參數(shù):寫字符成功:AH.7=0,AL=已寫入字符 寫字符失?。篈H.7=1,AH.06=通信口狀態(tài)3 從串行通信口讀字

12、符(AH=2) 輸入?yún)?shù):DX=通信口號(hào),0:COM1, 2:COM2 輸出參數(shù):讀字符成功:AH.7=0,AL=讀入字符 讀字符失?。篈H.7=1,AH.06=通信口狀態(tài)4 取通信口狀態(tài)(AH=3) 輸入?yún)?shù):DX=通信口號(hào),0:COM1, 2:COM2 輸出參數(shù):AH=通信口狀態(tài) AL=調(diào)制解調(diào)器狀態(tài) 4.2 單片機(jī)串行口控制寄存器及波特率的計(jì)算89C51串行通信的方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志等均由特殊功能寄存器SCON控制和指示。SCON 串行口控制寄存器通常在芯片或設(shè)備中為了監(jiān)視或控制接口狀態(tài),都會(huì)引用到接口控制寄存器。SCON 就是51 芯片的串行口控制寄存器。它的尋

13、址地址是98H,是一個(gè)可以位尋址的寄存器,作用就是監(jiān)視和控制51 芯片串行口的工作狀態(tài)。51 芯片的串口可以工作在幾個(gè)不同的工作模式下,其工作模式的設(shè)置就是使用SCON 寄存器。它的各個(gè)位的具體定義如下:SM0 SM1 SM2 REN TB8 RB8 TI RISM0、SM1 為串行口工作模式設(shè)置位,這樣兩位可以對(duì)應(yīng)進(jìn)行四種模式的設(shè)置。串行口工作模式設(shè)置。SM0 SM1 模式 功能 波特率 0 0 0 同步移位寄存器 fosc/12 0 1 1 8位UART 由定時(shí)器設(shè)置 1 0 2 9位UART fosc/32 或fosc/64 1 1 3 9位UART 由定時(shí)器設(shè)置在這里只說明最常用的模式

14、1,其它的模式也就一一略過。表中的fosc 代表振蕩器的頻率,也就是晶振的頻率。UART 為(Universal Asynchronous Receiver)的英文縮寫。SM2: 在模式2、模式3 中為多處理機(jī)通信使能位。在模式0 中要求該位為0。REN: 為允許接收位,REN 置1 時(shí)串口允許接收,置0 時(shí)禁止接收。REN 是由軟件置位或清零。如果在一個(gè)電路中接收和發(fā)送引腳P3.0,P3.1 都和上位機(jī)相連,在軟件上有串口中斷處理程序,當(dāng)要求在處理某個(gè)子程序時(shí)不允許串口被上位機(jī)來的控制字符產(chǎn)生中斷,那么可以在這個(gè)子程序的開始處加入REN=0 來禁止接收,在子程序結(jié)束處加入REN=1 再次打開

15、串口接收。TB8: 發(fā)送數(shù)據(jù)位8,在模式2 和3 是要發(fā)送的第9 位。該位可以用軟件根據(jù)需要置位或清除,通常這位在通信協(xié)議中做奇偶位,在多處理機(jī)通信中這一位則用于表示是地址幀還是數(shù)據(jù)幀。RB8: 接收數(shù)據(jù)位8,在模式2 和3 是已接收數(shù)據(jù)的第9 位。該位可能是奇偶位,地址/數(shù)據(jù)標(biāo)識(shí)位。在模式0 中,RB8 為保留位沒有被使用。在模式1 中,當(dāng)SM2=0,RB8 是已接收數(shù)據(jù)的停止位。TI: 發(fā)送中斷標(biāo)識(shí)位。在模式0,發(fā)送完第8 位數(shù)據(jù)時(shí),由硬件置位。其它模式中則是在發(fā)送停止位之初,由硬件置位。TI 置位后,申請(qǐng)中斷,CPU 響應(yīng)中斷后,發(fā)送下一幀數(shù)據(jù)。在任何模式下,TI 都必須由軟件來清除,也

16、就是說在數(shù)據(jù)寫入到SBUF 后,硬件發(fā)送數(shù)據(jù),中斷響應(yīng)(如中斷打開),這時(shí)TI=1,表明發(fā)送已完成,TI 不會(huì)由硬件清除,所以這時(shí)必須用軟件對(duì)其清零。RI: 接收中斷標(biāo)識(shí)位。在模式0,接收第8 位結(jié)束時(shí),由硬件置位。其它模式中則是在接收停止位的半中間,由硬件置位。RI=1,申請(qǐng)中斷,要求CPU 取走數(shù)據(jù)。但在模式1 中,SM2=1時(shí),當(dāng)未收到有效的停止位,則不會(huì)對(duì)RI 置位。同樣RI 也必須要靠軟件清除。常用的串口模式1 是傳輸10 個(gè)位的,1 位起始位為0,8 位數(shù)據(jù)位,低位在先,1 位停止位為1。它的波特率是可變的,其速率是取決于定時(shí)器1 或定時(shí)器2 的定時(shí)值(溢出速率)。AT89C51

17、和AT89C2051 等51 系列芯片只有兩個(gè)定時(shí)器,定時(shí)器0 和定時(shí)器1,而定時(shí)器2是89C52 系列芯片才有的。波特率:在使用串口做通訊時(shí),一個(gè)很重要的參數(shù)就是波特率,只有上下位機(jī)的波特率一樣時(shí)才可以進(jìn)行正常通訊。波特率是指串行端口每秒內(nèi)可以傳輸?shù)牟ㄌ匚粩?shù)。如果波特率為9600,它是指每秒可以傳送9600 個(gè)二進(jìn)位,而一個(gè)字節(jié)要8 個(gè)二進(jìn)位,如用串口模式1 來傳輸那么加上起始位和停止位,每個(gè)數(shù)據(jù)字節(jié)就要占用10 個(gè)二進(jìn)位,9600 波特率用模式1 傳輸時(shí),每秒傳輸?shù)淖止?jié)數(shù)是960010960 字節(jié)。51 芯片的串口工作模式0的波特率是固定的,為fosc/12,以一個(gè)12M 的晶振來計(jì)算,那

18、么它的波特率可以達(dá)到1M。模式2 的波特率是固定在fosc/64 或fosc/32,具體用那一種就取決于PCON 寄存器中的SMOD位,如SMOD 為0,波特率為focs/64,SMOD 為1,波特率為focs/32。模式1 和模式3 的波特率是可變的,取決于定時(shí)器1 或2(52 芯片)的溢出速率。那么我們?cè)趺慈ビ?jì)算這兩個(gè)模式的波特率設(shè)置時(shí)相關(guān)的寄存器的值呢?可以用以下的公式去計(jì)算。波特率(32)定時(shí)器1 溢出速率上式中如設(shè)置了PCON 寄存器中的SMOD 位為1 時(shí)就可以把波特率提升2 倍。通常會(huì)使用定時(shí)器1 工作在定時(shí)器工作模式2 下,這時(shí)定時(shí)值中的TL1 做為計(jì)數(shù),TH1 做為自動(dòng)重裝值

19、 ,這個(gè)定時(shí)模式下,定時(shí)器溢出后,TH1 的值會(huì)自動(dòng)裝載到TL1,再次開始計(jì)數(shù),這樣可以不用軟件去干預(yù),使得定時(shí)更準(zhǔn)確。在這個(gè)定時(shí)模式2 下定時(shí)器1 溢出速率的計(jì)算公式如下:溢出速率(計(jì)數(shù)速率)/(256TH1)上式中的“計(jì)數(shù)速率”與所使用的晶體振蕩器頻率有關(guān),在51 芯片中定時(shí)器啟動(dòng)后會(huì)在每一個(gè)機(jī)器周期使定時(shí)寄存器TH 的值增加一,一個(gè)機(jī)器周期等于十二個(gè)振蕩周期,所以可以得知51 芯片的計(jì)數(shù)速率為晶體振蕩器頻率的1/12,一個(gè)12M 的晶振用在51 芯片上,那么51 的計(jì)數(shù)速率就為1M。通常用11.0592M 晶體是為了得到標(biāo)準(zhǔn)的無誤差的波特率,那么為何呢?計(jì)算一下就知道了。如我們要得到96

20、00 的波特率,晶振為11.0592M 和12M,定時(shí)器1 為模式2,SMOD 設(shè)為1,分別看看那所要求的TH1 為何值。代入公式:11.0592M9600(232)(11.0592M/12)/(256-TH1)TH125012M9600(232)(12M/12)/(256-TH1)TH1249.49上面的計(jì)算可以看出使用12M 晶體的時(shí)候計(jì)算出來的TH1 不為整數(shù),而TH1 的值只能取整數(shù),這樣它就會(huì)有一定的誤差存在不能產(chǎn)生精確的9600 波特率。當(dāng)然一定的誤差是可以在使用中被接受的,就算使用11.0592M 的晶體振蕩器也會(huì)因晶體本身所存在的誤差使波特率產(chǎn)生誤差,但晶體本身的誤差對(duì)波特率的

21、影響是十分之小的,可以忽略不計(jì)。4.3 程序流程圖4.3.1 PC機(jī)部分程序流程圖 開始串口初始化接收字符數(shù)據(jù)是否就緒 ?接收成功?取回發(fā)送保持器是否空?發(fā)送字符是否成功NYNYNYNY接收完畢?結(jié)束N 圖3-5 PC機(jī)通信程序流程圖4.3.2 單片機(jī)部分 開始 串口初始化N發(fā)送出錯(cuò)結(jié)束發(fā)送完畢?重新發(fā)送是否正確?發(fā)送數(shù)據(jù) 等待反饋數(shù)據(jù)NYY 圖3-6 單片機(jī)通信程序流程圖5 心得體會(huì)這學(xué)期學(xué)習(xí)了微機(jī)原理與接口技術(shù),接觸匯編語言,開始對(duì)其有一定的了解,以前編寫程序用的都是C語言,基本上不涉及硬件方面的東西,而匯編語言則不同,它需要對(duì)硬件電路有一定的了解,這樣在學(xué)習(xí)匯編語言的時(shí)候,就需注意硬件方

22、面的知識(shí)的掌握。本次課程設(shè)計(jì)我所做的題目是實(shí)現(xiàn)單片機(jī)與PC機(jī)之間的串行通信,對(duì)于這個(gè)題目,在微機(jī)原理與接口技術(shù)這門課程里曾學(xué)過關(guān)于PC機(jī)的串行通信的知識(shí),而對(duì)于單片機(jī),在以前也曾經(jīng)自學(xué)過,所以最初看到這個(gè)題目的時(shí)候,并沒有感到無從下手,接下來需要做的事情就是通過查找資料確定硬件電路,然后再通過硬件電路編寫實(shí)現(xiàn)功能的程序。通過查找資料,最終確定下來硬件電路圖,進(jìn)而根據(jù)要求編寫程序。由于對(duì)此類題目以前沒有做過,所以本次課程設(shè)計(jì),無論是硬件電路方面,還是軟件方面,難免會(huì)有些不足之處,比如硬件電路可以嘗試其他的實(shí)現(xiàn)方法,而軟件方面,則可以修改程序使其實(shí)現(xiàn)更加復(fù)雜的功能等。雖然如此,通過此次課程設(shè)計(jì)還是

23、感覺獲益匪淺,首先是對(duì)匯編語言和微機(jī)的串行通信知識(shí)有了進(jìn)一步的了解和鞏固,為以后更加系統(tǒng)的學(xué)習(xí)和應(yīng)用奠定了一定的基礎(chǔ);其次是對(duì)單片機(jī)知識(shí)有了很好的認(rèn)識(shí),以前只是很粗淺的學(xué)習(xí)了單片機(jī),經(jīng)過這幾天的學(xué)習(xí)和應(yīng)用,有了很大程度的提高;最后一點(diǎn)就是提高了自己分析和解決問題的能力,面對(duì)我們未知的問題,我們應(yīng)該知道如何下手,如何解決??傊?,通過此次課程設(shè)計(jì),讓我收獲了很多。參考文獻(xiàn)1 周佩玲. 微機(jī)原理與接口技術(shù).電子工業(yè)出版社,20052 周堅(jiān). 單片機(jī)C語言輕松入門.北京航空航天大學(xué)出版社,20063 李朝青. 單片機(jī)原理及接口技術(shù)(第三版). 北京航空航天大學(xué)出版社,20054 潘超群. 單片機(jī)控制技

24、術(shù)在通信中的應(yīng)用-MCS-51系列.電子工業(yè)出版社,20085 程學(xué)先. 匯編語言程序設(shè)計(jì).武漢理工大學(xué)出版社,2002附錄一PC機(jī)通信程序: DATA SEGMENT RBUF DB 10 DUP(0) COUNT DB 10 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,START PROC FAR PUSH DS PUSH AXMOV AX,DATAMOV DS,AXLEA DI ,RBUF ;置接收數(shù)據(jù)塊首地址MOV CL,COUNT ;置接收數(shù)據(jù)塊長度MOV AH,00H ;0號(hào)功能 MOV AL,0E3H ;串口初始化:波特率9600,

25、無校驗(yàn),1位停止位,8位數(shù)據(jù)位MOV DX,00H ;指定COM1端口INT 14HREPT1:MOV AH,02H ;2號(hào)功能:接收字符MOV DX,00H ;指定COM1端口INT 14H ;出口參數(shù):AL中為接收到的參數(shù),AH中為線路狀態(tài)MOV BX,AX ;AX中的內(nèi)容暫存于BX中MOV AL,AH ;取線路狀態(tài)至ALTEST AL,80H ;接收是否成功(D7=0?) JNZ REPT1 ;不成功,重接TEST AL,01H ;數(shù)據(jù)是否準(zhǔn)備就緒JNZ REPT1 ;未就緒,重接MOV AL,BL ;就緒,取回字符MOV DI,AL ;保存INC DI ;指向下一個(gè)地址單元REPT2:

26、MOV AH,03H ;3號(hào)功能檢查串口狀態(tài)MOV DX,00H ;指定COM1端口INT 14HMOV AL,AH ;取線路狀態(tài)至ALTEST AL,20H ;發(fā)送保持器是否空(D5=1?)JZ REPT2REPT3:MOV AL,BL ;將接收到的字符存至ALMOV AH,01H ;1號(hào)功能:發(fā)送字符MOV DX,00H ;指定COM1端口INT 14HMOV AL,AH ;取線路狀態(tài)至ALTEST AL,80H ;發(fā)送是否成功(D7=0?) JNZ REPT3 ;不成功,重發(fā)LOOP REPT1 ;數(shù)據(jù)是否接收完畢?未完,繼續(xù)POP DSPOP AXCODE ENDSEND START附錄二單片機(jī)通信程序:#include#include#define uchar unsigned c

溫馨提示

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

評(píng)論

0/150

提交評(píng)論