2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  微</b></p><p><b>  機</b></p><p><b>  接</b></p><p><b>  口</b></p><p><b>  課</b></p><p

2、><b>  程</b></p><p><b>  設(shè)</b></p><p><b>  計</b></p><p><b>  之</b></p><p><b>  雙</b></p><p>&

3、lt;b>  機</b></p><p><b>  間</b></p><p><b>  的</b></p><p><b>  串</b></p><p><b>  行</b></p><p><b&

4、gt;  通</b></p><p><b>  信</b></p><p><b>  一、課程設(shè)計目的:</b></p><p>  通過本次課程設(shè)計實踐,熟悉和掌握微機系統(tǒng)的軟件、硬件設(shè)計方法、設(shè)計步驟,提高綜合應(yīng)用所學(xué)知識及動手和分析問題、解決問題的能力;同時還應(yīng)達到以下目的:</p>&

5、lt;p>  1. 了解串行通信的一般工作原理和工作過程;</p><p>  2.熟悉8259A中斷控制器的工作原理和應(yīng)用編程;</p><p>  3. 熟悉RS—232C串行接口標準及和TTL電路的連接方法;</p><p>  4. 熟悉8251A芯片的工作原理,掌握用8251A進行異步串行通信時的編程</p><p><

6、b>  方法;</b></p><p>  5. 熟悉8253A計數(shù)器/定時器的工作方式及應(yīng)用編程。</p><p><b>  二、課程設(shè)計任務(wù):</b></p><p>  設(shè)有兩臺PC機——甲機和乙機,利用兩臺試驗箱上的8251A芯片、TTL和RS—232C電平轉(zhuǎn)換芯片(MC1488和MC1489)、8254A芯片等,實

7、現(xiàn)甲乙兩機之間的全雙工近距離異步串行通信;具體要求如下:</p><p>  甲機和乙機通過各自的鍵盤輸入控制鍵(ESC)和要發(fā)送的字符,檢查是否按下 ESC鍵,若按下,則退出程序,返回DOS;否則將輸入的字符發(fā)送到對方,每輸入一個字符發(fā)送一次;同時雙方又可接收對方發(fā)來的字符。</p><p>  2. 發(fā)送的字符和接收的字符均在甲機和乙機各自的顯示器上顯示;雙方

8、的發(fā)送均采用查詢方式,接收均采用中斷方式。</p><p>  3. 異步串行通信的字符數(shù)據(jù)格式為起止式:1位停止位,8位數(shù)據(jù)位,無校驗,波特率因子為16;傳輸速率,即波特率自定。</p><p><b>  提示:</b></p><p>  由于是近距離通信,故雙機接口間可采用零MODEM方式的簡單連接。</p><p&

9、gt;  由8254A產(chǎn)生方波時鐘信號作為8251A的發(fā)送和接收時鐘,8254A計數(shù)通道的CLK輸入可采用1MHZ的方波信號。</p><p>  中斷采用PC機內(nèi)部可屏蔽中斷控制器(8259A)的IRQ7。</p><p>  8251A的端口地址:數(shù)據(jù)口—210H,命令/狀態(tài)口—211H;8254A的端口地址:計數(shù)器0—230H, 計數(shù)器1—231H,計數(shù)器2—232H,控制口—233

10、H;8259A的端口地址:20H和21H。</p><p><b>  三、所用設(shè)備:</b></p><p>  IBM-PC機兩臺(串行通信接口8251A兩片,串行發(fā)送器MC1488和串行接收器MC1489各兩片,定時器/計數(shù)器8253,終端控制器8259等),串口線一根</p><p>  串行直連電纜用于兩臺臺電腦通過串行口直接相連,電

11、纜兩端的插頭都是9 針的母插頭:</p><p><b>  四、硬件設(shè)計:</b></p><p><b>  1.設(shè)計思想:</b></p><p>  計算機傳輸數(shù)據(jù)有并行和串行兩種模式。在并行數(shù)據(jù)傳輸方式中,使用8條或更多的導(dǎo)線來傳送數(shù)據(jù),雖然并行傳送方式的速度很快,但由于信號的衰減或失真等原因,并行傳輸?shù)木嚯x不能

12、太長,在串行通信方式中,通信接口每次由CPU得到8位的數(shù)據(jù),然后串行的通過一條線路,每次發(fā)送一位將該數(shù)據(jù)放送出去。</p><p>  串行通信采用兩種方式:同步方式和異步方式。同步傳輸數(shù)據(jù)時,一次傳送一個字節(jié),而異步傳輸數(shù)據(jù)是一次傳送一個數(shù)據(jù)塊。</p><p>  串口是計算機上一種非常通用設(shè)備串行通信的協(xié)議。大多數(shù)計算機包含兩個基于RS232的串口。串口按位(bit)發(fā)送和接收字節(jié)。

13、盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通行的端口,這些參數(shù)必須匹配:</p><p> 

14、 RS-232(ANSI/EIA-232標準)是IBM-PC及其兼容機上的串行連接標準。可用于許多用途,比如連接鼠標、打印機或者Modem,同時也可以接工業(yè)儀器儀表。用于驅(qū)動和連線的改進, RS-232只限于PC串口和設(shè)備間點對點的通信。</p><p>  IBM PC及其兼容機提供了一種有較強的硬件依賴性,但卻比較靈活的串行口I/O的方法,即通過INT 14調(diào)用ROM BIOS串行通信口的例行程序。該例行程序

15、。該例行程序包括將串行口初始化為指定的字節(jié)結(jié)構(gòu)和傳輸速率,檢查控制器的狀態(tài),讀寫字符等功能。</p><p>  14號中斷的功能總結(jié)如下:</p><p>  串行口服務(wù)(Serial Port Service——INT 14H) </p><p>  00H —初始化通信口03H —讀取通信口狀態(tài)</p><p>  01H —向通信口

