




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于TPC-USB實(shí)驗(yàn)系統(tǒng)的串行通信協(xié)議研究第一部分概論隨著計(jì)算機(jī)網(wǎng)絡(luò)化和微機(jī)分級(jí)分布式應(yīng)用系統(tǒng)的發(fā)展,通信的功能越來越重要。通信是指計(jì)算機(jī)與外界的信息傳輸,既包括計(jì)算機(jī)與計(jì)算機(jī)之間的傳輸,也包括計(jì)算機(jī)與外部設(shè)備,如終端、打印機(jī)和磁盤等設(shè)備之間的傳輸。在計(jì)算機(jī)領(lǐng)域內(nèi),有兩種數(shù)據(jù)通信方式:并行通信和串行通信。并行通信是把一個(gè)字符的各數(shù)位用幾條線同時(shí)進(jìn)行傳輸,傳輸速度快,信息率高。但它比串行通信所用的電纜多,故常用在傳輸距離較短、數(shù)據(jù)傳輸率較高的場(chǎng)合。串行通信是指數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。隨著通信技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展、Internet網(wǎng)的普及,計(jì)算機(jī)遠(yuǎn)程通信已滲透到國(guó)民經(jīng)濟(jì)的各個(gè)領(lǐng)域,而遠(yuǎn)程通信絕大多數(shù)采用串行通信的方式。其只要少數(shù)幾條線就可以在系統(tǒng)間交換信息,特別適用于計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間的遠(yuǎn)距離通信,但串行通信的速度比較慢。串行通信逐位依次順序傳送,通信雙方需嚴(yán)格同步。目前串行通信中數(shù)據(jù)傳輸?shù)耐椒椒ㄓ袃煞N,即異步方式和同步方式。同步通信方式要求通信雙方以相同的時(shí)鐘頻率進(jìn)行,而且準(zhǔn)確協(xié)調(diào),通過共享一個(gè)單個(gè)時(shí)鐘或定時(shí)脈沖源保證發(fā)送方和接收方的準(zhǔn)確同步,效率較高。異步方式通信ASYNC(AsynchronousDataCommunication),又稱起止式異步通信,是計(jì)算機(jī)通信中最常用的數(shù)據(jù)信息傳輸方式。異步通信方式不要求雙方同步,收發(fā)方可采用各自的時(shí)鐘源,雙方遵循異步的通信協(xié)議,以字符為數(shù)據(jù)傳輸單位,發(fā)送方傳送字符的時(shí)間間隔不確定,發(fā)送效率比同步傳送效率低。串行異步通信時(shí),接收方不斷地檢測(cè)或監(jiān)視串行輸入線上的電平變化,當(dāng)檢測(cè)到有效起始位出現(xiàn)時(shí),便知道接著是有效字符位的到來,并開始接收有效字符,當(dāng)檢測(cè)到停止位時(shí),就知道傳輸?shù)淖址Y(jié)束了。經(jīng)過一段隨機(jī)時(shí)間間隔之后,又進(jìn)行下一個(gè)字符的傳送過程。在設(shè)計(jì)中,串行異步通信的數(shù)據(jù)格式,包括數(shù)據(jù)位的位數(shù)、校驗(yàn)位的設(shè)置以及停止位的位數(shù)根據(jù)實(shí)際需要,通過可編程串行接口(如:8251A)電路,用軟件命令的方式進(jìn)行設(shè)置。在不同傳輸系統(tǒng)中,這些通信格式的設(shè)定完全可以不同;但在同一個(gè)傳輸系統(tǒng)的發(fā)送方和接收方的設(shè)定必須一致,否則將會(huì)由于收、發(fā)雙方約定的不一致而造成數(shù)據(jù)傳輸?shù)腻e(cuò)誤與混亂。本文基于TPC-USB實(shí)驗(yàn)系統(tǒng),利用8251A接口芯片實(shí)現(xiàn)兩個(gè)實(shí)驗(yàn)設(shè)備間的異步串行通信。經(jīng)實(shí)驗(yàn)驗(yàn)證,該設(shè)計(jì)方案是完全可行的。第二部分硬件設(shè)計(jì)1.硬件基礎(chǔ)1.1TPC-USB實(shí)驗(yàn)系統(tǒng)簡(jiǎn)介TPC-USB通用微機(jī)接口實(shí)驗(yàn)系統(tǒng)是清華大學(xué)計(jì)算機(jī)系研制,清華大學(xué)科教儀器廠生產(chǎn)的學(xué)生實(shí)驗(yàn)系統(tǒng)。該系統(tǒng)由一塊USB總線接口模塊、一個(gè)擴(kuò)展實(shí)驗(yàn)臺(tái)及軟件集成實(shí)驗(yàn)環(huán)境組成。USB總線接口模塊直接通過USB總線電纜與PC機(jī)相連,模塊與實(shí)驗(yàn)臺(tái)之間由一條50芯扁平電纜連接。(1)50芯總線信號(hào)插座及總線信號(hào)插孔50芯總線信號(hào)插座在實(shí)驗(yàn)臺(tái)左上方,總線插座信號(hào)安排如上表。各總線信號(hào)采用“自鎖緊”插孔在標(biāo)有“總線”的區(qū)域引出,有數(shù)據(jù)線D0-D7、地址線A19-A0、I/O讀寫信號(hào)IORIOW、存儲(chǔ)器讀寫信號(hào)MEMRMEMW、中斷請(qǐng)求IRQ、DMA申請(qǐng)DRQ、DMA回答DACK、AEN等。(2)時(shí)鐘電路如下圖所示,輸出1MHZ、2MHZ兩種信號(hào),供定時(shí)器/計(jì)數(shù)器、A/D轉(zhuǎn)換器、串行接口實(shí)驗(yàn)使用。1.28251A芯片1.2.18251A芯片簡(jiǎn)介 825IA是改進(jìn)型可編程的串行通信接口芯片,既可用于8080/8085微型計(jì)算機(jī)系統(tǒng),又可用于8086微型計(jì)算機(jī)系統(tǒng),其輸出輸人和TTL電平兼容。使用單一的+5V電源。邏輯結(jié)構(gòu)由五部分組成:發(fā)送器、接受器、數(shù)據(jù)總線緩沖器、調(diào)制懈調(diào)控制器和讀/寫控制電路。?發(fā)送器用以完成把從CPU傳來的并行數(shù)據(jù)轉(zhuǎn)化成串行數(shù)據(jù)發(fā)出;接受器則是把接到的串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù)交給CPU;調(diào)制解調(diào)控制器用以連接調(diào)制解調(diào)器;讀、寫控制器用以管理CPU與825IA之間的信息傳送;數(shù)據(jù)總線緩沖器完成8251A內(nèi)部總線和8086(或808018085)的系統(tǒng)數(shù)據(jù)總線接口。8251A的內(nèi)部結(jié)構(gòu)框圖如圖1.1所示:圖1.1:8251內(nèi)部結(jié)構(gòu)圖1.2.28251A芯片的基本性能可工作在同步方式,也可工作在異步方式。同步方式下波特率為0~64000波特,異步方式下波特率為0~19200波特;在同步方式時(shí),每個(gè)字符可定義為5、6、7或8位。兩種方法實(shí)現(xiàn)同步,由內(nèi)部自動(dòng)檢測(cè)同步字符或由外部給出同步信號(hào)。允許同步方式下增加奇/偶校驗(yàn)位進(jìn)行校驗(yàn);在異步方式下,每個(gè)字符可定義為5、6、7或8位,用1位作奇偶校驗(yàn)。時(shí)鐘速率可用軟件定義為波特率的l、16或64倍。另外,8251A在異步方式下能自動(dòng)為每個(gè)被輸出的數(shù)據(jù)增加1個(gè)起始位,并能根據(jù)軟件編程為每個(gè)輸出數(shù)據(jù)設(shè)置1位、1.5位或2位停止位;能進(jìn)行出錯(cuò)檢測(cè)。帶有奇偶、溢出和幀錯(cuò)誤等檢測(cè)電路,用戶可通過輸入狀態(tài)寄存器的內(nèi)容進(jìn)行查詢;接口的輸入和輸出均為TTL電平,單一+5V電源;與Intel8080、8085、8088CPU兼容。1.2.38251A芯片的結(jié)構(gòu)?(1)接收緩沖器:從RxD引腳接收串行數(shù)據(jù),并將其轉(zhuǎn)換成并行數(shù)據(jù)。 (2)接收控制電路:配合接收緩沖器工作,管理有關(guān)接收的所有功能。 (3)發(fā)送緩沖器:將來自CPU的并行數(shù)據(jù)加上相應(yīng)的控制信息,然后轉(zhuǎn)換成串行數(shù)據(jù)從TxD引腳發(fā)出去。?(4)發(fā)送控制電路:配合發(fā)送緩沖器工作,管理有關(guān)串行發(fā)送的所有功能。數(shù)據(jù)總線緩沖器:把8251A和系統(tǒng)數(shù)據(jù)總線相連,傳輸數(shù)據(jù)和控制信息。 (5)讀/寫控制電路:配合數(shù)據(jù)總線緩沖器工作。 (6)調(diào)制解調(diào)控制電路:當(dāng)計(jì)算機(jī)進(jìn)行遠(yuǎn)程通信時(shí),要用調(diào)制器將串行接口傳來的數(shù)字信號(hào)變?yōu)槟M信號(hào),再通過電話線發(fā)送出去。接收器則是將接收到的模擬信號(hào)經(jīng)解調(diào)器變成數(shù)字信號(hào),再由串行接口送入計(jì)算機(jī)。1.2.48251A芯片的引腳功能8251A外部引腳如圖1.2所示,它的接口信號(hào)可以分為七類,具體如下:圖1.2:8251A外部引腳(1)雙向的數(shù)據(jù)信號(hào)線D7~D0825lA有8條數(shù)據(jù)線D7~D0。825lA通過這8根線和CPU的數(shù)據(jù)總線相連接,實(shí)際上,數(shù)據(jù)線上不只是傳輸數(shù)據(jù),還傳輸CPU對(duì)825lA的編程命令字和825lA送往CPU的狀態(tài)信息。(2)片選信號(hào)/CS低電平有效,芯片被選中才能工作,如果8251A未被選中,數(shù)據(jù)線D7~D0將處于高阻狀態(tài),讀/寫信號(hào)對(duì)芯片都不起作用。(3)讀/寫控制信號(hào)RD:讀信號(hào),低電平有效。當(dāng)該信號(hào)有效時(shí),并且/CS也為低電平,CPU可以從8251A讀取數(shù)據(jù)或狀態(tài)信息。WR:寫信號(hào),低電平有效。當(dāng)該信號(hào)有效時(shí),并且/CS也為低電平,CPU可以向8251寫入數(shù)據(jù)或控制字。C/D:控制/數(shù)據(jù)信號(hào),分時(shí)復(fù)用。用來區(qū)分當(dāng)前讀/寫的是數(shù)據(jù)還是控制信息或狀態(tài)信息。當(dāng)C/D為高電平時(shí),系統(tǒng)處理的是控制信息或狀態(tài)信息,從D7~D0端寫入8251A的必須是方式字、控制字或同步字符。當(dāng)C/D為低電平時(shí),寫入的是數(shù)據(jù)。RESET:復(fù)位信號(hào),高電平有效。當(dāng)該信號(hào)為高時(shí),8251A實(shí)現(xiàn)復(fù)位功能,內(nèi)部所有的寄存器都被置為初始狀態(tài)。CLK:主時(shí)鐘信號(hào),用于芯片內(nèi)部的定時(shí)。對(duì)于同步方式,它的頻率必須大于發(fā)送時(shí)鐘TxC和接收時(shí)鐘RxC的30倍。對(duì)于異步方式,必須大于它們的4.5倍。8251A的時(shí)鐘頻率規(guī)定在0.74~3.1MHz的范圍內(nèi)。(4)與發(fā)送有關(guān)的聯(lián)絡(luò)信號(hào)TxRDY:發(fā)送器準(zhǔn)備好信號(hào),高電平有效。當(dāng)該信號(hào)為高電平時(shí),通知CPU,8251A已經(jīng)準(zhǔn)備好發(fā)送一個(gè)字符,表示CPU可以輸入數(shù)據(jù)。(5)與接收有關(guān)的聯(lián)絡(luò)信號(hào)。RxRDY:接收器準(zhǔn)備好信號(hào),高電平有效。當(dāng)該信號(hào)為高時(shí),表示825lA已從外部設(shè)備或調(diào)制解調(diào)器中收到一個(gè)字符,等待CPU取走。它可以作為中斷請(qǐng)求信號(hào)或查詢聯(lián)絡(luò)信號(hào)與CPU聯(lián)系。(6)8251A與外部設(shè)備之間的連接信號(hào)8251A與外部設(shè)備之間的連接信號(hào)分為兩類:收發(fā)聯(lián)絡(luò)信號(hào):DTR:數(shù)據(jù)終端準(zhǔn)備好信號(hào),通知外部設(shè)備,CPU當(dāng)前已經(jīng)準(zhǔn)備就緒。DSR:數(shù)據(jù)設(shè)備準(zhǔn)備好信號(hào),表示當(dāng)前外設(shè)已經(jīng)準(zhǔn)備好。RTS:請(qǐng)求發(fā)送信號(hào),表示CPU已經(jīng)準(zhǔn)備好發(fā)送。CTS:允許發(fā)送信號(hào),是對(duì)的響應(yīng),由外設(shè)送往8251A。實(shí)際使用時(shí),這4個(gè)信號(hào)中通常只有CTS必須為低電平,其它3個(gè)信號(hào)可以懸空。數(shù)據(jù)信號(hào):TXD:發(fā)送器數(shù)據(jù)輸出信號(hào)。當(dāng)CPU送往8251A的并行數(shù)據(jù)被轉(zhuǎn)變?yōu)榇袛?shù)據(jù)后,通過TXD送往外設(shè)。RXD:接收器數(shù)據(jù)輸入信號(hào)。用來接收外設(shè)送來的串行數(shù)據(jù),數(shù)據(jù)進(jìn)入8251A后被轉(zhuǎn)變?yōu)椴⑿蟹绞健?7)電源和地VCC:電源輸入GND:地2.硬件設(shè)計(jì)2.1基于TPC-USB實(shí)驗(yàn)系統(tǒng)總線與8251A的連接基于TPC-USB實(shí)驗(yàn)系統(tǒng)總線和8251A實(shí)現(xiàn)相距較近的兩臺(tái)微型計(jì)算機(jī)相互通信的系統(tǒng)連接簡(jiǎn)化框圖2.1如下:圖2.1:系統(tǒng)連接簡(jiǎn)化框圖(1)如圖2.1所示,CPU發(fā)送指令,甲機(jī)發(fā)送數(shù)據(jù),8251A將數(shù)據(jù)送到發(fā)送緩沖器,經(jīng)過并串轉(zhuǎn)換后通過TXD發(fā)送出去;乙機(jī)監(jiān)視其RXD,有數(shù)據(jù)發(fā)到時(shí),8251A將數(shù)據(jù)經(jīng)過串并轉(zhuǎn)換后發(fā)送到接收緩沖器,等待CPU來讀取。(2)主要信號(hào)線連接論述:D0~D7:TPC-USB實(shí)驗(yàn)系統(tǒng)上的D0~D7是8088上的數(shù)據(jù)線,用來傳送數(shù)據(jù);而8251A是I/O芯片,它的數(shù)據(jù)線是用于CPU與8251間傳送數(shù)據(jù)的,因此可以把8251A上的數(shù)據(jù)線直接與TPC-USB實(shí)驗(yàn)系統(tǒng)上的D0~D7相連。RD與WR(shí):8251A對(duì)于CPU來說是I/O設(shè)備,要使8251A上的RD和WR信號(hào)有效,必須使CPU的I/O與WR、RD同時(shí)有效,而PC/XT總線上的IOR和IOW是I/O讀和I/O寫,所以只要把8251A上的WR、RD分別與PC/XT總線上的IOR和IOW直接相連就可以了。當(dāng)CPU?qǐng)?zhí)行外設(shè)寫操作時(shí),WR有效;當(dāng)CPU執(zhí)行外設(shè)讀操作時(shí),RD有效。CTS:當(dāng)CTS=0時(shí),引腳信號(hào)TxD變位為高電平,CPU可以8251A發(fā)送數(shù)據(jù),,本設(shè)計(jì)把CTS的引腳直接接地。CLK:TPC-USB實(shí)驗(yàn)系統(tǒng)上提供了1MHZ和2MHZ的時(shí)鐘,因此,只需把TPC-USB系統(tǒng)板上的2MHZ直接連接到8251A的CLK信號(hào),將TPC-USB系統(tǒng)板上的1MHZ經(jīng)過二分頻后連接到8251A的TXC和RXC上,根據(jù)8251的參數(shù)規(guī)定,這是滿足8251A的工作要求的RESET:RESET為復(fù)位信號(hào),當(dāng)該信號(hào)有效時(shí),8251A實(shí)現(xiàn)復(fù)位功能,內(nèi)部所有的寄存器都被置為初始狀態(tài)。將8251A上的RESET信號(hào)直接連在TPC-USB實(shí)驗(yàn)系統(tǒng)上提供的RESET信號(hào)上,只要TPC-USB實(shí)驗(yàn)系統(tǒng)開啟時(shí),就對(duì)8251A進(jìn)行了初始化。C/D:C/D是控制/數(shù)據(jù)信號(hào),分時(shí)復(fù)用。用來區(qū)分當(dāng)前讀/寫的是數(shù)據(jù)還是控制信息或狀態(tài)信息。將A0直接與C/ˉD相連,通過改變A0的值可以實(shí)現(xiàn)片內(nèi)選。當(dāng)A0=0(偶地址),選中8251的數(shù)據(jù)口;當(dāng)A0=1(奇地址)時(shí),選中8251的數(shù)據(jù)口。2.2地址譯碼電路:譯碼電路的目的是當(dāng)CPU訪問某個(gè)I/O系統(tǒng)時(shí),產(chǎn)生對(duì)應(yīng)的片選信號(hào)CS。在一個(gè)I/O系統(tǒng)中,往往有多個(gè)端口,所以譯碼電路應(yīng)根據(jù)需要對(duì)一個(gè)地址區(qū)間產(chǎn)生片選信號(hào)。一般把地址信號(hào)分為兩部分:一部分是高位地址與CPU或總線的控制信號(hào)組合,經(jīng)過譯碼電路產(chǎn)生一個(gè)片選信號(hào),選擇某個(gè)I/O接口芯片;另一部分是低位地址線直接連到I/O接口芯片,以實(shí)現(xiàn)接口芯片的片內(nèi)尋址。按照地址譯碼電路采用的元器件來分,可分為門電路譯碼,譯碼器譯碼;按照譯碼電路形式來分,又可分為固定式和可選式端口地址譯碼。(1)方案一:結(jié)合本設(shè)計(jì),考慮到為系統(tǒng)以后擴(kuò)充留有余地,因此我們選擇了可選式端口地址譯碼,并且使用8位比較器74LS688和地址開關(guān)實(shí)現(xiàn)地址譯碼,譯碼電路如圖2.2所示:圖2.2:地址譯碼電路如圖2.2:74LS688將來自系統(tǒng)的AEN和A2,A3,A7~A9,即P7~P0與DIP開關(guān)設(shè)定的數(shù)據(jù)Q7~Q0進(jìn)行比較,輸出到74LS138的控制端G2B上。根據(jù)比較器的特性,當(dāng)輸入端P7~P0的地址和Q7~Q0的開關(guān)狀態(tài)一致時(shí),輸出低電平,使譯碼器進(jìn)行譯碼。圖中,當(dāng)A9=1,AEN=0時(shí)譯碼才有效。(2)方案二:圖2.3如圖2.3所示,TPC-USB實(shí)驗(yàn)臺(tái)上I/O地址選用280H-2BFH64個(gè),分8組輸出,低三位地址A0~A2不參與譯碼。因此,每一有效輸出是一組地址,如Y0輸出,當(dāng)?shù)腿坏刂纷兓瘯r(shí)(000~111),改組地址的變化范圍為280H~287H。Y0-Y7的輸出地址分別為280H-287H;288H-28FH;290H-297H;298H-29FH;2A0H-2A7H;2A8H-2AFH;2B0H-2B7H;2B8H-2BFH,8根輸出線在實(shí)驗(yàn)臺(tái)“I/O地址”處分別由自鎖緊插孔引出。
結(jié)合本設(shè)計(jì),本設(shè)計(jì)的8251A的端口分別為02B8H(0000,0010,1011,1000)和02B9H(0000,0010,1011,1001),當(dāng)A9~A3=1010111,A2=0,A1=0,A0=0,譯碼電路產(chǎn)生片選信號(hào),選中該8251A芯片,并通過片內(nèi)尋址選中了8251A的數(shù)據(jù)口:02B8H;當(dāng)A9~A3=1010111,A2=0,A1=0,A0=1時(shí),譯碼電路產(chǎn)生片選信號(hào),選中該8251A芯片,并通過片內(nèi)尋址選中了8251A的控制口:2B9H。?本設(shè)計(jì)的實(shí)驗(yàn)采用了TPC-USB實(shí)驗(yàn)系統(tǒng)上的地址譯碼電路即方案二。?2.3硬件測(cè)試硬件測(cè)試主要有兩種:靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。靜態(tài)測(cè)試:查看硬件的連接是否正確動(dòng)態(tài)測(cè)試:測(cè)試8251A的收發(fā)功能第三部分軟件設(shè)計(jì)1、編程思想在軟件設(shè)計(jì)中我們要實(shí)現(xiàn)雙機(jī)間的串行數(shù)據(jù)通信,CPU與接口之間可按查詢方式或中斷方式進(jìn)行數(shù)據(jù)傳送,本設(shè)計(jì)采用查詢方式。CPU與8251A之間用查詢方式交換數(shù)據(jù)口地址分配是:0209H為狀態(tài)命令/狀態(tài)口,0208H為數(shù)據(jù)口。選取甲、乙兩臺(tái)機(jī)作為通信雙方,通信雙方均作為數(shù)據(jù)終端設(shè)備DTE,可實(shí)現(xiàn)全雙工通信,因此,甲乙兩機(jī)均可完成發(fā)送和接收,這里我們選擇甲機(jī)做為發(fā)送機(jī)發(fā)送數(shù)據(jù),乙機(jī)做為接收機(jī)接收數(shù)據(jù)。目的是將甲機(jī)中100字節(jié)數(shù)據(jù)傳送到乙機(jī)中。1.18251A初始化為使發(fā)送、接收的信息準(zhǔn)確,發(fā)、收兩端的動(dòng)作必須相互協(xié)調(diào)配合。倘若兩端互不聯(lián)系、協(xié)調(diào),則無論怎樣提高發(fā)送和接收動(dòng)作的時(shí)間精度,它們之間也會(huì)有極微量的誤差。隨著時(shí)間的增加,就會(huì)有誤差積累,最終會(huì)產(chǎn)生失步。發(fā)、收動(dòng)作一旦失步,就不能正確傳輸信息,結(jié)果會(huì)產(chǎn)生差錯(cuò)。因此,為使8251A正確地配合CPU進(jìn)行通信,需對(duì)8251A進(jìn)行初始化約定。對(duì)8251A進(jìn)行初始化,即對(duì)8251A寫入方式控制字和操作命令字進(jìn)行約定。由于這兩個(gè)控制字只占用一個(gè)端口地址(本設(shè)計(jì)中為地址0209H),而且他們本身沒有特征加以區(qū)分,因此對(duì)8251寫入控制字時(shí),必須嚴(yán)格按照一定的順序?qū)懭?。如果設(shè)定在異步方式,則馬上要輸出操作命令字進(jìn)行設(shè)置,然后才能進(jìn)行數(shù)據(jù)傳送;在數(shù)據(jù)傳送過程中,也可使用操作命令字進(jìn)行某些操作設(shè)置或讀取8251A的狀態(tài);在數(shù)據(jù)傳送結(jié)束時(shí),若使用IR位為“1”的內(nèi)部復(fù)位命令使8251A復(fù)位,則它又可重新接收方式選擇字,從而改變工作方式完成其他任務(wù)。當(dāng)然也可在一次數(shù)據(jù)傳送結(jié)束后不改變工作方式,則此時(shí)就不需要進(jìn)行內(nèi)部復(fù)位以及重新設(shè)置工作方式。由CPU用奇地址端口寫入的值將作為控制字送到控制寄存器,而用偶地址端口寫入的值將作為數(shù)據(jù)送到數(shù)據(jù)輸出緩沖寄存器。其初始化流程圖如右圖:(1)、設(shè)置8251A方式選擇控制字目前串行通信中數(shù)據(jù)傳輸?shù)耐椒椒ㄓ袃煞N,即異步方式和同步方式,由于異步通信的發(fā)送器和接收器可以不用共同的時(shí)鐘,通信的雙方可以各自使用自己的本地時(shí)鐘,因此我們這里選擇異步方式。根據(jù)方式選擇控制字的格式圖(如下圖)方式選擇控制字格式圖在異步傳輸方式下設(shè)置1位停止位S2S1=01;采用偶校驗(yàn)EP=1、PEN=1;字符長(zhǎng)度為8位L2L1=11;波特率因子為16即B2B1=10,則方式選擇控制字為01111110=7EH;編程代碼為:MOVDX,02B9HMOVAL,7EHOUTDX(2)、設(shè)置操作命令控制字為使8251A處于規(guī)定的工作狀態(tài),以準(zhǔn)備接收或發(fā)送數(shù)據(jù)需設(shè)置8251A的操作命令控制字。設(shè)計(jì)要求允許發(fā)送接收TxEN=1、RxE=1;清除出錯(cuò)標(biāo)志ER=0;則根據(jù)操作命令控制字的格式圖(如下圖),操作命令控制字為00010111=15H;編程代碼為:MOVAL,27HOUTDX操作命令控制字格式圖2、發(fā)送/接收程序設(shè)計(jì)因?yàn)椴捎貌樵儯?O方式,故收/發(fā)程序中只需檢查收/發(fā)準(zhǔn)備好的狀態(tài)是否置位,即可發(fā)送接收1個(gè)字節(jié)數(shù)據(jù)。狀態(tài)字的格式如下圖:狀態(tài)字的格式(1)發(fā)送子過程首先要檢查狀態(tài)字Do位發(fā)送器是否準(zhǔn)備好,若TxRDY=0,則發(fā)送器沒有準(zhǔn)備好繼續(xù)等待,如果TxRDY=1,即準(zhǔn)備好則8251A可以發(fā)送一個(gè)字節(jié)數(shù)據(jù)。這樣發(fā)送端CPU每查詢到TXRDY有效,則發(fā)送一個(gè)字節(jié)數(shù)據(jù),一直進(jìn)行到全部數(shù)據(jù)傳送完畢為止;發(fā)送流程圖如下圖。查詢8251A發(fā)送器是否準(zhǔn)備好,則可用下列程序段完成:MOVDX,02B9H;8251A的狀態(tài)口SENT:INAL,DX;讀狀態(tài)字TESTAL,01H;查D0=1?即發(fā)送準(zhǔn)備好了嗎?JZSENT;發(fā)送未準(zhǔn)備好,則等待MOVDX,02B8H;8251A的數(shù)據(jù)口OUTDX,AL;已準(zhǔn)備好則發(fā)送數(shù)據(jù)(2)接收子過程首先要檢查狀態(tài)字D1位接收器是否準(zhǔn)備好,若RxRDY=0,則接收器沒有準(zhǔn)備好繼續(xù)等待,如果RxRDY=1,即接收器準(zhǔn)備好則可以接收數(shù)據(jù);接收端CPU每查詢到RXRDY有效,則接收一個(gè)字節(jié)數(shù)據(jù),一直進(jìn)行到全部數(shù)據(jù)接收完畢為止,其接收流程如下圖。查詢8251A接收器是否準(zhǔn)備好,則可用下列程序段完成:MOVDX,02B9H;8251A的狀態(tài)口RECEIVE:INAL,DX;讀狀態(tài)字TESTAL,02H;查D1=1?即接收準(zhǔn)備好了嗎?JZRECEIVE;接收未準(zhǔn)備好,則等待MOVDX,02B8H;8251A的數(shù)據(jù)口INAL,DX;已準(zhǔn)備好則接收數(shù)據(jù)發(fā)送/接收子程序流程圖3、程序清單發(fā)送程序:DATASEGMENTMES1DB"PLEASEIMPORTYOURDATA",0DH,0AH,24HBUFDB100DB?DB100DUP(?)COUNTEQU100DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,2B9H;初始化8251OUTDXMOVAL,7EH;設(shè)置為1個(gè)停止位,8個(gè)數(shù)據(jù)位,波特率因子為16OUTDX,MOVAL,27H;向8251送控制字允許其發(fā)送和接收OUTDXLEADX,MES;顯示提示信息MOVAH,09HINT21HLEADX,BUF;從鍵盤輸入數(shù)據(jù)到緩沖區(qū)MOVAH,0AHINT21HLEADI,BUFPUSHDI;保存緩沖區(qū)數(shù)據(jù)地址MOVCX,COUNTSENT:MOVDX,2B9H;8251A的控制端口INAL,DXTESTAL,01H;發(fā)送是否準(zhǔn)備好JZSENT;發(fā)送未準(zhǔn)備好,等待MOVDX,2B8HPOPDI;數(shù)據(jù)存儲(chǔ)地址MOVAL,[DI+2]OUTDX,AL;從緩存區(qū)取一個(gè)字節(jié)發(fā)送INCDI;下一要發(fā)送數(shù)據(jù)的地址PUSHDI;保護(hù)數(shù)據(jù)緩沖區(qū)地址LOOPSENT;未發(fā)送完,則繼續(xù)發(fā)送CODEENDSENDSTART接收程序:DATASEGMENTMES1DB"SOMETHINGWR(shí)ONGHAPPENS,PROGRAMEXITS",0DH,0AH,24HDATAENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,2B9H;初始化8251OUTDX,MOVAL,7EH;設(shè)置為1個(gè)停止位,8?jìng)€(gè)數(shù)據(jù)位,波特率因子為16OUTDXMOVAL,27H;向8251送控制字允許其發(fā)送和接收OUTDX,RECEIVE:MOVDX,2B9HINAL,DXTESTAL,02HJZRECEIVETESTAL,38H;判斷是否出錯(cuò)JNZERRO;有錯(cuò),則轉(zhuǎn)出錯(cuò)處理程序MOVDX,2B8HINAL,DX;接收一個(gè)字節(jié)MOVDL,AL;在屏幕上顯示收到的數(shù)據(jù)MOVAH,02HINT21HJMPRECEIVE;繼續(xù)接收ERRO:LEADX,MES;提示出錯(cuò)MOVAH,09HINT21HMOVAH,4CH;返回DOSINT21HCODEENDSENDSTART第四部分系統(tǒng)測(cè)試與性能分析1.系統(tǒng)測(cè)試系統(tǒng)測(cè)試包括硬件和軟件兩方面的測(cè)試,主要是對(duì)正確性和性能指標(biāo)的測(cè)試。測(cè)試原則:先硬件后軟件,先測(cè)試其正確性,后測(cè)試其性能指標(biāo)。?1)硬件測(cè)試電源連接正確性測(cè)試測(cè)試8251A的各個(gè)時(shí)鐘是否正確(用示波器測(cè)CLK,TXC,RXC并觀察波形)測(cè)試8251A能否正常進(jìn)行發(fā)送(可先使8251A循環(huán)發(fā)送,然后用示波器測(cè)8251A的WR,CS,TXD,觀察波形變化)?2)軟件測(cè)試運(yùn)行自檢程序,檢測(cè)硬件鏈接。自檢程序設(shè)計(jì)為自發(fā)自收程序,分別檢測(cè)每片8251A和試驗(yàn)系統(tǒng)的硬件連接是否正確連通。(此時(shí)每片8351A的引腳RxD與引腳TxD相連接,即一片8351A實(shí)現(xiàn)自發(fā)自收)程序如下:datasegmentbufdb"1234567890abcdef$"countequ$-bufdataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,2b9h;初始化8251moval,4eh;設(shè)置為1個(gè)停止位,8?jìng)€(gè)數(shù)據(jù)位,波特率因子為16outdx,almoval,27h;向8251送控制字允許其發(fā)送和接收outdx,almovbx,offsetbuf;緩沖區(qū)首地址movcx,countnopnopnoprec:movdx,2b9hinal,dxtestal,02;檢查接收是否準(zhǔn)備好jzsent;沒有,轉(zhuǎn)發(fā)送程序movdx,2b8hinal,dx;準(zhǔn)備好,接收movdl,almovah,02;將接收到的字符顯示在屏幕上int21hsent:movdx,2b9hinal,dxtestal,01;發(fā)送是否準(zhǔn)備好jzsentmovdx,2b8hmoval,[bx];從緩沖區(qū)取一個(gè)字節(jié)數(shù)據(jù)incbxoutdx,al;發(fā)送loopreccodee(cuò)ndsendstart(此程序已通過試驗(yàn)測(cè)試)將發(fā)送和接收子程序分別載入甲、乙兩機(jī)。先運(yùn)行乙機(jī)程序,等待接收數(shù)據(jù),然后運(yùn)行甲號(hào)機(jī)程序;當(dāng)甲機(jī)提示輸入數(shù)據(jù)時(shí)從鍵盤輸入要傳輸?shù)臄?shù)據(jù),檢查乙機(jī)屏幕上顯示的數(shù)據(jù)是否和甲號(hào)機(jī)一致。如果乙機(jī)未出現(xiàn)上述結(jié)果,需要重新調(diào)試程序。首先,運(yùn)行匯編語言檢查程序是否有誤,如果程序沒有錯(cuò)誤,則需檢查收/發(fā)雙方協(xié)議是否一致,(即方式字、控制字是否設(shè)置一致);收/發(fā)數(shù)據(jù)地址及控制狀態(tài)端口是否和硬件連接保持一致。如果仍未解決,可以單步執(zhí)行或斷點(diǎn)執(zhí)行,判斷出錯(cuò)語句,分析并改進(jìn)。如果仍未檢測(cè)出錯(cuò)誤則需重新檢查硬件連接是否正確。2.性能分析本系統(tǒng)基于PC/XT總線和8251A芯片,采用查詢方式控制傳輸過程,通信距離最大可達(dá)到10M;通信速度最大可達(dá)到500bps(傳輸速率=收發(fā)時(shí)鐘頻率/波特率因子(1,16或64)。若要在近程通信中增加距離和可靠性,可采用RS-232C標(biāo)準(zhǔn),若要遠(yuǎn)程通信可進(jìn)行第五部分系統(tǒng)展望本系統(tǒng)采用查詢方式控制傳輸過程,該方式的缺點(diǎn)是CPU的執(zhí)行效率很低,且CPU與外設(shè)不能同時(shí)工作。中斷技術(shù)可以明顯地提高計(jì)算機(jī)系統(tǒng)信息處理的并行性,可實(shí)現(xiàn)處理器與外部設(shè)備并行操作。它有效地解決了CPU與各種外部設(shè)備之間的速度匹配問題。它極大地提高了處理效率,改善計(jì)算機(jī)系統(tǒng)性能,是計(jì)算機(jī)系統(tǒng)性能的重要標(biāo)志。因此,如果改變將查詢方式改為中斷方式的話,將會(huì)極大地提高本系統(tǒng)的各項(xiàng)性能。(1)硬件改進(jìn)把TxRDY和RxRDY作為中斷請(qǐng)求信號(hào),利用8259A中斷控制器控制,TxRDY和RxRDY相或以后與8259A的IOQ3相連,改進(jìn)電路如圖5.1:圖5.1:改進(jìn)方案圖(2)軟件實(shí)現(xiàn)在I/O地址中,分配8259A的端口地址為20H和21H,初始化為:、緩沖連接、中斷結(jié)束采用EOI命令、中斷優(yōu)先級(jí)采用普通全嵌套方式,初始化流程圖如下:初始化程序?yàn)?MOVDX,20HMOVAL,00010011B;邊沿觸發(fā),單片使用,需要ICW4OUTDX,AL;寫入ICW1的端口(Ao=1)MOVDX,21HMOVAL,08H;ICW2的內(nèi)容(中斷類型碼高5位)OUTDX,AL;寫入ICW2的端口(Ao=1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 共同承包甲方合同范例
- 醫(yī)藥物流收購(gòu)合同范例
- 培養(yǎng)學(xué)生審美素養(yǎng)的幼兒園教研計(jì)劃
- 兒童心理學(xué)家的咨詢項(xiàng)目與研究計(jì)劃
- 2025年自我保護(hù)中班標(biāo)準(zhǔn)教案
- 班級(jí)交流平臺(tái)建設(shè)計(jì)劃
- 品牌體驗(yàn)經(jīng)濟(jì)的興起與趨勢(shì)計(jì)劃
- 《貴州盛聯(lián)新能源投資有限公司赫章縣松林坡鄉(xiāng)騰達(dá)煤礦〔兼并重組(調(diào)整)〕礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》專家組評(píng)審意見
- 縫紉機(jī)操作知識(shí)培訓(xùn)課件
- 營(yíng)銷人員心理素質(zhì)專業(yè)培訓(xùn)教程優(yōu)化方案
- 5G手機(jī)無線通訊濾波芯片產(chǎn)業(yè)化項(xiàng)目環(huán)境影響報(bào)告表
- 工會(huì)野炊活動(dòng)方案
- 《對(duì)外援援助成套項(xiàng)目勘察設(shè)計(jì)取費(fèi)標(biāo)準(zhǔn)內(nèi)部暫行規(guī)定(稿)》
- 通用反應(yīng)單元工藝
- 空冷塔施工方案
- Inplan 操作手冊(cè)初稿
- AFM-原子力顯微鏡簡(jiǎn)介
- 實(shí)用的尺寸公差等級(jí)一覽表
- 公司資產(chǎn)無償劃轉(zhuǎn)職工安置方案安置方案
- 最新報(bào)銷菜單(精編版)
- 安全生產(chǎn)標(biāo)準(zhǔn)化全套檔案
評(píng)論
0/150
提交評(píng)論