出租車計(jì)價(jià)器課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  一、引言</b></p><p>  汽車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無(wú)論是對(duì)廣大出租車司機(jī)朋友還是乘客來(lái)說(shuō)都是很必要的。因此,汽車計(jì)價(jià)器的研究也是十分有一個(gè)應(yīng)用價(jià)值的。</p><p>  我國(guó)在70年代開(kāi)始出現(xiàn)出租車,但那時(shí)的計(jì)費(fèi)系

2、統(tǒng)大都是國(guó)外進(jìn)口不但不夠準(zhǔn)確,價(jià)格還十分昂貴。隨著改革開(kāi)放日益深入,出租車行業(yè)的發(fā)展勢(shì)頭已十分突出,國(guó)內(nèi)各機(jī)械廠家紛紛推出國(guó)產(chǎn)計(jì)價(jià)器。出租車計(jì)價(jià)器的功能從剛開(kāi)始的只顯示路程(需要司機(jī)自己定價(jià),計(jì)算后四舍五入),到能夠自主計(jì)費(fèi),以及現(xiàn)在的能夠打一發(fā)票和語(yǔ)音提示、按時(shí)間自主變動(dòng)單價(jià)等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個(gè)城市的文明程度。</p><p>  隨著出租車行業(yè)的發(fā)展,出租車已經(jīng)

3、是城市交通的重要組成部分,從加強(qiáng)行業(yè)管理以及減少司機(jī)與乘客的糾紛出發(fā),具有良好性能的計(jì)價(jià)器對(duì)出租車司機(jī)和乘客來(lái)說(shuō)都是很必要的。我們?cè)O(shè)計(jì)采用8086為主控器,以A44E霍爾傳感器測(cè)距,實(shí)現(xiàn)對(duì)出租車的多功能的計(jì)價(jià)設(shè)計(jì),輸出采用8段數(shù)碼顯示管。</p><p><b>  二、總體設(shè)計(jì)方案</b></p><p>  利用8253作為定時(shí)/計(jì)數(shù)器,控制電機(jī)轉(zhuǎn)速并測(cè)量電機(jī)的轉(zhuǎn)

4、數(shù);8255作為輸入輸出接口,控制數(shù)碼管顯示啟動(dòng)后經(jīng)過(guò)的里程數(shù)(小數(shù)點(diǎn)后取2位有效值)。</p><p><b>  硬件連接說(shuō)明:</b></p><p>  直流電機(jī)控制器的基礎(chǔ)上,增加了一個(gè)電機(jī)測(cè)速電路構(gòu)成。</p><p>  8255的B口作為數(shù)碼管的筆劃碼驅(qū)動(dòng);C口的低4位作為段碼控制,顯示實(shí)際里程,同時(shí),也用于輸出鍵盤(pán)的列掃描碼;

5、PC6、PC7輸入行掃描碼,用于識(shí)別按鍵,程序中僅使用了PC6行上的四個(gè)按鍵,其定義如下:</p><p>  X1:?jiǎn)?dòng)/停止鍵;X2:加速鍵,與X3、X4鍵組合使用;X3:“+”鍵;X4:“-”鍵。</p><p>  A口僅使用了PA0,輸出PWM脈沖信號(hào),通過(guò)驅(qū)動(dòng)芯片驅(qū)動(dòng)電機(jī),其輸出電壓的高低與PWM脈沖的占空比成正比。</p><p>  電機(jī)的轉(zhuǎn)數(shù),通過(guò)

6、霍爾元件變換為脈沖個(gè)數(shù),送入8253的通道2,計(jì)數(shù)后,將轉(zhuǎn)數(shù)轉(zhuǎn)換為里程數(shù),最小單位為0.01公里,送CPU記錄,結(jié)果由數(shù)碼管顯示出來(lái)。</p><p> ?。ㄒ唬④浻布鞒虉D</p><p><b>  主程序流程</b></p><p><b>  N</b></p><p><b>

7、;  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  NNN</b></p><p><b>  YYY</b></p><p>  

8、IRO中斷處理流程圖 IR7中斷處理程序流程圖</p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y&l

9、t;/b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  顯示子程序流程圖</b></p><p><b>  N</b></p><p><b>  

10、Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p> ?。ǘ?、源程序設(shè)計(jì)與硬件介紹</p><p><b>  中斷程序</b></p><p><b>  里程計(jì)數(shù)中斷程序