16、輸出字符04H —擴充初始化通信口</p><p>  02H —從通信口讀入字符</p><p>  (1)、功能00H:初始化通信口</p><p>  入口參數(shù):AH=00H</p><p>  DX=初始化通信口號(0=COM1,1=COM2,……)</p><p>  AL=初始化參數(shù),參數(shù)的說明如下: 波

17、特率奇偶位停止位字的位數(shù)</p><p><b>  76543210</b></p><p>  000 = 110X0 = None0 = 1 bit10 = 7 bits</p><p>  001 = 15001 = Odd1 = 2 bits11 = 8 bits</p><p>  010 = 30011 =

18、 Even</p><p><b>  011 = 600</b></p><p>  100 = 1200</p><p>  101 = 2400</p><p>  110 = 4800</p><p>  111 = 9600</p><p>  (2)、功能01H

19、 :向通信口輸出字符</p><p>  入口參數(shù):AH=01H</p><p><b>  AL=字符</b></p><p>  DX=初始化通信口號(0=COM1,1=COM2,……)</p><p>  出口參數(shù):AL的值不變</p><p>  AH的位7=0——操作成功,通信口狀態(tài),A

20、H的位6~0是其狀態(tài)位</p><p>  (3)、功能02H :從通信口讀入字符</p><p>  入口參數(shù):AH=02H</p><p>  DX=初始化通信口號(0=COM1,1=COM2,……)</p><p>  出口參數(shù):AL=接受的字符</p><p>  AH的位7=0——操作成功,通信口狀態(tài),AH的

21、位6~0是其狀態(tài)位</p><p>  (4)、功能03H </p><p>  功能描述:讀取通信口狀態(tài)</p><p>  入口參數(shù):AH=03H</p><p>  DX=初始化通信口號(0=COM1,1=COM2,……)</p><p>  出口參數(shù):AH=通信口狀態(tài),AL=Modem狀態(tài),參見功能號00H中的

22、說明</p><p>  (5)、功能04H </p><p>  功能描述:擴充初始化通信口,僅在PS/2中有效</p><p>  本設(shè)計正是利用14號配置串口,實現(xiàn)雙機的雙工通信及單機的自發(fā)自收通信。并畫出了比較完整的原理圖與寫出了比較詳細的程序</p><p><b>  原理框圖:</b></p>

23、<p><b>  資料:</b></p><p>  1)、8251A相關(guān)資料介紹:</p><p>  1、8251A的基本性能:</p><p>  8251A是可編程的串行通信接口芯片,基本性能有:</p><p>  (1).兩種工作方式:同步方式,異步方式。同步方式下,波特率為064K,異步方式下

24、,波特率為0~19.2K。</p><p> ?。?).同步方式下的格式</p><p>  每個字符可以用5、6、7或8位來表示,并且內(nèi)部能自動檢測同步字符,從而實現(xiàn)同步。除此之外,8251A也允許同步方式下增加奇/偶校驗位進行校驗。</p><p>  (3).異步方式下的格式</p><p>  每個字符也可以用5、6、7或8位來表示,

25、時鐘頻率為傳輸波特率的1、16或64倍,用1位作為奇/偶校驗。1個啟動位。并能根據(jù)編程為每個數(shù)據(jù)增加1個、1.5個或2個停止位??梢詸z查假啟動位,自動檢測和處理終止字符。</p><p> ?。?).全雙工的工作方式</p><p> ?。?).提供出錯檢測</p><p>  2、8251A的內(nèi)部結(jié)構(gòu):</p><p>  發(fā)送器由發(fā)送緩沖

26、器和發(fā)送控制電路兩部分組成。接收器由接收緩沖器和接收控制電路兩部分組成。數(shù)據(jù)總線緩沖器,讀/寫控制電路,調(diào)制解調(diào)控制電路。</p><p>  8251A內(nèi)部結(jié)構(gòu)圖</p><p>  3、8251外部引腳圖</p><p>  8251的外部引腳下圖所示,共28個引腳,每個引腳信號的輸入輸出方式如圖中的箭頭方向所示。</p><p><

27、;b>  8251外部引腳圖</b></p><p>  4、8251A的編程</p><p>  編程的內(nèi)容包括兩大方面:</p><p>  一是由CPU發(fā)出的控制字,即方式選擇控制字和操作命令控制字;</p><p>  二是由8251A向CPU送出的狀態(tài)字。</p><p> ?。?)、方式選

28、擇控制字(模式字)</p><p>  方式選擇控制字的格式如圖所示。</p><p> ?。?)、操作命令控制字(控制字)</p><p>  操作命令控制字的格式如下:</p><p><b>  (3)、狀態(tài)字</b></p><p><b>  狀態(tài)字的格式如下:</b&g

29、t;</p><p>  2)、8253A相關(guān)資料介紹:</p><p> ?。?)可編程定時/計數(shù)器模塊8253</p><p>  本電路模塊可用于產(chǎn)生定時中斷,實現(xiàn)實時時鐘實驗等,本電路端口地址為CS。</p><p>  8253由以下幾個部分組成:</p><p> ?。? 數(shù)據(jù)總線緩沖器(8位、三態(tài)、雙向)

