基于增強(qiáng)型并行口的智能儀表與微機(jī)的高速通訊
基于增強(qiáng)型并行口的智能儀表與微機(jī)的高速通訊
介紹計(jì)算機(jī)增強(qiáng)型并行口的信號(hào),論述單片機(jī)控制的儀器儀表經(jīng)增強(qiáng)型并行口與微機(jī)通訊時(shí)的信號(hào)連接方式及通訊軟件設(shè)計(jì)方法。
關(guān)鍵詞:增強(qiáng)型并行口;微機(jī);單片機(jī);高速通訊
High speed Communication between an Intelligent Instrumentation
and a PC based on EPP
and a PC based on EPP
SHI Yanling, ZOU Laizhi, YAN Zhiqiang
(Engineer Command Academy, Xuzhou 221004, China)
Key words: EPP; PC; microcontroller; high?speed communication
1EPP信號(hào)
微型計(jì)算機(jī)的新型并行口電路主要由狀態(tài)寄存器、控制寄存器、地址寄存器、數(shù)據(jù)寄存器等組成。工作在增強(qiáng)型并行口EPP模式且“基地址”為378H時(shí),狀態(tài)寄存器、控制寄存器、地址寄存器、數(shù)據(jù)寄存器的地址分別為379H、37AH、37BH、37CH。EPP信號(hào)與這4個(gè)寄存器密切相關(guān)。
WRITE信號(hào):主機(jī)并行口插孔1,輸出,低電平寫,高電平讀。當(dāng)控制寄存器的D0位為0時(shí),若向數(shù)據(jù)寄存器/地址寄存器發(fā)送一條I/O指令,則產(chǎn)生WRITE信號(hào)。
AD0~AD7信號(hào):并行口插孔2~9,雙向數(shù)據(jù)/地址線,對(duì)應(yīng)于數(shù)據(jù)寄存器/地址寄存器的D0~D7位,用于傳輸數(shù)據(jù)/地址。
INTR信號(hào):并行口插孔10,輸入,外部設(shè)備中斷請(qǐng)求信號(hào),上升沿有效。當(dāng)控制寄存器的D4位為1時(shí),才允許并行口向主機(jī)傳送來自外設(shè)的中斷請(qǐng)求信號(hào)IRQ7。狀態(tài)寄存器D6位取值與INTR信號(hào)相同。
WAIT信號(hào):并行口插孔11,輸入,握手信號(hào),低可以開始一個(gè)周期,高可以結(jié)束一個(gè)周期(EPP1.9標(biāo)準(zhǔn)時(shí))。狀態(tài)寄存器的D7位取值與WAIT信號(hào)相反。
USER1、USER2、USER3信號(hào):分別為并行口插孔12、13、15,輸入,用戶定義。狀態(tài)寄存器的D3、D4、D5位取值分別與USER3、USER2、USER1取值相同。
DATASTB信號(hào):并行口插孔14,輸出,低有效,表示正在進(jìn)行數(shù)據(jù)讀/寫操作。當(dāng)控制寄存器的D1位為0時(shí),若向數(shù)據(jù)寄存器發(fā)送一條I/O指令,則產(chǎn)生DATASTB信號(hào)。
RESET信號(hào):并行口插孔16,輸出,低有效,為外部設(shè)備復(fù)位信號(hào)。當(dāng)控制寄存器的D2位為1時(shí),產(chǎn)生RESET信號(hào)。
ADDRSTB信號(hào):并行口插孔17,輸出,低有效,表示正在進(jìn)行地址讀/寫操作。當(dāng)控制寄存器的D3位為0時(shí),若向地址寄存器發(fā)送一條I/O指令,則產(chǎn)生ADDRSTB信號(hào)。
GND信號(hào):并行口插孔18,地線,所有信號(hào)公共端。
在EPP模式下,對(duì)EPP控制寄存器的各位寫入規(guī)定的值后,再用一個(gè)I/O指令向EPP的數(shù)據(jù)寄存器/地址寄存器傳輸一個(gè)字節(jié)的數(shù)據(jù)/地址,EPP電路則會(huì)自動(dòng)處理握手信號(hào),并自動(dòng)產(chǎn)生時(shí)序信號(hào)[1],即信號(hào)的產(chǎn)生是靠硬件而不是軟件,這就是EPP能高速傳輸數(shù)據(jù)的原因。?
微型計(jì)算機(jī)的新型并行口電路主要由狀態(tài)寄存器、控制寄存器、地址寄存器、數(shù)據(jù)寄存器等組成。工作在增強(qiáng)型并行口EPP模式且“基地址”為378H時(shí),狀態(tài)寄存器、控制寄存器、地址寄存器、數(shù)據(jù)寄存器的地址分別為379H、37AH、37BH、37CH。EPP信號(hào)與這4個(gè)寄存器密切相關(guān)。
WRITE信號(hào):主機(jī)并行口插孔1,輸出,低電平寫,高電平讀。當(dāng)控制寄存器的D0位為0時(shí),若向數(shù)據(jù)寄存器/地址寄存器發(fā)送一條I/O指令,則產(chǎn)生WRITE信號(hào)。
AD0~AD7信號(hào):并行口插孔2~9,雙向數(shù)據(jù)/地址線,對(duì)應(yīng)于數(shù)據(jù)寄存器/地址寄存器的D0~D7位,用于傳輸數(shù)據(jù)/地址。
INTR信號(hào):并行口插孔10,輸入,外部設(shè)備中斷請(qǐng)求信號(hào),上升沿有效。當(dāng)控制寄存器的D4位為1時(shí),才允許并行口向主機(jī)傳送來自外設(shè)的中斷請(qǐng)求信號(hào)IRQ7。狀態(tài)寄存器D6位取值與INTR信號(hào)相同。
WAIT信號(hào):并行口插孔11,輸入,握手信號(hào),低可以開始一個(gè)周期,高可以結(jié)束一個(gè)周期(EPP1.9標(biāo)準(zhǔn)時(shí))。狀態(tài)寄存器的D7位取值與WAIT信號(hào)相反。
USER1、USER2、USER3信號(hào):分別為并行口插孔12、13、15,輸入,用戶定義。狀態(tài)寄存器的D3、D4、D5位取值分別與USER3、USER2、USER1取值相同。
DATASTB信號(hào):并行口插孔14,輸出,低有效,表示正在進(jìn)行數(shù)據(jù)讀/寫操作。當(dāng)控制寄存器的D1位為0時(shí),若向數(shù)據(jù)寄存器發(fā)送一條I/O指令,則產(chǎn)生DATASTB信號(hào)。
RESET信號(hào):并行口插孔16,輸出,低有效,為外部設(shè)備復(fù)位信號(hào)。當(dāng)控制寄存器的D2位為1時(shí),產(chǎn)生RESET信號(hào)。
ADDRSTB信號(hào):并行口插孔17,輸出,低有效,表示正在進(jìn)行地址讀/寫操作。當(dāng)控制寄存器的D3位為0時(shí),若向地址寄存器發(fā)送一條I/O指令,則產(chǎn)生ADDRSTB信號(hào)。
GND信號(hào):并行口插孔18,地線,所有信號(hào)公共端。
在EPP模式下,對(duì)EPP控制寄存器的各位寫入規(guī)定的值后,再用一個(gè)I/O指令向EPP的數(shù)據(jù)寄存器/地址寄存器傳輸一個(gè)字節(jié)的數(shù)據(jù)/地址,EPP電路則會(huì)自動(dòng)處理握手信號(hào),并自動(dòng)產(chǎn)生時(shí)序信號(hào)[1],即信號(hào)的產(chǎn)生是靠硬件而不是軟件,這就是EPP能高速傳輸數(shù)據(jù)的原因。?
EPP與AT89、MCS-51及兼容系列單片機(jī)的信號(hào)連接如圖1所示。由于EPP信號(hào)、單片機(jī)引腳信號(hào)都與TTL兼容,所以二者的信號(hào)線可以直接相連。
為實(shí)現(xiàn)PC與單片機(jī)間的雙向字節(jié)數(shù)據(jù)傳送,把EPP的AD0~AD7與單片機(jī)的P1.0~P1.7(P1口)對(duì)應(yīng)連接。
單片機(jī)向PC發(fā)送數(shù)據(jù)或從PC接收數(shù)據(jù),需經(jīng)EPP向PC發(fā)送中斷請(qǐng)求信號(hào),同時(shí)還要告訴PC是發(fā)送數(shù)據(jù)還是接收數(shù)據(jù),為此需把INTR與P3.2相連。當(dāng)P3.2由0變?yōu)?時(shí),向PC發(fā)送中斷請(qǐng)求信號(hào);當(dāng)P3.2為0時(shí),讓PC發(fā)送數(shù)據(jù);當(dāng)P3.2為1時(shí),讓PC接收數(shù)據(jù)。
為實(shí)現(xiàn)PC與單片機(jī)間的雙向字節(jié)數(shù)據(jù)傳送,把EPP的AD0~AD7與單片機(jī)的P1.0~P1.7(P1口)對(duì)應(yīng)連接。
單片機(jī)向PC發(fā)送數(shù)據(jù)或從PC接收數(shù)據(jù),需經(jīng)EPP向PC發(fā)送中斷請(qǐng)求信號(hào),同時(shí)還要告訴PC是發(fā)送數(shù)據(jù)還是接收數(shù)據(jù),為此需把INTR與P3.2相連。當(dāng)P3.2由0變?yōu)?時(shí),向PC發(fā)送中斷請(qǐng)求信號(hào);當(dāng)P3.2為0時(shí),讓PC發(fā)送數(shù)據(jù);當(dāng)P3.2為1時(shí),讓PC接收數(shù)據(jù)。
?
在雙向通訊過程中,PC還向單片機(jī)提供握手信號(hào),為此把DATASTB與P3.3相連。當(dāng)DATSTB(PC讀/寫EPP數(shù)據(jù)寄存器時(shí)自動(dòng)產(chǎn)生)為0時(shí),讓單片機(jī)讀/寫P1口。
3.1PC收/發(fā)數(shù)據(jù)
主要設(shè)計(jì)思想:主程序中,把控制字19H寫入EPP的控制寄存器,即允許產(chǎn)生DATASTB信號(hào)及允許并行口中斷。當(dāng)PC接到單片機(jī)發(fā)來的中斷請(qǐng)求信號(hào)IRQ7并響應(yīng)中斷后,中斷服務(wù)程序先讀取EPP狀態(tài)寄存器的D6位(與INTR值相同)值。當(dāng)該位值為0時(shí),PC執(zhí)行發(fā)送數(shù)據(jù)子程序;當(dāng)該位值為1時(shí),PC執(zhí)行接收數(shù)據(jù)子程序。在收/發(fā)數(shù)據(jù)子程序中,通過查詢的方法可收/發(fā)多個(gè)字節(jié)數(shù)據(jù);當(dāng)WAIT(與EPP狀態(tài)寄存器的D7位取值相反)為0時(shí),PC讀/寫EPP的數(shù)據(jù)寄存器,同時(shí)EEP自動(dòng)產(chǎn)生DATASTB信號(hào)(由1變0),讓單片機(jī)寫/讀P1口。程序清單如下。
?
3.2單片機(jī)收/發(fā)數(shù)據(jù)
主要設(shè)計(jì)思想:?jiǎn)纹瑱C(jī)經(jīng)P3.2(由0變1)向PC發(fā)送通訊中斷請(qǐng)求信號(hào)并發(fā)送收/發(fā)數(shù)據(jù)標(biāo)志;*在收/發(fā)數(shù)據(jù)子程序中通過查詢的方法可收/發(fā)多個(gè)字節(jié)數(shù)據(jù)。當(dāng)查詢到EPP的DATASTB為0時(shí),寫/讀P1口,并經(jīng)P3.4向PC發(fā)送握手信號(hào)(P3.4為0),讓PC讀/寫EPP的數(shù)據(jù)寄存器。程序清單如下。
主要設(shè)計(jì)思想:主程序中,把控制字19H寫入EPP的控制寄存器,即允許產(chǎn)生DATASTB信號(hào)及允許并行口中斷。當(dāng)PC接到單片機(jī)發(fā)來的中斷請(qǐng)求信號(hào)IRQ7并響應(yīng)中斷后,中斷服務(wù)程序先讀取EPP狀態(tài)寄存器的D6位(與INTR值相同)值。當(dāng)該位值為0時(shí),PC執(zhí)行發(fā)送數(shù)據(jù)子程序;當(dāng)該位值為1時(shí),PC執(zhí)行接收數(shù)據(jù)子程序。在收/發(fā)數(shù)據(jù)子程序中,通過查詢的方法可收/發(fā)多個(gè)字節(jié)數(shù)據(jù);當(dāng)WAIT(與EPP狀態(tài)寄存器的D7位取值相反)為0時(shí),PC讀/寫EPP的數(shù)據(jù)寄存器,同時(shí)EEP自動(dòng)產(chǎn)生DATASTB信號(hào)(由1變0),讓單片機(jī)寫/讀P1口。程序清單如下。
?
3.2單片機(jī)收/發(fā)數(shù)據(jù)
主要設(shè)計(jì)思想:?jiǎn)纹瑱C(jī)經(jīng)P3.2(由0變1)向PC發(fā)送通訊中斷請(qǐng)求信號(hào)并發(fā)送收/發(fā)數(shù)據(jù)標(biāo)志;*在收/發(fā)數(shù)據(jù)子程序中通過查詢的方法可收/發(fā)多個(gè)字節(jié)數(shù)據(jù)。當(dāng)查詢到EPP的DATASTB為0時(shí),寫/讀P1口,并經(jīng)P3.4向PC發(fā)送握手信號(hào)(P3.4為0),讓PC讀/寫EPP的數(shù)據(jù)寄存器。程序清單如下。
評(píng)論