11、</b></p><p>  每當(dāng)霍爾傳感器輸出一個(gè)低電平信號(hào)就使中斷一次,當(dāng)里程計(jì)數(shù)器對(duì)里程脈沖計(jì)滿1000次時(shí),進(jìn)入里程計(jì)數(shù)中斷服務(wù)程序中,里程變量加一。主函數(shù)中總金額也相應(yīng)地變化。</p><p><b>  中途等待中斷程序</b></p><p>  在中途等待中斷程序中,每1ms產(chǎn)生一次中斷,將當(dāng)前里程值送入某個(gè)緩存變量

12、,每5分鐘將緩存變量中的值和當(dāng)前里程值比較,當(dāng)汽車停止,霍爾傳感器5分鐘沒(méi)有輸出信號(hào),當(dāng)前里程值和緩存變量?jī)?nèi)的值相同,則進(jìn)入等待計(jì)時(shí),每5分鐘記一次價(jià)格。</p><p><b>  顯示程序</b></p><p>  顯示程序利用定時(shí)器每1ms產(chǎn)生一次中斷,相應(yīng)變量置位,點(diǎn)亮一個(gè)數(shù)碼管,顯示一位數(shù)據(jù),利用主函數(shù)內(nèi)的循環(huán),實(shí)現(xiàn)動(dòng)態(tài)掃描顯示,同時(shí)根據(jù)數(shù)碼管余輝和人眼暫

13、留現(xiàn)象,即可實(shí)現(xiàn)顯示。</p><p><b>  鍵盤(pán)程序</b></p><p>  鍵盤(pán)采用查詢的方式,放在主程序中,當(dāng)沒(méi)有按鍵按下的時(shí)候,循環(huán)主程序,一旦右按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。</p><p>  2.1 8086最小系統(tǒng)模塊</p><p>  1、8086CPU構(gòu)成的系統(tǒng)框圖如圖

14、:</p><p>  2.2 芯片8255A</p><p>  1、 8255A的作用</p><p>  本實(shí)驗(yàn)利用8255A將模擬量轉(zhuǎn)換后的數(shù)字量傳送到 CPU。此外,8255采用查詢工作方式控制ADC0809工作。8086通過(guò)8255向七段LED顯示器發(fā)送控制信號(hào)。</p><p>  2、 8255A的功能分析</p>

15、<p>  8255A是可編程并行接口,可以根據(jù)外界條件(I/O設(shè)備需要的信號(hào)線和它能提供的狀態(tài)線)來(lái)使其構(gòu)成多種接口電路。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口,即A口、B口、C口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡(luò)信號(hào)使用。本實(shí)驗(yàn)將控制字設(shè)為80H,初始化8255,使得 B口、C口為輸出。</p><p>  在三種工作方式中,本設(shè)計(jì)只使用

16、了方式0,即方式0是基本的輸入/輸出方式,在這種方式下,三個(gè)端口都可以由程序規(guī)定為輸入/出方式,但是不能既作為輸入又作為輸出,也沒(méi)有提供固定的聯(lián)絡(luò)信號(hào)。C口分為兩個(gè)4位---高4位和低4位,可以分別設(shè)置為輸入或輸出方式。</p><p>  3、8255A的技術(shù)參數(shù) </p><p>  8255A的引腳信號(hào)</p><p><b>  1)與外設(shè)相連的&

17、lt;/b></p><p>  PA7~PA0:A口數(shù)據(jù)信號(hào)線;</p><p>  PB7~PB0:B口數(shù)據(jù)信號(hào)線;</p><p>  PC7~PC0:C口數(shù)據(jù)信號(hào)線;</p><p><b>  2)與CPU相連的</b></p><p>  RESET:復(fù)位信號(hào)。當(dāng)此信號(hào)來(lái)時(shí),所有

18、寄存器都被清除。同時(shí)三個(gè)數(shù)據(jù)端口被自動(dòng)置為輸入端口。</p><p>  D7~D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。</p><p>  CS:片選信號(hào)。在系統(tǒng)中,一般根據(jù)全部接口芯片來(lái)分配若于低位地址(比如A5、A4、A3)組成各種芯片選擇碼,當(dāng)這幾位地址組成某一個(gè)低電平,于8255A被選中。只有當(dāng)有效時(shí),讀信號(hào)寫(xiě)才對(duì)8255進(jìn)行讀寫(xiě)。 </p><p>