30、;</p><p>  (2 讀/寫控制邏輯;</p><p>  CS:片選信號,低電平有效;</p><p>  RD:讀信號,低電平有效;</p><p>  WR:寫信號,低電平有效</p><p>  A1A0:端口選擇信號</p><p>  (3 三個通道( 0 ~ 2);<

31、/p><p>  (4 一個控制寄存器;</p><p>  8253內(nèi)部可分為6個模塊,每個模塊的功能如下:</p><p>  1. 數(shù)據(jù)總線緩沖器及數(shù)據(jù)總線D0~D7</p><p>  2. 讀/寫控制邏輯及控制引腳</p><p><b>  3. 控制字寄存器</b></p>

32、<p>  在初始化編程時,CPU寫入方式控制字到控制字寄存器中,用以選擇計數(shù)通道及其相應(yīng)的工作方式。</p><p><b>  8253的控制字:</b></p><p>  8253的工作方式也是有控制字來決定,其控制字意義如下</p><p>  4. 計數(shù)通道0、計數(shù)通道1、計數(shù)通道2</p><p&g

33、t;  3個計數(shù)通道內(nèi)部結(jié)構(gòu)完全相同。每個計數(shù)通道都由一個16位計數(shù)初值寄存器、一個16位減法計數(shù)器和一個16位計數(shù)值鎖存器組成</p><p>  計數(shù)初值存于預(yù)置寄存器,在計數(shù)過程中,減法計數(shù)器的值不斷遞減,而預(yù)置寄存器中的預(yù)置不變。輸出鎖存器用于寫入鎖存命令時,鎖定當(dāng)前計數(shù)值。</p><p>  計數(shù)器的3個引腳說明:</p><p> ?。?)CLK時鐘輸

34、入信號</p><p>  在計數(shù)過程中,此引腳上每輸入一個時鐘信號(下降沿),計數(shù)器的計數(shù)值減1</p><p>  (2) GATE門控輸入信號</p><p>  控制計數(shù)器工作,可分成電平控制和上升沿控制兩種類型</p><p> ?。?) OUT計數(shù)器輸出信號</p><p>  當(dāng)一次計數(shù)過程結(jié)束(計數(shù)值減

35、為0),OUT引腳上將產(chǎn)生一個輸出信號</p><p>  8253有6種工作方式,由方式控制字確定</p><p>  區(qū)分這6種工作方式的主要標志由3點:一是輸出波形不同;二是啟動計數(shù)器的觸發(fā)方式不同;三是計數(shù)過程中門控信號GATE對計數(shù)器操作的控制不同。</p><p>  1..方式0--低電平輸出(GATE信號上升沿繼續(xù)計數(shù))</p><

36、;p>  2.方式1--低電平輸出(GATE信號上升沿重新計數(shù))</p><p>  3.方式2--周期性脈沖輸出</p><p>  4.方式3--周期性方波輸出</p><p>  OUT輸出低電平,裝入計數(shù)值n后,OUT立即跳變?yōu)楦唠娖?。如果?dāng)前GATE為高電平,則立即開始減“1”計數(shù),OUT保持為高電平,若n為偶數(shù),則當(dāng)計數(shù)值減到n/2時,OUT跳變?yōu)?/p>

37、低電平,一直保持到計數(shù)值為“0”,系統(tǒng)才重新置入計數(shù)值n,實現(xiàn)循環(huán)計數(shù)。這時OUT端輸出周期為n×CLK周期,占空比為1:1的方波序列:若n為奇數(shù),則OUT端輸出周期為n×CLK周期,占空比(n+1)/2 : (n-1)/2的近似方波序列。</p><p>  5.方式4--單次負脈沖輸出(軟件觸發(fā))</p><p>  6.方式5--單次負脈沖輸出(硬件觸發(fā))<

38、/p><p>  每種工作方式的設(shè)置過程類似:</p><p><b>  ⑴ 設(shè)定工作方式</b></p><p><b> ?、?設(shè)定計數(shù)初值</b></p><p>  〔 ⑶ 硬件啟動 〕</p><p> ?、?計數(shù)初值進入減1計數(shù)器</p><p&

39、gt;  ⑸ 每輸入一個時鐘計數(shù)器減1的計數(shù)過程</p><p><b> ?、?計數(shù)過程結(jié)束</b></p><p>  3)、74LS138相關(guān)資料介紹:</p><p>  譯碼器74LS138:</p><p>  74LS138 為3 線-8 線譯碼器,共有 54/74S138和 54/74LS138 兩種線路

40、結(jié)構(gòu)型式。 </p><p><b>  其工作原理如下: </b></p><p>  ①當(dāng)一個選通端(E3)為高電平,另兩個選通端(E1)和/(E2))為低電平時,可將地址端(A0、A1、A2)的二進制編碼在Y0至Y7對應(yīng)的輸出端以低電平譯出。比如:A0A1A2=011時,則Y6輸出端輸出低電平信號。 </p><p> ?、诶?E1、E

41、2和E3可級聯(lián)擴展成 24 線譯碼器;若外接一個反相器還可級聯(lián)擴展成 32 線譯碼器。</p><p>  4)、RS—232C電平轉(zhuǎn)換芯片(MC1488和MC1489)相關(guān)資料介紹:</p><p>  由于制定串行接口標準早在制定TTL邏輯系列之前,因此輸入輸出電平不與TTL兼容。因為這個原因,連接RS232到微機系統(tǒng)必須經(jīng)過電平轉(zhuǎn)換。圖9.11中使用了MC1488從TTL 轉(zhuǎn)換到RS

42、232電平,用MC1489從RS232轉(zhuǎn)換到TTL電平。MC1488和MC1489集成電路芯片通常稱為線路驅(qū)動器和線路接收器。</p><p>  最簡單的RS-232C數(shù)據(jù)通信連接</p><p>  RS-232C接口電平轉(zhuǎn)換:</p><p>  RS-232C是早期為促進公用電話網(wǎng)絡(luò)進行數(shù)據(jù)通信而制定的標準,其邏輯電平對地是對稱的,完全與TTL、CMOS邏輯

43、電平不同。</p><p>  RS-232C采用負邏輯,即:</p><p>  邏輯1:-5V~-15V。 邏輯0:+5V~+15V。</p><p>  由于MCS-51采用TTL電平,若用RS-232C標準接口通信必須進行電平轉(zhuǎn)換。目前RS-232C與TTL電平轉(zhuǎn)換最常用的集成電路芯片是傳輸線驅(qū)動器MC1488傳輸線接收器MC1489。其內(nèi)部結(jié)構(gòu)和引腳如下圖

