版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 一、引言</b></p><p> 汽車計價器是乘客與司機雙方的交易準則,它是出租車行業(yè)發(fā)展的重要標志,是出租車中最重要的工具。它關系著交易雙方的利益。具有良好性能的計價器無論是對廣大出租車司機朋友還是乘客來說都是很必要的。因此,汽車計價器的研究也是十分有一個應用價值的。</p><p> 我國在70年代開始出現(xiàn)出租車,但那時的計費系
2、統(tǒng)大都是國外進口不但不夠準確,價格還十分昂貴。隨著改革開放日益深入,出租車行業(yè)的發(fā)展勢頭已十分突出,國內各機械廠家紛紛推出國產(chǎn)計價器。出租車計價器的功能從剛開始的只顯示路程(需要司機自己定價,計算后四舍五入),到能夠自主計費,以及現(xiàn)在的能夠打一發(fā)票和語音提示、按時間自主變動單價等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個城市的文明程度。</p><p> 隨著出租車行業(yè)的發(fā)展,出租車已經(jīng)
3、是城市交通的重要組成部分,從加強行業(yè)管理以及減少司機與乘客的糾紛出發(fā),具有良好性能的計價器對出租車司機和乘客來說都是很必要的。我們設計采用8086為主控器,以A44E霍爾傳感器測距,實現(xiàn)對出租車的多功能的計價設計,輸出采用8段數(shù)碼顯示管。</p><p><b> 二、總體設計方案</b></p><p> 利用8253作為定時/計數(shù)器,控制電機轉速并測量電機的轉
4、數(shù);8255作為輸入輸出接口,控制數(shù)碼管顯示啟動后經(jīng)過的里程數(shù)(小數(shù)點后取2位有效值)。</p><p><b> 硬件連接說明:</b></p><p> 直流電機控制器的基礎上,增加了一個電機測速電路構成。</p><p> 8255的B口作為數(shù)碼管的筆劃碼驅動;C口的低4位作為段碼控制,顯示實際里程,同時,也用于輸出鍵盤的列掃描碼;
5、PC6、PC7輸入行掃描碼,用于識別按鍵,程序中僅使用了PC6行上的四個按鍵,其定義如下:</p><p> X1:啟動/停止鍵;X2:加速鍵,與X3、X4鍵組合使用;X3:“+”鍵;X4:“-”鍵。</p><p> A口僅使用了PA0,輸出PWM脈沖信號,通過驅動芯片驅動電機,其輸出電壓的高低與PWM脈沖的占空比成正比。</p><p> 電機的轉數(shù),通過
6、霍爾元件變換為脈沖個數(shù),送入8253的通道2,計數(shù)后,將轉數(shù)轉換為里程數(shù),最小單位為0.01公里,送CPU記錄,結果由數(shù)碼管顯示出來。</p><p> (一)、軟硬件流程圖</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> ?。ǘ?、源程序設計與硬件介紹</p><p><b> 中斷程序</b></p><p><b> 里程計數(shù)中斷程序
11、</b></p><p> 每當霍爾傳感器輸出一個低電平信號就使中斷一次,當里程計數(shù)器對里程脈沖計滿1000次時,進入里程計數(shù)中斷服務程序中,里程變量加一。主函數(shù)中總金額也相應地變化。</p><p><b> 中途等待中斷程序</b></p><p> 在中途等待中斷程序中,每1ms產(chǎn)生一次中斷,將當前里程值送入某個緩存變量
12、,每5分鐘將緩存變量中的值和當前里程值比較,當汽車停止,霍爾傳感器5分鐘沒有輸出信號,當前里程值和緩存變量內的值相同,則進入等待計時,每5分鐘記一次價格。</p><p><b> 顯示程序</b></p><p> 顯示程序利用定時器每1ms產(chǎn)生一次中斷,相應變量置位,點亮一個數(shù)碼管,顯示一位數(shù)據(jù),利用主函數(shù)內的循環(huán),實現(xiàn)動態(tài)掃描顯示,同時根據(jù)數(shù)碼管余輝和人眼暫
13、留現(xiàn)象,即可實現(xiàn)顯示。</p><p><b> 鍵盤程序</b></p><p> 鍵盤采用查詢的方式,放在主程序中,當沒有按鍵按下的時候,循環(huán)主程序,一旦右按鍵按下,便轉向相應的子程序處理,處理結束再返回。</p><p> 2.1 8086最小系統(tǒng)模塊</p><p> 1、8086CPU構成的系統(tǒng)框圖如圖
14、:</p><p> 2.2 芯片8255A</p><p> 1、 8255A的作用</p><p> 本實驗利用8255A將模擬量轉換后的數(shù)字量傳送到 CPU。此外,8255采用查詢工作方式控制ADC0809工作。8086通過8255向七段LED顯示器發(fā)送控制信號。</p><p> 2、 8255A的功能分析</p>
15、<p> 8255A是可編程并行接口,可以根據(jù)外界條件(I/O設備需要的信號線和它能提供的狀態(tài)線)來使其構成多種接口電路。8255A內部有3個數(shù)據(jù)端口,即A口、B口、C口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡信號使用。本實驗將控制字設為80H,初始化8255,使得 B口、C口為輸出。</p><p> 在三種工作方式中,本設計只使用
16、了方式0,即方式0是基本的輸入/輸出方式,在這種方式下,三個端口都可以由程序規(guī)定為輸入/出方式,但是不能既作為輸入又作為輸出,也沒有提供固定的聯(lián)絡信號。C口分為兩個4位---高4位和低4位,可以分別設置為輸入或輸出方式。</p><p> 3、8255A的技術參數(shù) </p><p> 8255A的引腳信號</p><p><b> 1)與外設相連的&
17、lt;/b></p><p> PA7~PA0:A口數(shù)據(jù)信號線;</p><p> PB7~PB0:B口數(shù)據(jù)信號線;</p><p> PC7~PC0:C口數(shù)據(jù)信號線;</p><p><b> 2)與CPU相連的</b></p><p> RESET:復位信號。當此信號來時,所有
18、寄存器都被清除。同時三個數(shù)據(jù)端口被自動置為輸入端口。</p><p> D7~D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。</p><p> CS:片選信號。在系統(tǒng)中,一般根據(jù)全部接口芯片來分配若于低位地址(比如A5、A4、A3)組成各種芯片選擇碼,當這幾位地址組成某一個低電平,于8255A被選中。只有當有效時,讀信號寫才對8255進行讀寫。 </p><p>
19、; RD:讀信號。當此信號有效時,CPU可從8255A中讀取數(shù)據(jù)。</p><p> WR:寫信號。當此信號有效時,CPU可向8255A中寫入數(shù)據(jù)。</p><p> A1、A0:端口選擇信號。8255A內部有3個數(shù)據(jù)端口和1個控制端口,共4個端口。規(guī)定:</p><p> A1、A0為00時,選中A端口;</p><p> A1、
20、A0為01時,選中B端口;</p><p> A1、A0為10時,選中C端口;</p><p> A1、A0為11時,選中控制口。</p><p> 4、 8255A的方式控制字</p><p> 8255A的控制字有兩種:一種是方式選擇控制字,另一種是C口按位置位/復位控制字</p><p><b>
21、; ?、?方式選擇控制字</b></p><p> 圖1 8255A的方式控制字表</p><p> ?、?C口按位置位/復位控制字</p><p> 圖2 8255A的置位/控制字表</p><p> 2.3 芯片8253</p><p> 1、 8253的功能分析</p>&l
22、t;p> Intel8253是NMOS工藝制成的可編程計數(shù)器/定時器,有幾種芯片型號,外形引腳及功能都是兼容的,只是工作的最高計數(shù)速率有所差異,例如8253(2.6MHz),8253-5(5MHz) </p><p> 8253內部有三個計數(shù)器,分別成為計數(shù)器0、計數(shù)器1和計數(shù)器2,他們的機構完全相同。每個計數(shù)器的輸入和輸出都決定于設置在控制寄存器中的控制字,互相之間工作完全獨立。每個計數(shù)器通過三個引腳
23、和外部聯(lián)系,一個為時鐘輸入端CLK,一個為門控信號輸入端GATE,另一個為輸出端OUT。每個計數(shù)器內部有一個8位的控制寄存器,還有一個16位的計數(shù)初值寄存器CR、一個計數(shù)執(zhí)行部件CE和一個輸出鎖存器OL。 </p><p> 執(zhí)行部件實際上是一個16位的減法計數(shù)器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通過程序設置的。輸出鎖存器的值是通過程序設置的。輸出鎖存器OL用來鎖存計數(shù)執(zhí)行部件CE的內容,從而
24、使CPU可以對此進行讀操作。順便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器來用1、8253的作用</p><p> 2、8253的引腳信號</p><p> 2.4可編程控制芯片8259A </p><p><b> 8259A的原理</b></p><p> 一片8959A有8條中斷請求線
25、IR0~IR7,8259A被操作系統(tǒng)初始化后,就可以接收中斷信號了。8259A從IR請求線上接受中斷信號,每個請求線有一個觸發(fā)器來保 存請求信號,從而形成中斷請求寄存器(IRR)。同時如果中斷請求信號線上不是被屏蔽的,8259A向CPU發(fā)出 INT信號,請求中斷。這時如果CPU是處于允許中斷狀況,CPU就會發(fā)送INTA信號給8259A進入中斷響應周期。如果有多個請求信號同時到達,8259A的優(yōu)先權電路會對各個請求進行優(yōu)先權選擇,將最高先
26、權的請求在中斷響應周期送到中斷服務寄存器(ISR)中將它置位,同時復位IRR中的相應位。接著CPU再次發(fā)送一個INTA脈沖給8259A,啟動另外一個中斷相應周期。8259A在這個相應周期向數(shù)據(jù)總線的D0-D7上輸入一個中斷向量。CPU根據(jù)該向量的值*4后就可以從中斷入口地址表(IDT )中取出中斷服務程序的入口地址而轉入中斷服務程序。而8259A如果工作在自動結束中斷(AEOI)模式時會自動使其ISR中的相應位復位,否則需要發(fā)出EOI命
27、令使ISR復位。</p><p> 在老式的PC-XT/AT中,一般使用一片8259A進行中斷信號請求。在現(xiàn)代的多數(shù)PC中,一般都會采用兩片8259A作為級連。其中一片是Master一片是Slave,由于Master上的一個中斷請求線需要連接到Slave的INT腳,所以實際可以使用的外部中斷個數(shù)是15(8*2 – 1)個。</p><p><b> 8259A結構</b
28、></p><p> 1、數(shù)據(jù)總線緩沖器--D7~D0</p><p> 數(shù)據(jù)總線緩沖器為三態(tài)、雙向、8位寄存器,數(shù)據(jù)線D7~D0與CPU系統(tǒng)總線連接,構成CPU與8259A之間信息傳送的通道。</p><p> 2、讀/寫控制邏輯--WR/WD</p><p> 讀/寫控制邏輯用來接收CPU系統(tǒng)總線的讀/寫控制信號和端口地址選
29、擇信號,用于控制8259A內部寄存器的讀/寫操作。</p><p> 3、級聯(lián)緩沖/比較器 </p><p> 8259A既可以工作于單片方式,也可以工作于多片級聯(lián)方式,級聯(lián)方式硬件連接如圖6.10所示。級聯(lián)緩沖/比較器提供多片8259A的管理和選擇功能,其中一片為主片,其余為從片。</p><p><b> 4、中斷控制邏輯</b>&l
30、t;/p><p> 中斷控制邏輯按照編程設定的工作方式管理中斷,負責向片內各部件發(fā)送控制信號,向CPU發(fā)送中斷請求信號INT和接收CPU回送的中斷響應信號INTA,控制8259A進入中斷管理狀態(tài)。</p><p> 5、中斷請求寄存器(interrupt request register,IRR)</p><p> IRR是一個8位寄存器,用于記錄外部中斷請求。其
31、中D7~D0分別與外部中斷請求信號IR7~IR0相對應,當IRi(i=0~7)有請求(電平或邊沿觸發(fā))時,IRR中的相應位Di置1,在中斷響應信號INTA有效時,DI被清除。</p><p> 6、中斷服務寄存器(interrupt service register,ISR)</p><p> ISR是一個8位寄存器,用于記錄CPU當前正在服務的中斷標志。當外部中斷IRi(i=0~7)
32、的請求得到CPU響應進入服務時,由CPU發(fā)來的第一個中斷響應脈沖INTA將ISR中的相應位Di(i=0~7)置1,而ISR的復位則由8259A中斷結束方式?jīng)Q定。若定義為自動結束方式,則由CPU發(fā)來的第二個中斷響應脈沖INTA的后沿將Di復位為0;若定義為非自動結束方式,則由CPU發(fā)送來的中斷結束命令將其復位。</p><p> 7、中斷屏蔽寄存器(interrupt mask register,IMR)<
33、/p><p> IMR是一個8位寄存器,用來存放IR7~IR0的中斷屏蔽標志。它的8個屏蔽位D7~D0與外部中斷請求IR7~IR0相對應,用于控制IRi的請求是否允許進入。當IMR中的Di位為1時,對應的IRi請求被禁止;當IMR中的Di位為0時,則允許對應的中斷請求進入。它可以由軟件設置或清除,通過編程設定屏蔽字,可以改變原來的優(yōu)先級別。</p><p><b> 程序代碼見附
34、錄</b></p><p><b> 三、總結與體會 </b></p><p> 作為一名自動化的大三學生,我覺得做微機程設計是十分有意義的,而且是十分必要的。在已度過的大學時間里,我們大多數(shù)接觸的是專業(yè)課。我們在課堂上掌握的僅僅是專業(yè)課的理論知識,如何去鍛煉我們的實踐能力?如何把我們所學的專業(yè)基礎課理論知識運用到實踐中去呢?我想做類似的課程設計就為我
35、們提供了良好的實踐平臺。</p><p> 在做本次課程設計的過程中,我感觸最深的當屬查閱大量的設計資料了。為了讓自己的設計更加完善,查閱這方面的設計資料是十分必要的,同時也是必不可少的。其次,在這次課程設計中,我們運用到了以前所學的專業(yè)課知識,如:匯編語言、模擬和數(shù)字電路知識等。雖然過去從未獨立應用過它們,但在學習的過程中帶著問題去學我發(fā)現(xiàn)效率很高,這是我做這次課程設計的又一收獲。另外,這次課程設計讓我感到了
36、團隊合作的重要性。在團隊中,我們互幫互助,對整個課程設計來說,這是至關重要的,缺少每一個人都會對我們的設計產(chǎn)生影響。還有要感謝指導老師在我們遇到困難時,給予我們的建議與鼓勵。兩周的課程設計結束了,但是從中學到的知識會讓我受益終身。發(fā)現(xiàn)、提出、分析、解決問題和實踐能力的提高都會受益于我在以后的學習、工作和生活中。</p><p> 為期兩個星期的畢業(yè)設計即將接近尾聲,在劉老師和王老師的親切指導和同學的幫助下,此次
37、設計才得以完成,在此向所有給予我此次課程設計指導和幫助的老師和同學表示最誠摯的感謝:</p><p><b> 附錄</b></p><p> ;計價器(利用調速控制器控制電機的旋轉,讀出總里程數(shù))</p><p> DATASEGMENT</p><p> TEQU 100;定時周期時間(基本周期*T
38、)</p><p> T_HIDB 50;高電平持續(xù)時間(基本周期*T_HI)</p><p> NOW_TDB T</p><p> NOW_HIDB 50</p><p> T8253EQU 609;定時器8253的初值=1.19M*0.512MS(基本周期)=609</p><p> R
39、UNDB 0;啟停標志</p><p> SPEEDDW 0; 里程數(shù)</p><p> STEPDW 50 ;10米的8253脈沖個數(shù)(即每來50個脈沖,則前進10米)</p><p> TABDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0~9的顯示碼</p><p>
40、 DISPDB 4 DUP (0),52H;存儲轉速</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;當前用戶DS段入棧保存</p>
42、;<p> MOV AX,0000H</p><p> MOV DS,AX;修改DS=0000H,指向中斷矢量表所在段</p><p> MOV AX,OFFSET IRQ0;取出中斷處理子程序的入口偏移地址(以0為基準)</p><p> ADD AX,2000H;修正,實際地址=裝入地址的偏移量+相對于0起始的偏移量<
43、;/p><p> MOV SI,0020H;IR0中斷矢量號為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;恢復用戶數(shù)據(jù)段DS</p><p> MOVAL,13H</p><p> OUT20H,AL;寫入ICW1</p&g
46、t;<p> MOVAL,08H</p><p> OUT21H,AL;寫入ICW2</p><p> MOVAL,01H</p><p> OUT21H,AL;寫入ICW4</p><p> MOV AL,7EH;D7,D0位復位為0</p><p> OUT
47、21H,AL;寫入OCW1(IMR);開放8259A的IR7和IR0中斷</p><p> MOV AL,34H;設定8253通道0的工作方式,00110100B</p><p> OUT 43H,AL;CH0采用先寫低8位,后寫高8位,方式2,二進制計數(shù)</p><p> MOV AX,T8253;計數(shù)初值為基本周期</p&
48、gt;<p> OUT 40H,AL;寫入CH0</p><p><b> MOVAL,AH</b></p><p> OUT40H,AL</p><p> MOV AL,0B6H;設定8253通道2的工作方式,10110110B</p><p> OUT 43H,AL
49、;CH2采用先寫低8位,后寫高8位=0,方式3,二進制計數(shù)</p><p> MOVAX,STEP</p><p> OUT 42H,AL</p><p><b> MOVAL,AH</b></p><p> OUT 42H,AL;寫入CH2</p><p> MOV
50、AL,88H;寫入8255A的方式控制字,設定工作方式為10001000B</p><p> OUT 63H,AL;即A口方式0輸出,C口高4位輸入,B口方式0輸出,C口低4位輸出</p><p> MOVAL,00H</p><p> OUT60H,AL;關電機</p><p> STI;開中斷&
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碼轉換為非壓縮碼,存入緩沖區(qū)</p><p> MOVSI,OFFSET DISP</p><p> CALLDISPLAY</p><p>
54、; MOVAL,00H;打開開關掃描</p><p> OUT62H,AL</p><p> INAL,62H;讀C口</p><p> ANDAL,40H</p><p> JZA2;有鍵按下,轉讀鍵盤</p><p><b> JMPEXIT<
55、/b></p><p> A2:MOVAH,00H;記錄按鍵掃描碼</p><p> MOVCX,04;循環(huán)掃描4次</p><p> MOVDL,77H;打開第一行的開關掃描</p><p> A21:INCAH;掃描碼+1</p><p><b&g
56、t; ROLDL,1</b></p><p><b> MOVAL,DL</b></p><p> OUT62H,AL;打開一行的開關掃描</p><p> INAL,62H;讀C口</p><p> TESTAL,40H;取PC6(Y1)</p>
57、<p> JNZA22;無鍵按下,轉</p><p> CALLDALEY</p><p> CALLDALEY;去抖動</p><p> INAL,62H;讀C口</p><p> ANDAL,40H;取PC6(Y1)</p><p> JNZ
58、A22;是抖動,轉</p><p><b> CMPAH,2</b></p><p> JNZRELEA;不是加速鍵,轉(單獨按下加速鍵無效)</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;不是按下啟停鍵,則轉</p><p> MOVAL,RUN</p><p> TESTAL,01H</p><p&
62、gt; JNZA24;原為啟動,則轉停止</p><p> MOVRUN,01;置位啟動標志</p><p> MOVNOW_T,T;重裝定時周期</p><p> MOVAL,T_HI</p><p> MOVNOW_HI,AL;重裝高電平定時時間</p><p>
63、 MOVSPEED,00;重新計價(里程)</p><p><b> JMPEXIT</b></p><p> A24:MOVRUN,00;復位啟動標志</p><p> MOVAL,00H</p><p> OUT60H,AL;關電機</p><p>
64、;<b> JMPEXIT</b></p><p> A3:MOVAL,AH</p><p> ANDAL,0FH</p><p><b> CMPAL,03</b></p><p> JNZA6;不是'+'鍵,轉</p><p
65、><b> MOVBL,1</b></p><p> TESTAH,80H</p><p> JZA4;沒按加速鍵,轉</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;不是'-'鍵,轉</p><p><b> MOVBH,01</b></p>&l
68、t;p> TESTAH,80H</p><p> JZA7;沒按加速鍵,轉</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定時基本周期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;不啟動,則轉測速度</p><
71、p> MOVAL,NOW_T</p><p><b> SUBAL,1</b></p><p> JNZIRSP1</p><p> MOVNOW_T,T;重裝定時周期</p><p> MOVAL,T_HI</p><p> MOVNOW_HI,AL;重
72、裝高電平定時時間</p><p> JMPIREXIT</p><p> IRSP1:MOVNOW_T,AL;保存-1后的定時周期</p><p> MOVAL,NOW_HI</p><p> TESTAL,AL</p><p> JNZIRSP2</p><p>
73、 MOVAH,00H;高電平持續(xù)時間到,則PA0輸出為0</p><p> JMPIRSP3</p><p> IRSP2:SUBAL,1;高電平持續(xù)時間不到</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中斷結束指令</p><p> OUT 20H,AL;寫入8259A的OCW2</p><p><b> CLI</b><
75、/p><p><b> POPAX</b></p><p> IRET;中斷返回</p><p> ;8259A的IR7中斷處理子程序(8253的CH2計數(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中斷結束指令</p><p> OUT 20H,AL;寫入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;查表轉換為顯示碼</p><p> TESTDL,02H</p><p> JNZDISP2;是第二位顯示嗎?</p><p> ORAL,80H;是,加小數(shù)點</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),顯示轉速</p><p><b> X
83、ORAL,AL</b></p><p> OUT61H,AL;關顯示</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> ;延時子程序</b></p><p> DALEY:PUSHCX</p&
85、gt;<p> MOV CX,0560H;置內循環(huán)次數(shù)</p><p> DALEY1:LOOP DALEY1;共循環(huán)0560H次,以完成延時</p><p><b> POPCX</b></p><p><b> RET</b></p><p> CODE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車計價器課程設計
- 出租車計價器課程設計
- 出租車計價器課程設計
- 出租車計價器課程設計
- eda課程設計報告--出租車計價器
- 硬件課程設計報告--出租車計價器
- eda課程設計報告---出租車計價器
- 課程設計---出租車計價器設計
- 課程設計--出租車計價器設計
- 出租車計價器設計課程設計
- 課程設計---出租車計價器設計
- 出租車計價器課程設計論文
- 硬件課程設計----出租車計價器
- eda課程設計--出租車計價器
- eda課程設計--出租車計價器
- 接口課程設計---出租車計價器
- 課程設計---出租車計價器的設計
- 課程設計--出租車計價器的設計
- 硬件課程設計--出租車計價器系統(tǒng)
- arm出租車計價器系統(tǒng)課程設計
評論
0/150
提交評論