19、;  RD:讀信號(hào)。當(dāng)此信號(hào)有效時(shí),CPU可從8255A中讀取數(shù)據(jù)。</p><p>  WR:寫(xiě)信號(hào)。當(dāng)此信號(hào)有效時(shí),CPU可向8255A中寫(xiě)入數(shù)據(jù)。</p><p>  A1、A0:端口選擇信號(hào)。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口和1個(gè)控制端口,共4個(gè)端口。規(guī)定:</p><p>  A1、A0為00時(shí),選中A端口;</p><p>  A1、

20、A0為01時(shí),選中B端口;</p><p>  A1、A0為10時(shí),選中C端口;</p><p>  A1、A0為11時(shí),選中控制口。</p><p>  4、 8255A的方式控制字</p><p>  8255A的控制字有兩種:一種是方式選擇控制字,另一種是C口按位置位/復(fù)位控制字</p><p><b>

21、; ?、?方式選擇控制字</b></p><p>  圖1 8255A的方式控制字表</p><p>  ② C口按位置位/復(fù)位控制字</p><p>  圖2 8255A的置位/控制字表</p><p>  2.3 芯片8253</p><p>  1、 8253的功能分析</p>&l

22、t;p>  Intel8253是NMOS工藝制成的可編程計(jì)數(shù)器/定時(shí)器,有幾種芯片型號(hào),外形引腳及功能都是兼容的,只是工作的最高計(jì)數(shù)速率有所差異,例如8253(2.6MHz),8253-5(5MHz) </p><p>  8253內(nèi)部有三個(gè)計(jì)數(shù)器,分別成為計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2,他們的機(jī)構(gòu)完全相同。每個(gè)計(jì)數(shù)器的輸入和輸出都決定于設(shè)置在控制寄存器中的控制字,互相之間工作完全獨(dú)立。每個(gè)計(jì)數(shù)器通過(guò)三個(gè)引腳

23、和外部聯(lián)系,一個(gè)為時(shí)鐘輸入端CLK,一個(gè)為門控信號(hào)輸入端GATE,另一個(gè)為輸出端OUT。每個(gè)計(jì)數(shù)器內(nèi)部有一個(gè)8位的控制寄存器,還有一個(gè)16位的計(jì)數(shù)初值寄存器CR、一個(gè)計(jì)數(shù)執(zhí)行部件CE和一個(gè)輸出鎖存器OL。 </p><p>  執(zhí)行部件實(shí)際上是一個(gè)16位的減法計(jì)數(shù)器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通過(guò)程序設(shè)置的。輸出鎖存器的值是通過(guò)程序設(shè)置的。輸出鎖存器OL用來(lái)鎖存計(jì)數(shù)執(zhí)行部件CE的內(nèi)容,從而

24、使CPU可以對(duì)此進(jìn)行讀操作。順便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器來(lái)用1、8253的作用</p><p>  2、8253的引腳信號(hào)</p><p>  2.4可編程控制芯片8259A </p><p><b>  8259A的原理</b></p><p>  一片8959A有8條中斷請(qǐng)求線

25、IR0~IR7,8259A被操作系統(tǒng)初始化后,就可以接收中斷信號(hào)了。8259A從IR請(qǐng)求線上接受中斷信號(hào),每個(gè)請(qǐng)求線有一個(gè)觸發(fā)器來(lái)保 存請(qǐng)求信號(hào),從而形成中斷請(qǐng)求寄存器(IRR)。同時(shí)如果中斷請(qǐng)求信號(hào)線上不是被屏蔽的,8259A向CPU發(fā)出 INT信號(hào),請(qǐng)求中斷。這時(shí)如果CPU是處于允許中斷狀況,CPU就會(huì)發(fā)送INTA信號(hào)給8259A進(jìn)入中斷響應(yīng)周期。如果有多個(gè)請(qǐng)求信號(hào)同時(shí)到達(dá),8259A的優(yōu)先權(quán)電路會(huì)對(duì)各個(gè)請(qǐng)求進(jìn)行優(yōu)先權(quán)選擇,將最高先

26、權(quán)的請(qǐng)求在中斷響應(yīng)周期送到中斷服務(wù)寄存器(ISR)中將它置位,同時(shí)復(fù)位IRR中的相應(yīng)位。接著CPU再次發(fā)送一個(gè)INTA脈沖給8259A,啟動(dòng)另外一個(gè)中斷相應(yīng)周期。8259A在這個(gè)相應(yīng)周期向數(shù)據(jù)總線的D0-D7上輸入一個(gè)中斷向量。CPU根據(jù)該向量的值*4后就可以從中斷入口地址表(IDT )中取出中斷服務(wù)程序的入口地址而轉(zhuǎn)入中斷服務(wù)程序。而8259A如果工作在自動(dòng)結(jié)束中斷(AEOI)模式時(shí)會(huì)自動(dòng)使其ISR中的相應(yīng)位復(fù)位,否則需要發(fā)出EOI命