44、所示。</p><p>  MC1488可完成TTL電平到RS-232C的電平轉(zhuǎn)換,輸入為TTL電平,輸出為RS-232C電平。其內(nèi)部有3個與非門和1個反相器。采用±12V或±15V電源供電。</p><p>  MC1489可完成由RS-232C到TTL電平轉(zhuǎn)換,輸入為RS-232C電平,輸出為TTL電平。其內(nèi)部有4個反相器,采用+5V電源供電。MC1489中每個反相

45、器都有一個控制端,高電平有效,可作為RS-232C操作的控制端。RS-232C電平轉(zhuǎn)換芯片MC1488和MC1489</p><p>  5)、ISA總線相關(guān)資料介紹:</p><p>  ISA總線是IBM PC/AT機(CPU是80286)所用的系統(tǒng)總線:PC/AT總線經(jīng)過標準化之后的名稱,IEEE將ISA總線作為IEEE P996推薦標準,這是一個16位兼8位的總

46、線標準。如果忽略標準化細節(jié),則可認為16位ISA總線就是PC/AT總線。由于IBM PC/AT與IBM PC、IBM PC/XT機(CPU都是8088)所用的Pc總線兼容,所以可認為8位ISA總線(16位ISA總的低8位部分)就是PC總線。</p><p><b>  引腳信號</b></p><p>  圖9.1所示為16位ISA總線板

47、卡(又稱I/O擴展板或接口板)及插槽外形示意圖,元件面和焊接面共有31+18個引腳(A1~A31、B1~B31、C1~C18和D1~</p><p>  D18),其中A1~A31、Bl~B31是低8位部分即8位ISA總線所用的信號。8位ISA總線板卡及插槽與該圖的區(qū)別在于沒有36個引腳(C1一C18和D1~D18)那部分。顯然,8位ISA總線板卡可以插在16位的插槽中。表9.1給出了16位ISA總線前62個引腳

48、(亦是8位ISA總線的全部引腳)信號定義,表9.2給出了16位ISA總線的后36個引腳信號定義。</p><p>  下面對引腳信號做一些簡要說明,首先是62線部分(8位ISA總線)。</p><p> ?、貲7~DO:8位數(shù)據(jù)線,雙向,三態(tài)。對于16位ISA總線,它們是數(shù)據(jù)線 的低8位。</p><p> ?、贏19~A0:20位地址線,輸出。</p

49、><p> ?、跾MEMR(上劃線)、SMEMW(上劃線):存儲器讀、寫命令,輸出,低電平有效。</p><p> ?、躀OR(上劃線)、IOW(上劃線):I/O讀、寫命令,輸出,低電平有效</p><p> ?、軦EN:地址允許信號,輸出,高電平有效。該信號由DMAC發(fā)出,為高表示DMAC正在控制系統(tǒng)總線進行DMA傳送,所以它可用于指示DMA總線周期。</p&g

50、t;<p>  ⑥BALE:總線地址鎖存允許,輸出。該信號在CPU總線周期的Tl期間有效,可作為CPU總線周期的指示。</p><p> ?、逫/O CH RAY:I/O通道準備好,輸入,高電平有效。該引腳信號與8086的READY功能相同,用于插入等待時鐘周期。</p><p> ?、郔/OCHCK(上劃線):I/0通道校驗,輸入,低電平有效。它有效表示板卡上出現(xiàn)奇偶校驗錯

51、。</p><p> ?、酙RQ7~IRQ2:6個中斷請求信號,輸入,分別接到中斷控制邏輯的主8259A的中斷請求輸入端IR7~IR2(參看第五章的圖5.23)。這些信號由低到高的跳變表示中斷請求,但應(yīng)一直保持高電平,直到CPU響應(yīng)中斷為止。它們的優(yōu)先級別與所連接的IR線相同,即IRQ2在這6個請求信號中級別最高,IRQ7的級別最低。</p><p> ?、釪RQ3~DRQl:3個DMA請

52、求信號,輸入,高電平有效。它們分別接到DMA控制器8237A的DMA請求輸入端DREQ3~DREQl。因此,優(yōu)先級別與它們相對應(yīng)(DRQ1的級別最高,DRQ 3的級別最低)。</p><p>  ?DACK3(上劃線)~DACKl(上劃線):3個DMA響應(yīng)信號,輸出,低電平有效。?T/C:計數(shù)結(jié)束信號,輸出,高電平有效。它由DMAC發(fā)出,用于表示進行DMA傳送的通道編程時規(guī)定傳送字節(jié)數(shù)已經(jīng)傳送完。但它沒有說明是哪

53、個通道,這要結(jié)合DMA響應(yīng)信號DACK(上劃線)來判斷。</p><p>  ?OSC:振蕩器的輸出脈沖。</p><p>  ?CLK:系統(tǒng)時鐘信號,輸出。系統(tǒng)時鐘的頻率通常在4.77 MHz一8 MHz內(nèi)選擇,最高頻率為8.3 MHz。CLK是由()SC的輸出3分頻產(chǎn)生的,也就是說()SC的頻率應(yīng)是CLK的3倍。</p><p>  ?RESET:系統(tǒng)復(fù)位信號,

54、輸出,高電平有效。該信號有效時表示系統(tǒng)正處于復(fù)位狀態(tài),可利用該信號復(fù)位總線板卡上的有關(guān)電路。</p><p>  ?NOWS:零等待狀態(tài),輸入,低電平有效。用于縮短按照缺省設(shè)置應(yīng)等待的時鐘數(shù),當(dāng)它有效時,不再插入等待時鐘。</p><p>  ?REFRESH(上劃線):刷新信號,雙向,低電平有效,由總線主控器的刷新邏輯產(chǎn)生。該信號有效表示存儲器正處于刷新周期,</p>&l

