版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理課程設(shè)計報告-雙機串行通信
- 《微機原理與接口技術(shù)》課程設(shè)計--雙機串行通訊程序設(shè)計
- 接口技術(shù)課程設(shè)計-雙機串行通訊
- 雙機串行通信課程設(shè)計
- 課程設(shè)計 雙機串行通信的實現(xiàn)
- 微機接口課程設(shè)計
- 接口課程設(shè)計報告——雙機通信
- 雙機并行通訊微機原理課程設(shè)計
- 微機接口課程設(shè)計報告
- 接口與通信課程設(shè)計--雙機通信
- 單片機課程設(shè)計報告--雙機串行通訊
- 單片機課程設(shè)計---雙機之間的串行通信設(shè)計
- eda課程設(shè)計--rs-232485通信接口設(shè)計
- 微機原理課程設(shè)計--雙機并行通訊問題
- 微機接口課程設(shè)計---位移的測量
- 微機原理課程設(shè)計--中斷實現(xiàn)雙機通訊程序
- 接口與通信課程設(shè)計---雙擊串行通信
- 微機接口課程設(shè)計(電子鐘)
- 評分系統(tǒng)課程設(shè)計-微機接口課程設(shè)計報告
- 微機接口音樂點歌課程設(shè)計
評論
0/150
提交評論