27、令使ISR復(fù)位。</p><p>  在老式的PC-XT/AT中,一般使用一片8259A進(jìn)行中斷信號(hào)請(qǐng)求。在現(xiàn)代的多數(shù)PC中,一般都會(huì)采用兩片8259A作為級(jí)連。其中一片是Master一片是Slave,由于Master上的一個(gè)中斷請(qǐng)求線需要連接到Slave的INT腳,所以實(shí)際可以使用的外部中斷個(gè)數(shù)是15(8*2 – 1)個(gè)。</p><p><b>  8259A結(jié)構(gòu)</b

28、></p><p>  1、數(shù)據(jù)總線緩沖器--D7~D0</p><p>  數(shù)據(jù)總線緩沖器為三態(tài)、雙向、8位寄存器,數(shù)據(jù)線D7~D0與CPU系統(tǒng)總線連接,構(gòu)成CPU與8259A之間信息傳送的通道。</p><p>  2、讀/寫(xiě)控制邏輯--WR/WD</p><p>  讀/寫(xiě)控制邏輯用來(lái)接收CPU系統(tǒng)總線的讀/寫(xiě)控制信號(hào)和端口地址選

29、擇信號(hào),用于控制8259A內(nèi)部寄存器的讀/寫(xiě)操作。</p><p>  3、級(jí)聯(lián)緩沖/比較器 </p><p>  8259A既可以工作于單片方式,也可以工作于多片級(jí)聯(lián)方式,級(jí)聯(lián)方式硬件連接如圖6.10所示。級(jí)聯(lián)緩沖/比較器提供多片8259A的管理和選擇功能,其中一片為主片,其余為從片。</p><p><b>  4、中斷控制邏輯</b>&l

30、t;/p><p>  中斷控制邏輯按照編程設(shè)定的工作方式管理中斷,負(fù)責(zé)向片內(nèi)各部件發(fā)送控制信號(hào),向CPU發(fā)送中斷請(qǐng)求信號(hào)INT和接收CPU回送的中斷響應(yīng)信號(hào)INTA,控制8259A進(jìn)入中斷管理狀態(tài)。</p><p>  5、中斷請(qǐng)求寄存器(interrupt request register,IRR)</p><p>  IRR是一個(gè)8位寄存器,用于記錄外部中斷請(qǐng)求。其

31、中D7~D0分別與外部中斷請(qǐng)求信號(hào)IR7~I(xiàn)R0相對(duì)應(yīng),當(dāng)IRi(i=0~7)有請(qǐng)求(電平或邊沿觸發(fā))時(shí),IRR中的相應(yīng)位Di置1,在中斷響應(yīng)信號(hào)INTA有效時(shí),DI被清除。</p><p>  6、中斷服務(wù)寄存器(interrupt service register,ISR)</p><p>  ISR是一個(gè)8位寄存器,用于記錄CPU當(dāng)前正在服務(wù)的中斷標(biāo)志。當(dāng)外部中斷IRi(i=0~7)

32、的請(qǐng)求得到CPU響應(yīng)進(jìn)入服務(wù)時(shí),由CPU發(fā)來(lái)的第一個(gè)中斷響應(yīng)脈沖INTA將ISR中的相應(yīng)位Di(i=0~7)置1,而ISR的復(fù)位則由8259A中斷結(jié)束方式?jīng)Q定。若定義為自動(dòng)結(jié)束方式,則由CPU發(fā)來(lái)的第二個(gè)中斷響應(yīng)脈沖INTA的后沿將Di復(fù)位為0;若定義為非自動(dòng)結(jié)束方式,則由CPU發(fā)送來(lái)的中斷結(jié)束命令將其復(fù)位。</p><p>  7、中斷屏蔽寄存器(interrupt mask register,IMR)<