55、t;p><b>  以下是對36線部分</b></p><p>  16位ISA總線的高8位)的簡要說明:</p><p>  ? SDl5~SD8:數(shù)據(jù)總線的高8位,雙向,三態(tài)。</p><p>  ?SBHE:總線高字節(jié)傳送允許,三態(tài)信號。該信號用來表示SDl5~SD8上正進行數(shù)據(jù)傳送。</p><p>  ?

56、LA23~LAl7:非鎖存的地址線,在BALE為高電平時有效。將它們鎖存起來,并和已鎖存的低位地址線(A19~A0)組合在一起,可形成24位地址線,因而使系統(tǒng)的尋址能力擴大到16 MB。</p><p>  _MEMR(上劃線),MEMW(上劃線):存儲器讀、寫信號,低電平有效。這兩個信號在所有的存儲器讀或?qū)懼芷谟行?。相比之下,前面所介紹的SMEMR(上劃線)和SMEMW(上劃線)僅當(dāng)訪問存儲器的低1 MB時才有

57、效。</p><p>  +MEMCSl6(上劃線):存儲器片選16,輸入,低電平有效。該信號用來表示當(dāng)前的數(shù)據(jù)傳輸是具有一個等待時鐘的16位存儲器總線周期。</p><p>  1 I/OCCSl6(上劃線):I/O片選16,輸入,低電平有效。該信號為集電極開路,為低表示當(dāng)前的數(shù)據(jù)傳輸是具有一個等待時鐘的16位I/O總線周期。</p><p>  2 MASTER

58、(上劃線):總線主控信號,輸入,在ISA總線的主控器初始化總線周期時產(chǎn)生,低電平有效。該信號與I/O通道上的I/0處理器的DRQ線一起用于獲取對系統(tǒng)總線的控制權(quán)。</p><p>  3 IRQl5~IRQ10:6個中斷請求信號,輸入,接到中斷控制邏輯的從8259A。</p><p>  4 DRQ7~DRQ5、DACK7(上劃線)~DACK5(上劃線)、DACK0(上劃線):通道7~5

59、的DMA請求和相應(yīng)的DMA響應(yīng)信號(另有一個通道0的響應(yīng)信號)。這3個通道可進行16位DMA傳送。</p><p><b>  ISA總線時序 </b></p><p>  ISA總線的時序和8086/8088的時序基本相同,但也有一些區(qū)別。有了8086/8088時序基礎(chǔ),對ISA總線時序的理解主要在于以下幾點: </p><p>  ①地址和

60、數(shù)據(jù)已不再分時復(fù)用信號線,因此在整個總線周期內(nèi)有效。 </p><p>  ②和8086/8088的最大模式一樣,存儲器讀/寫和I/O讀/寫的控制信號已分開,進行一種操作只需一個控制信號。 </p><p> ?、垡粋€典型的存儲器讀/寫周期還是由T1、T2、T3和T4組成,而I/O讀/寫周期和DMA周期都自動插入了一個等待時鐘周期。</p><p>  ④I/O C

61、H RAY相當(dāng)于8086/8088時序中的:READY信號,當(dāng)總線板卡上的存儲器或I/0電路較慢時,可利用該信號迫使CPU插入等待時鐘周期,但等待時鐘周期不得超過10個。</p><p>  ⑤8位ISA總線在存儲器讀/寫周期可用到20位地址,而16位.|SA總線在存儲器讀/寫周期中可使用24位地址。但由于受I/O指令的限制,8位和16位ISA總線的I/0讀/寫周期都只能使用低16位地址。 </p>

62、<p>  ⑥BALE在CPU總線周期的T1期間有效,它的基本作用是進行地址鎖存,但也可以作為一個新的CPU總線周期已開始的標志。 </p><p> ?、逜EN有效表示DMAC正在控制系統(tǒng)總線,所以它可以作為系統(tǒng)處于DMA總線周期的標志。</p><p><b>  3.工作原理:</b></p><p>  IBM PC及其兼容

63、機間經(jīng)過RS-232-C口串行通信是在實際系統(tǒng)中用的最廣泛的。</p><p>  上述框圖只是串口通信的的一個內(nèi)部的原理圖,由于,本次設(shè)計是直接配置的PC機中的RS232適配卡,上述過程并不能看到,不過在,原理圖的分析中會做詳盡的解釋</p><p>  本次實驗的外部來看實際的電路圖</p><p>  PC機上的串行口是 9 針公插座,引腳定義為: </

64、p><p>  所以本設(shè)計所采用的串口為雙端母插頭。</p><p>  串口為交叉線,2,3號針腳交叉相連,5號針接公共地。</p><p>  EIA RS-232-C接口(9針)插頭連線方法:</p><p><b>  4.電路原理圖:</b></p><p>  4.1頂層的模塊圖,top.

65、pri</p><p>  此原理圖的主要參考資料是protel 99 se中Z80 Microprocessor的例子。整個串行通信系統(tǒng)包括六大部分:CPU部分、復(fù)位和時鐘電路部分、電源部分、存儲器部分、串口通信接口部分和外設(shè)部分。</p><p>  下就各部分座簡要介紹。</p><p>  4.2 CPU部分。CPU.sch</p><p

66、>  CPU部分本來是用8086來做的,但考慮到,8086的尋址比較復(fù)雜,數(shù)據(jù)線分高八位和低八位,所以就改成了8088。IO/M,RD,WR幾個控制引腳的譯碼通過簡單的組合邏輯電路來實現(xiàn)。對RAM存儲器、ROM存儲器、各IO芯片的尋址譯碼,是通過一片3-8譯碼器74LS138來實現(xiàn)的。地址線的低13位代碼,在芯片選擇的時候,不起作用,只有A13~A15三位地址線負責(zé)譯碼。為了便于記憶,可把芯片選擇時的低13位地址線設(shè)為零,來代表它