33、/p><p>  IMR是一個(gè)8位寄存器,用來(lái)存放IR7~I(xiàn)R0的中斷屏蔽標(biāo)志。它的8個(gè)屏蔽位D7~D0與外部中斷請(qǐng)求IR7~I(xiàn)R0相對(duì)應(yīng),用于控制IRi的請(qǐng)求是否允許進(jìn)入。當(dāng)IMR中的Di位為1時(shí),對(duì)應(yīng)的IRi請(qǐng)求被禁止;當(dāng)IMR中的Di位為0時(shí),則允許對(duì)應(yīng)的中斷請(qǐng)求進(jìn)入。它可以由軟件設(shè)置或清除,通過(guò)編程設(shè)定屏蔽字,可以改變?cè)瓉?lái)的優(yōu)先級(jí)別。</p><p><b>  程序代碼見(jiàn)附

34、錄</b></p><p><b>  三、總結(jié)與體會(huì) </b></p><p>  作為一名自動(dòng)化的大三學(xué)生,我覺(jué)得做微機(jī)程設(shè)計(jì)是十分有意義的,而且是十分必要的。在已度過(guò)的大學(xué)時(shí)間里,我們大多數(shù)接觸的是專業(yè)課。我們?cè)谡n堂上掌握的僅僅是專業(yè)課的理論知識(shí),如何去鍛煉我們的實(shí)踐能力?如何把我們所學(xué)的專業(yè)基礎(chǔ)課理論知識(shí)運(yùn)用到實(shí)踐中去呢?我想做類似的課程設(shè)計(jì)就為我

35、們提供了良好的實(shí)踐平臺(tái)。</p><p>  在做本次課程設(shè)計(jì)的過(guò)程中,我感觸最深的當(dāng)屬查閱大量的設(shè)計(jì)資料了。為了讓自己的設(shè)計(jì)更加完善,查閱這方面的設(shè)計(jì)資料是十分必要的,同時(shí)也是必不可少的。其次,在這次課程設(shè)計(jì)中,我們運(yùn)用到了以前所學(xué)的專業(yè)課知識(shí),如:匯編語(yǔ)言、模擬和數(shù)字電路知識(shí)等。雖然過(guò)去從未獨(dú)立應(yīng)用過(guò)它們,但在學(xué)習(xí)的過(guò)程中帶著問(wèn)題去學(xué)我發(fā)現(xiàn)效率很高,這是我做這次課程設(shè)計(jì)的又一收獲。另外,這次課程設(shè)計(jì)讓我感到了

36、團(tuán)隊(duì)合作的重要性。在團(tuán)隊(duì)中,我們互幫互助,對(duì)整個(gè)課程設(shè)計(jì)來(lái)說(shuō),這是至關(guān)重要的,缺少每一個(gè)人都會(huì)對(duì)我們的設(shè)計(jì)產(chǎn)生影響。還有要感謝指導(dǎo)老師在我們遇到困難時(shí),給予我們的建議與鼓勵(lì)。兩周的課程設(shè)計(jì)結(jié)束了,但是從中學(xué)到的知識(shí)會(huì)讓我受益終身。發(fā)現(xiàn)、提出、分析、解決問(wèn)題和實(shí)踐能力的提高都會(huì)受益于我在以后的學(xué)習(xí)、工作和生活中。</p><p>  為期兩個(gè)星期的畢業(yè)設(shè)計(jì)即將接近尾聲,在劉老師和王老師的親切指導(dǎo)和同學(xué)的幫助下,此次

37、設(shè)計(jì)才得以完成,在此向所有給予我此次課程設(shè)計(jì)指導(dǎo)和幫助的老師和同學(xué)表示最誠(chéng)摯的感謝:</p><p><b>  附錄</b></p><p>  ;計(jì)價(jià)器(利用調(diào)速控制器控制電機(jī)的旋轉(zhuǎn),讀出總里程數(shù))</p><p>  DATASEGMENT</p><p>  TEQU 100;定時(shí)周期時(shí)間(基本周期*T

38、)</p><p>  T_HIDB 50;高電平持續(xù)時(shí)間(基本周期*T_HI)</p><p>  NOW_TDB T</p><p>  NOW_HIDB 50</p><p>  T8253EQU 609;定時(shí)器8253的初值=1.19M*0.512MS(基本周期)=609</p><p>  R

39、UNDB 0;啟停標(biāo)志</p><p>  SPEEDDW 0; 里程數(shù)</p><p>  STEPDW 50 ;10米的8253脈沖個(gè)數(shù)(即每來(lái)50個(gè)脈沖,則前進(jìn)10米)</p><p>  TABDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0~9的顯示碼</p><p>

40、  DISPDB 4 DUP (0),52H;存儲(chǔ)轉(zhuǎn)速</p><p><b>  DATAENDS</b></p><p>  STACK SEGMENT STACK</p><p>  DW 64 DUP(?);定義堆棧段</p><p>  STACK ENDS</p><p>  