67、的片選地址。如本設(shè)計中,RAM地址位0x00000來表示,而ROM的地址為0x20000,相應(yīng)地,55,53,51的地址分別為:0x30000,0x40000,0x50000。</p><p>  低13位地址線只在選擇存儲器中的某一存儲單元時使用。</p><p>  4.3復(fù)位和時鐘電路。CPU_Clock.sch</p><p>  微機電路在工作中受到干擾后

68、,容易出現(xiàn)CPU程序“跑飛”而盲目運行甚至出現(xiàn)死機現(xiàn)象。此時復(fù)位信號有效,使微機系統(tǒng)重新恢復(fù)正常運行。本設(shè)計采用的是比較簡單的一種手動的復(fù)位電路。它是通用的吧,是直接從protel的一個例子中拷</p><p><b>  過來的。</b></p><p>  關(guān)于處理器的時鐘電路確實有研究頭</p><p>  8284除了提供頻率恒定的時鐘

69、信號外,還對準備好(ready)信號,和復(fù)位(reset)信號進行同步。外界的準備好信號輸入到8284的RDY,同步的準備好信號READY從8284輸出。同樣,外界的復(fù)位信號輸入到8284的RES,同步的復(fù)位信號RESET從8284輸出。這樣,從外部來說,可以在任何時候發(fā)出這兩個信號,但是,8284的內(nèi)部邏輯電路設(shè)計成在時鐘下降沿處使READY和RESET有效。</p><p>  根據(jù)不同的振蕩器,8284和振

70、蕩器之間,用兩種不同的連接方式。通過F/\C來實現(xiàn):</p><p>  此電路圖是按同步通信的方式畫的,READY信號在以后的設(shè)計中,也沒有用到,便把它的連接去掉了</p><p>  4.4電源部分。Power Supply.sch</p><p>  4.5存儲器部分。serial_memory.sch</p><p>  2764只可

71、讀,6264可讀可寫,由于處理器用的是8088,便無需考慮A0的問題了,這種便利也體現(xiàn)在,后面的設(shè)計中,IO芯片的端口地址的設(shè)置上。</p><p>  4.6 串口通信接口部分。serial51.sch</p><p>  8253為8251提供波特率,8253只用它的第0個計數(shù)器,工作在方式3。下面是一段基于本設(shè)計的連接圖的通過8251實現(xiàn)自發(fā)自收串行通信的程序,內(nèi)包含了8253,82

72、51的初始化。</p><p>  STACKSEGMENTPARA STACK 'STACK'</p><p>  DB128 DUP(?)</p><p>  STACKENDS</p><p>  CODESEGMENTPARA PUBLIC 'CODE'</p><p&g

73、t;  ASSUMECS:CODE,SS:STACK,DS:CODE</p><p>  START:JMPMAIN</p><p>  SBUFDB1,2,3,4,5,6,7,8,9,10;定義保存“發(fā)送信息”</p><p>  RBUFDB10 DUP(?);和“接收信息”的存儲器區(qū)域</p><p>  OCOMM

74、PROC ;將(AL)寫入8251的命令口</p><p>  PUSHCX ;保存所用寄存器</p><p><b>  PUSHDX</b></p><p>  MOVDX,209H;執(zhí)行端口寫入操作</p><p><b>  OUTDX,AL</b></p

75、><p>  MOVCX,400H ;延時</p><p><b>  LOOP$</b></p><p>  POPDX ;恢復(fù)所用寄存器</p><p><b>  POPCX</b></p><p>  RET ;返回主

76、調(diào)程序</p><p>  OCOMMENDP</p><p>  INITPROC ;初始化子程序</p><p>  MOV DX,0x40003H;設(shè)置8253的1#通道為方式3、只讀寫低8位數(shù)據(jù)和2進制計數(shù)方式</p><p>  MOVAL,56H</p><p><b

77、>  OUTDX,AL</b></p><p>  MOVDX, 0x40001H;設(shè)置計數(shù)值,通訊速率為1M÷52÷16≈1200 bps</p><p><b>  MOVAL,52</b></p><p><b>  OUTDX,AL</b></p>&l

78、t;p>  MOVAX,300H;向8251的命令端口寫入3個0</p><p>  II1:CALLOCOMM</p><p><b>  DECAH</b></p><p><b>  JNZII1</b></p><p>  MOVAL,40H;復(fù)位8251</p&

79、gt;<p>  CALLOCOMM</p><p>  MOVAL,4EH;設(shè)置1個停止位、8個數(shù)據(jù)位和16的波特率因子</p><p>  CALLOCOMM</p><p>  MOVAL,37H;允許8251發(fā)送和接收</p><p>  CALLOCOMM</p><p>  RE

80、T ;返回主調(diào)程序</p><p><b>  INITENDP</b></p><p><b>  MAIN:</b></p><p>  MOVAX,CS;初始化數(shù)據(jù)段寄存器</p><p><b>  MOVDS,AX</b></p>

81、<p>  LEASI,SBUF;和發(fā)送</p><p>  LEADI,RBUF;與接收指針</p><p><b>  call init</b></p><p><b>  M01:</b></p><p>  MOVDX,0x50002H;等待8251處于允許發(fā)送

82、狀態(tài)</p><p><b>  M02:</b></p><p><b>  INAL,DX</b></p><p><b>  TESTAL,1</b></p><p><b>  JZM02</b></p><p> 

83、 MOVAL,[SI];發(fā)送1個數(shù)據(jù)</p><p><b>  INCSI</b></p><p>  MOVDX,0x50001H</p><p><b>  OUTDX,AL</b></p><p>  MOVCX,40H;延時</p><p><b