41、CODE SEGMENT;代碼段定義</p><p>  ASSUME CS:CODE,DS:DATA;段指定</p><p>  START:MOVAX,DATA</p><p><b>  MOVDS,AX</b></p><p>  PUSH DS;當(dāng)前用戶DS段入棧保存</p>

42、;<p>  MOV AX,0000H</p><p>  MOV DS,AX;修改DS=0000H,指向中斷矢量表所在段</p><p>  MOV AX,OFFSET IRQ0;取出中斷處理子程序的入口偏移地址(以0為基準(zhǔn))</p><p>  ADD AX,2000H;修正,實(shí)際地址=裝入地址的偏移量+相對(duì)于0起始的偏移量<

43、;/p><p>  MOV SI,0020H;IR0中斷矢量號(hào)為08H,處于矢量表的20H~23H</p><p>  MOV [SI],AX;將偏移地址裝入矢量表</p><p>  MOV AX,0000H</p><p>  MOV SI,0022H</p><p>  MOV [SI],AX

44、;將段地址(0000H)裝入矢量表</p><p>  MOVAX,OFFSET IRQ7</p><p>  ADDAX,2000H</p><p>  MOVSI,0003CH</p><p>  MOV[SI],AX;將偏移地址裝入IRQ7的中斷矢量</p><p>  MOV AX,0000

45、H</p><p>  MOV SI,003EH</p><p>  MOV [SI],AX;將段地址(0000H)裝入矢量表</p><p>  POP DS;恢復(fù)用戶數(shù)據(jù)段DS</p><p>  MOVAL,13H</p><p>  OUT20H,AL;寫(xiě)入ICW1</p&g

46、t;<p>  MOVAL,08H</p><p>  OUT21H,AL;寫(xiě)入ICW2</p><p>  MOVAL,01H</p><p>  OUT21H,AL;寫(xiě)入ICW4</p><p>  MOV AL,7EH;D7,D0位復(fù)位為0</p><p>  OUT

47、21H,AL;寫(xiě)入OCW1(IMR);開(kāi)放8259A的IR7和IR0中斷</p><p>  MOV AL,34H;設(shè)定8253通道0的工作方式,00110100B</p><p>  OUT 43H,AL;CH0采用先寫(xiě)低8位,后寫(xiě)高8位,方式2,二進(jìn)制計(jì)數(shù)</p><p>  MOV AX,T8253;計(jì)數(shù)初值為基本周期</p&

48、gt;<p>  OUT 40H,AL;寫(xiě)入CH0</p><p><b>  MOVAL,AH</b></p><p>  OUT40H,AL</p><p>  MOV AL,0B6H;設(shè)定8253通道2的工作方式,10110110B</p><p>  OUT 43H,AL

49、;CH2采用先寫(xiě)低8位,后寫(xiě)高8位=0,方式3,二進(jìn)制計(jì)數(shù)</p><p>  MOVAX,STEP</p><p>  OUT 42H,AL</p><p><b>  MOVAL,AH</b></p><p>  OUT 42H,AL;寫(xiě)入CH2</p><p>  MOV

50、AL,88H;寫(xiě)入8255A的方式控制字,設(shè)定工作方式為10001000B</p><p>  OUT 63H,AL;即A口方式0輸出,C口高4位輸入,B口方式0輸出,C口低4位輸出</p><p>  MOVAL,00H</p><p>  OUT60H,AL;關(guān)電機(jī)</p><p>  STI;開(kāi)中斷&

51、lt;/p><p>  A1:MOVSI,OFFSET DISP</p><p><b>  MOVBL,2</b></p><p>  MOVAX,SPEED</p><p>  A11:ANDAL,0FH</p><p>  MOV[SI+3],AL</p><p

52、>  ANDAH,0FH</p><p>  MOV[SI+1],AH</p><p><b>  DECSI</b></p><p>  MOVAX,SPEED</p><p><b>  MOVCL,4</b></p><p><b>  RO

53、RAX,CL</b></p><p><b>  DECBL</b></p><p>  JNZA11;將速度的壓縮BCD碼轉(zhuǎn)換為非壓縮碼,存入緩沖區(qū)</p><p>  MOVSI,OFFSET DISP</p><p>  CALLDISPLAY</p><p>

54、;  MOVAL,00H;打開(kāi)開(kāi)關(guān)掃描</p><p>  OUT62H,AL</p><p>  INAL,62H;讀C口</p><p>  ANDAL,40H</p><p>  JZA2;有鍵按下,轉(zhuǎn)讀鍵盤(pán)</p><p><b>  JMPEXIT<