84、>  LOOP$</b></p><p>  MOVDX,0x50002H;等待8251處于允許接收狀態(tài)</p><p><b>  M03:</b></p><p><b>  INAL,DX</b></p><p><b>  TESTAL,2</b

85、></p><p><b>  JZM03</b></p><p>  MOVDX,0x50001H;接收</p><p><b>  INAL,DX</b></p><p>  MOV[DI],AL;并保存一個數(shù)據(jù)</p><p><b>  I

86、NCDI</b></p><p>  CMPSI,OFFSET SBUF+10;判斷是否處理完了全部數(shù)據(jù)?</p><p>  JBM01;未完,再處理下一個</p><p>  HLT;完了,執(zhí)行停機動作</p><p><b>  CODEENDS</b></p><p&

87、gt;<b>  ENDSTART</b></p><p>  下面是一段基于本設(shè)計的連接圖的通過8251實現(xiàn)串行通信的程序。</p><p>  stack segment stack</p><p>  stack ends</p><p>  data segment</p><p>&l

88、t;b>  data ends</b></p><p>  code segment</p><p>  assume cs:code,ds:data,ss:stack</p><p><b>  start: </b></p><p><b>  push cs</b></

89、p><p><b>  pop ds </b></p><p>  mov dx,0x0003h;設(shè)置8253計數(shù)1工作方式3</p><p>  mov al,56h</p><p><b>  out dx,al</b></p><p>  mov al,52 <

90、/p><p>  mov dx,0x0001h給8253計數(shù)器1送初值</p><p><b>  out dx,al</b></p><p>  mov dx,0x50001h ;初始化8251</p><p><b>  xor al,al</b></p><p>  

91、mov cx,03;向8251控制端口送3個0</p><p><b>  delay:</b></p><p><b>  call out1</b></p><p>  loop delay</p><p>  mov al,40h;向8251控制端口送40H,使其復(fù)位</p&

92、gt;<p><b>  call out1</b></p><p>  mov al,4eh;設(shè)置為1個停止位,8個數(shù)據(jù)位,波特率因子為16</p><p><b>  call out1</b></p><p>  mov al,27h;向8251送控制字允許其發(fā)送和接收</p>

93、<p><b>  call out1</b></p><p>  next: mov dx,0x50001h</p><p><b>  in al,dx</b></p><p>  test al,02;檢查接收是否準備好</p><p>  jz next;沒有,

94、等待</p><p>  mov dx,0x50000h</p><p>  in al,dx;準備好,接收 </p><p>  push ax </p><p>  mov cx,40h</p><p><b>  s51: </b></p><p

95、>  loop s51;延時</p><p><b>  waiti: </b></p><p>  mov dx,0x50001h</p><p><b>  in al,dx</b></p><p>  test al,01;發(fā)送是否準備好</p><p&

96、gt;<b>  jz waiti</b></p><p>  mov dx,0x50000h</p><p><b>  pop ax</b></p><p>  out dx,al </p><p><b>  jmp next</b></p><

97、p>  out1 proc near;向外發(fā)送一字節(jié)的子程序</p><p>  out dx,al</p><p><b>  push cx</b></p><p>  mov cx,400h</p><p><b>  gg:</b></p><p> 

98、 loop gg;延時</p><p><b>  pop cx</b></p><p><b>  ret</b></p><p><b>  out1endp</b></p><p><b>  code ends</b></p>

99、;<p><b>  end start</b></p><p>  4.7 外設(shè)部分。key_led.sch</p><p>  其實在PC機中應(yīng)該是用8279來實現(xiàn)的。</p><p><b>  五、軟件設(shè)計:</b></p><p><b>  1.程序流程圖:<

100、;/b></p><p><b>  2.程序清單:</b></p><p>  nameserialcommunication</p><p>  datasegment</p><p>  messagedb'Serial Communication',0ah,0dh,</p>

101、;<p>  db'Any key press is sent to other PC',0ah,0dh</p><p>  db'press any key to exit','$'</p><p><b>  dataends</b></p><p>  codesegm

102、ent</p><p>  assumecs:code,ds:data</p><p><b>  start:</b></p><p>  movax,data</p><p><b>  movds,ax</b></p><p>  movah,09 ;顯

103、示字符串</p><p>  movdx,offset message</p><p><b>  int21h</b></p><p><b> ?。怀跏蓟?</b></p><p><b>  movah,0</b></p><p>  m

104、ovdx,0 ;初始化COM0</p><p>  moval,0c3h;11000011,4800,n,1,8</p><p>  int14h;調(diào)用BIOS 14號中斷</p><p><b>  again:</b></p><p>  movah,01;獲取鍵盤狀態(tài)</p>

105、<p>  int16h;檢查鍵盤是否按下</p><p>  jznext;如果沒有則轉(zhuǎn)入到接收模式</p><p>  movah,0;如過有按鍵按下,讀取出來</p><p>  int16h;調(diào)用16號BIOS中斷</p><p>  cmpal,1bh;比較一下是否是’ESC’鍵</

106、p><p>  jeexit;如果是,直接退出通信</p><p>  movah,1;如果不是,把按下的字符發(fā)送到COM</p><p>  movdx,0 ;選擇COM0</p><p>  int14h;調(diào)用BIOS中斷</p><p> ?。灰韵逻@部分代碼,檢查COM0端口,看看是否有字符接

107、收,如果有,接收,并且把它在終端上顯示出來</p><p><b>  next:</b></p><p>  movah,3;把COM口的狀態(tài)讀到AH</p><p>  movdx,0 ;選擇COM0</p><p>  int 14h;解釋同上</p><p>  a

108、ndah,1;屏蔽除D0位的其它位</p><p>  cmpah,1;檢查D0看是否有一個字符等待接收</p><p>  jneagain;沒有,則轉(zhuǎn)入到監(jiān)視鍵盤模塊</p><p>  movah,2;有的話,從COM0讀出</p><p><b>  movdx,0</b></p&