55、/b></p><p>  A2:MOVAH,00H;記錄按鍵掃描碼</p><p>  MOVCX,04;循環(huán)掃描4次</p><p>  MOVDL,77H;打開(kāi)第一行的開(kāi)關(guān)掃描</p><p>  A21:INCAH;掃描碼+1</p><p><b&g

56、t;  ROLDL,1</b></p><p><b>  MOVAL,DL</b></p><p>  OUT62H,AL;打開(kāi)一行的開(kāi)關(guān)掃描</p><p>  INAL,62H;讀C口</p><p>  TESTAL,40H;取PC6(Y1)</p>

57、<p>  JNZA22;無(wú)鍵按下,轉(zhuǎn)</p><p>  CALLDALEY</p><p>  CALLDALEY;去抖動(dòng)</p><p>  INAL,62H;讀C口</p><p>  ANDAL,40H;取PC6(Y1)</p><p>  JNZ

58、A22;是抖動(dòng),轉(zhuǎn)</p><p><b>  CMPAH,2</b></p><p>  JNZRELEA;不是加速鍵,轉(zhuǎn)(單獨(dú)按下加速鍵無(wú)效)</p><p>  ORAH,80H;是加速鍵,則D7位=1</p><p><b>  JMPA22</b>&

59、lt;/p><p>  RELEA:CALLDISPLAY</p><p><b>  MOVAL,DL</b></p><p>  OUT62H,AL</p><p>  INAL,62H</p><p>  ANDAL,40H;等待鍵釋放</p><p&g

60、t;<b>  JZRELEA</b></p><p>  JMPA23;AH存掃描碼,=1(X1鍵按下)啟停,=2加速,=3'+',=4'-'鍵</p><p>  A22:LOOPA21</p><p><b>  JMPEXIT</b></p><

61、p>  A23:MOVAL,AH</p><p>  ANDAL,0FH</p><p>  CMPAL,01H</p><p>  JNZA3;不是按下啟停鍵,則轉(zhuǎn)</p><p>  MOVAL,RUN</p><p>  TESTAL,01H</p><p&

62、gt;  JNZA24;原為啟動(dòng),則轉(zhuǎn)停止</p><p>  MOVRUN,01;置位啟動(dòng)標(biāo)志</p><p>  MOVNOW_T,T;重裝定時(shí)周期</p><p>  MOVAL,T_HI</p><p>  MOVNOW_HI,AL;重裝高電平定時(shí)時(shí)間</p><p>

63、  MOVSPEED,00;重新計(jì)價(jià)(里程)</p><p><b>  JMPEXIT</b></p><p>  A24:MOVRUN,00;復(fù)位啟動(dòng)標(biāo)志</p><p>  MOVAL,00H</p><p>  OUT60H,AL;關(guān)電機(jī)</p><p>

64、;<b>  JMPEXIT</b></p><p>  A3:MOVAL,AH</p><p>  ANDAL,0FH</p><p><b>  CMPAL,03</b></p><p>  JNZA6;不是'+'鍵,轉(zhuǎn)</p><p

65、><b>  MOVBL,1</b></p><p>  TESTAH,80H</p><p>  JZA4;沒(méi)按加速鍵,轉(zhuǎn)</p><p>  MOVBL,10;按加速鍵,加10,正常加1</p><p>  A4:ADDBL,T_HI</p><p>  

66、CMPBL,100</p><p><b>  JBEA5</b></p><p>  MOVBL,100</p><p>  A5:MOVT_HI,BL;增加的百分比不能>100%</p><p><b>  JMPEXIT</b></p><p&

67、gt;  A6:MOVAL,AH</p><p>  ANDAL,0FH</p><p><b>  CMPAL,04</b></p><p>  JNZEXIT;不是'-'鍵,轉(zhuǎn)</p><p><b>  MOVBH,01</b></p>&l

68、t;p>  TESTAH,80H</p><p>  JZA7;沒(méi)按加速鍵,轉(zhuǎn)</p><p>  MOVBH,10;按加速鍵,-10,正常-1</p><p>  A7:MOVBL,T_HI</p><p>  SUBBL,BH</p><p><b>  JNC

69、A8</b></p><p><b>  MOVBL,00</b></p><p>  A8:MOVT_HI,BL;最小的百分比為0%</p><p>  EXIT:JMP A1</p><p>  ;8259A的IR0中斷處理子程序(8253的CH0定時(shí)基本周期0.512MS)</p&

70、gt;<p>  IRQ0:PUSHAX</p><p><b>  STI</b></p><p>  MOVAL,RUN</p><p><b>  ANDAL,AL</b></p><p>  JZIREXIT;不啟動(dòng),則轉(zhuǎn)測(cè)速度</p><

71、p>  MOVAL,NOW_T</p><p><b>  SUBAL,1</b></p><p>  JNZIRSP1</p><p>  MOVNOW_T,T;重裝定時(shí)周期</p><p>  MOVAL,T_HI</p><p>  MOVNOW_HI,AL;重

72、裝高電平定時(shí)時(shí)間</p><p>  JMPIREXIT</p><p>  IRSP1:MOVNOW_T,AL;保存-1后的定時(shí)周期</p><p>  MOVAL,NOW_HI</p><p>  TESTAL,AL</p><p>  JNZIRSP2</p><p>

73、  MOVAH,00H;高電平持續(xù)時(shí)間到,則PA0輸出為0</p><p>  JMPIRSP3</p><p>  IRSP2:SUBAL,1;高電平持續(xù)時(shí)間不到</p><p>  MOVNOW_HI,AL;保存-1后的值</p><p>  MOVAH,01H;PA0輸出為1,高電平</p&g

74、t;<p>  IRSP3:MOVAL,AH</p><p>  OUT60H,AL</p><p>  IREXIT:MOV AL,20H;常規(guī)EOI中斷結(jié)束指令</p><p>  OUT 20H,AL;寫(xiě)入8259A的OCW2</p><p><b>  CLI</b><

75、/p><p><b>  POPAX</b></p><p>  IRET;中斷返回</p><p>  ;8259A的IR7中斷處理子程序(8253的CH2計(jì)數(shù)中斷,10米到)</p><p>  IRQ7:PUSHAX</p><p><b>  STI</b&g

76、t;</p><p>  MOVAX,SPEED</p><p><b>  ADDAL,01</b></p><p><b>  DAA</b></p><p>  XCHGAL,AH</p><p><b>  ADCAL,00</b><

77、;/p><p><b>  DAA</b></p><p>  XCHGAL,AH</p><p>  MOVSPEED,AX</p><p>  MOV AL,20H;常規(guī)EOI中斷結(jié)束指令</p><p>  OUT 20H,AL;寫(xiě)入8259A的OCW2</p>

78、<p><b>  CLI</b></p><p><b>  POPAX</b></p><p>  IRET;中斷返回</p><p><b>  ;顯示子程序</b></p><p>  DISPLAY:PUSHAX</p>&l

79、t;p><b>  PUSHBX</b></p><p><b>  PUSHCX</b></p><p><b>  PUSHDX</b></p><p><b>  PUSHSI</b></p><p><b>  MOVCX

80、,4</b></p><p>  MOVDL,7FH</p><p>  MOVSI,OFFSET DISP</p><p>  MOVBX,OFFSET TAB</p><p>  DISP1:ROLDL,1</p><p>  MOVAL,[SI]</p><p> 

81、 XLAT;查表轉(zhuǎn)換為顯示碼</p><p>  TESTDL,02H</p><p>  JNZDISP2;是第二位顯示嗎?</p><p>  ORAL,80H;是,加小數(shù)點(diǎn)</p><p>  DISP2:OUT61H,AL</p><p>  MOVAL,DL;允許X

82、1、X2、X3、X4(PC3~PC0)數(shù)碼管依次選通</p><p>  OUT62H,AL</p><p>  CALLDALEY</p><p><b>  INCSI</b></p><p>  LOOPDISP1;四次循環(huán),顯示轉(zhuǎn)速</p><p><b>  X

83、ORAL,AL</b></p><p>  OUT61H,AL;關(guān)顯示</p><p><b>  POPSI</b></p><p><b>  POPDX</b></p><p><b>  POPCX</b></p><

84、;p><b>  POPBX</b></p><p><b>  POPAX</b></p><p><b>  RET</b></p><p><b>  ;延時(shí)子程序</b></p><p>  DALEY:PUSHCX</p&

85、gt;<p>  MOV CX,0560H;置內(nèi)循環(huán)次數(shù)</p><p>  DALEY1:LOOP DALEY1;共循環(huán)0560H次,以完成延時(shí)</p><p><b>  POPCX</b></p><p><b>  RET</b></p><p>  CODE

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論