109、gt;<p><b>  int14h</b></p><p>  movdl,al;dl中存放要顯示的字符</p><p>  movah,2;21號中斷2號調(diào)用,顯示字符</p><p>  int21h;調(diào)用DOS 21號中斷</p><p>  jmpagain;跳回到監(jiān)視

110、鍵盤模塊</p><p><b>  exit:</b></p><p>  movah,4ch;退出DOS</p><p><b>  int21h</b></p><p><b>  codeends</b></p><p>  end s

111、tart</p><p>  以上是全雙工雙機通信的程序代碼,自發(fā)自收也可以用同樣的代碼,只需改變連線,把9針插座的2,3引腳用導(dǎo)線交叉互聯(lián)即可。</p><p><b>  六、方案論證:</b></p><p>  按設(shè)計題目實現(xiàn)雙機通信可有三種方法:</p><p>  第一種方法:通過配置PC機中固有的RS23

112、2適配卡,通過調(diào)用BIOS的14號中斷,及DOS中斷的16號、21號中斷里的功能,實現(xiàn)雙機的通信。</p><p>  第二種方案:在微機中通過配置可編程芯片8251來實現(xiàn)串行通信。</p><p>  第三種方案:由芯片級做起,查資料,畫原理圖,版圖,制版,調(diào)試,實現(xiàn)串口通信。</p><p>  總地來說,第三種方案不符合現(xiàn)實情況,在時間上,資源上不允許,但毋庸

113、置疑的是,它確實是最吸引我們的一種方案。</p><p>  第二種方案是最合情合理的,既不像第三種方案那樣遙遠,也不像第一種方案那樣簡單。但在實際做的工程中,發(fā)現(xiàn)按實驗資料所設(shè)計的程序并沒有實現(xiàn),可能有一些未知的原因。最后選擇了第三種方案,可惜的是,這種程序更加偏向于軟件。為彌補這種不足,只能把實驗原理圖畫得詳細一點了。</p><p><b>  七、實驗結(jié)果:</b&

114、gt;</p><p>  1.在發(fā)送端的程序顯示結(jié)果</p><p>  輸入的字符沒有顯示,因為程序沒有回顯功能</p><p>  2.在接收端的程序顯示結(jié)果</p><p>  注:其實“接收端”與“發(fā)送端”描述,只是在一次的通信中相對而言的,并沒有絕對的接收端與發(fā)送端,因為此程序是雙工的。</p><p> 

115、 八、設(shè)計小結(jié)和心得:</p><p>  這次的課程設(shè)計,我覺得我學(xué)到了很多的東西,受益匪淺。因為之前已經(jīng)做了幾次單片機課程設(shè)計的經(jīng)驗,這次的課程設(shè)計相對于上次來說,明顯不再是那么手足無措。因為,對于一些基本硬件的基本用法,我們在前幾次的實驗中基本上都已經(jīng)用過,所以比較了解來。此外,對于電路的設(shè)計也有了一定的理解。但是,通過本次的課程設(shè)計,我還是很很多體會。我更加懂得了如何利用匯編語言聯(lián)系實際來進行編程,同時在

116、編程的過程中,應(yīng)當(dāng)了解一些管腳的使用方法,以及在匯編語言中使用的代碼和一些器件的初始化方法,同時也讓我明白了自己的一些不足,認識到僅僅把書本上的知識學(xué)好是遠遠不夠的,需要拓寬自己的知識面,將所學(xué)習(xí)到的東西運用到實踐中去,這樣才能夠應(yīng)付未來的挑戰(zhàn)。</p><p>  當(dāng)然在本次課程設(shè)計中,我遇到了很多之前沒有想到會遇到的困難。此時,圖書館和上網(wǎng)查資料成了我們很好的助手。在查閱資料的過程中,我們要判斷優(yōu)劣、取舍相關(guān)

117、知識,不知不覺中我們查閱資料的能力也得到了很好的鍛煉。我們學(xué)習(xí)的知識是有限的,在以后的工作中我們肯定會遇到許多未知的領(lǐng)域,這方面能力的提升便會使我們受益非淺。而且在設(shè)計過程中,總是遇到這樣或那樣的問題。有時發(fā)現(xiàn)一個問題的時候,需要做大量的工作來進行調(diào)試,然后才能解決。自然而然,我分析問題解決問題的能力得到了增強。為以后的工作積累了經(jīng)驗,增強了信心。通過這次的軟件設(shè)計,我熟悉了單片機開發(fā)的每個步驟,它不但檢查了我的整個知識面的掌握程度,知

118、道了自己的不足,讓我更加牢固的掌握了單片機方面的相關(guān)知識!這次的軟件設(shè)計也讓我學(xué)會了在遇到問題時,如何冷靜的思考問題以及解決問題!更讓我懂得了學(xué)習(xí)貴在堅持。我學(xué)到了更多以前沒有學(xué)到過的知識。在這里,我很感謝指導(dǎo)老師和同學(xué)給我的幫助,使我能順利完成我的軟件設(shè)計。</p><p>  總之通過本次設(shè)計,讓我很好的鍛煉了理論聯(lián)系實際,如何把理論應(yīng)用于實際,又如何實踐中遇到的問題怎樣用理論去解決。感謝學(xué)校給我們大家這樣一

119、次課程設(shè)計的機會,為我們以后的工作打下了堅實的基礎(chǔ)。</p><p><b>  九、參考文獻:</b></p><p>  《微型計算機接口技術(shù)及應(yīng)用》</p><p><b>  十、小組安排:</b></p><p>  組長(彭 勇):設(shè)計原理及方案;設(shè)計小結(jié)和心得;以及實驗報告</

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論