版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、. . . . 課程設(shè)計(綜合實驗)報告( 2013- 2014年度第2學(xué)期)名 稱:單片機與嵌入式系統(tǒng)課程設(shè)計 題 目:基于51單片機的出租車計價器設(shè)計院 系:控制與計算機工程學(xué)院班 級:測控1101班學(xué) 號: 1111160108學(xué)生: 權(quán) 指導(dǎo)教師: 呂躍剛 設(shè)計周數(shù): 一 周 成 績:日期:2014年06月19日25 / 22一、課程設(shè)計的目的與要求1 每三人一組,按學(xué)號排列分組。2 每組同學(xué)可按題目自行合理分工合作完成,答辯時可分別負(fù)責(zé)回答其中一部分,如資料查詢、總體設(shè)計、外圍器件研究、傳感器研究、電路設(shè)計、硬件制版圖繪制、軟件編程等。3 每組課設(shè)只給出題目,而沒有給出具體技術(shù)功能要
2、求。同學(xué)可以充分發(fā)揮、完善設(shè)計。4 建議每組應(yīng)有一個同學(xué)學(xué)習(xí)掌握protel 99SE制版軟件,并負(fù)責(zé)電路板設(shè)計。5 建議認(rèn)真查閱資料,多參考別人的成果,但設(shè)計的容要有自己的獨立見解。6 課設(shè)報告按學(xué)校格式要求書寫。二、設(shè)計正文1.1.1 單片機的概念單片機(microcontroller,又稱微控制器)是在一塊硅片上集成了各種部件的微型計算機。這些部件包括中央處理器CPU、數(shù)據(jù)存儲器RAM、程序存儲器ROM、定時器/計數(shù)器和多種I/O接口電路。圖1是80C51單片機的基本結(jié)構(gòu)圖圖1 89C51結(jié)構(gòu)方框圖a. 89C51單片機的結(jié)構(gòu)特點有以下幾點:l 8位CPU;l 片振蕩器與時鐘電路;l 3
3、2根I/O線;l 外部存儲器ROM和RAM,尋址圍各64KB;l 兩個16位的定時器/計數(shù)器;l 5個中斷源,2個中斷優(yōu)先級l 全雙工串行口l 布爾處理器b. 定時器/計數(shù)器89C51部有兩個16位可編程定時器/計數(shù)器,記為T0和T1。16位是指它們都是由16個觸發(fā)器構(gòu)成,故最大計數(shù)模值為2-1??删幊淌侵杆麄兊墓ぷ鞣绞接芍噶顏碓O(shè)定,或者當(dāng)計數(shù)器來用,或者當(dāng)定時器來用,并且計數(shù)(定時)的圍也可以由指令來設(shè)置。這種控制功能是通過定時器方式控制寄存器TMOD來完成的.如果需要,定時器在計到規(guī)定的定時值時可以向CPU發(fā)出中斷申請,從而完成某種定時的控制功能。在計數(shù)狀態(tài)下同樣也可以申請中斷。定時器控制
4、寄存器TCON用來負(fù)責(zé)定時器的啟動、停止以與中斷管理在定時工作時,時鐘由單片機部提供,即系統(tǒng)時鐘經(jīng)過12分頻后作為定時器的時鐘。技術(shù)工作時,時鐘脈沖由TO和T1輸入。c. 中斷系統(tǒng)89C51的中斷系統(tǒng)允許接受五個獨立的中斷源,即兩個外部中斷申請,兩個定時器/計數(shù)器中斷以與一個串行口中斷。外部中斷申請通過INTO和INT1(即P3.2和P3.3)輸入,輸入方式可以是電平觸發(fā)(低電平有效),也可以是邊沿觸發(fā)(下降沿有效)。兩個定時器中斷請當(dāng)定時器溢出時向CPU提出的,即當(dāng)定時器由狀態(tài)1轉(zhuǎn)為全零時提出的。第五個中斷請由串行口發(fā)出的,串行口每發(fā)送完一個數(shù)據(jù)或接收完一個數(shù)據(jù),就可提出一次中斷請求。1.1
5、.2 89C51的芯片引腳圖如圖2所示VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏極開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。圖2P1口:P1口是一個部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗時,P1口作為
6、第八位地址接收。P2口:P2口為一個部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被部上拉電阻拉高,且作為輸入。因此作為輸入時,P2口的管腳被外部拉低,將輸出電流,這是由于部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被部上拉為高電平,并用作輸入。作為輸
7、入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(定時器/計數(shù)器0外部輸入)P3.5 T1(定時器/計數(shù)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的
8、輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出
9、現(xiàn)。EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有部程序存儲器。注意加密方式1時,/EA將部鎖定為RESET;當(dāng)/EA端保持高電平時,此間部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入與部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。1.1.3 使用I/O口的注意事項(1)P1,P2,P3口的輸出緩沖器可驅(qū)動4個LSTTL電路。對于HCMOS芯片單片機的I/O口,在正常情況下,可任意由TTL或NMOS電路驅(qū)動。HMOS與CMOS性的單片機I/O口有集電極開路或漏極開路的輸
10、出來驅(qū)動時,不必外加上拉電阻(2)對于74LS系列,CD4000系列以與一些大規(guī)模集成電路芯片(如8155,8253,8279等),都可以和MCS-51系列單片機直接接口。具體使用時,可以查閱有關(guān)器件手冊或參考典型電路(3)對一些線性組件,特別是應(yīng)用鍵盤、碼盤、LED顯示器等輸入/輸出設(shè)備時,應(yīng)當(dāng)盡量增加驅(qū)動部分的容量,否則,單片機將提供不出足夠的驅(qū)動電流供給負(fù)載使用1.2 89C51中斷系統(tǒng)所謂中斷,是指當(dāng)計算機執(zhí)行正常程序時,系統(tǒng)中出現(xiàn)某些急需處理的異常情況和特殊情求,CPU暫停執(zhí)行現(xiàn)行程序,轉(zhuǎn)去對隨機發(fā)生地更緊迫事件進行處理;處理完畢后,CPU自動返回原來的程序繼續(xù)執(zhí)行。中斷允許軟件設(shè)計
11、不需要關(guān)心系統(tǒng)其他部分定時要求,算術(shù)程序不需要考慮隔幾個指令檢查I/O設(shè)備是否需要服務(wù)。相反,算術(shù)程序編寫時好像有無限的時間作算術(shù)運算而無其他工作在進行。若其它事件需要服務(wù)時,則通過中斷告訴系統(tǒng)。89C51單片機有5個中斷源,有兩個中斷優(yōu)先級,每個中斷源的優(yōu)先級可以編程控制。中斷允許受到CPU開中斷和中斷源開中斷的兩級控制。1.2.1 中斷源中斷源是指任何引起計算機中斷的事件,一般一臺機器允許有許多個中斷源。89C51系列單片機至少有5個中斷源。增加很少的硬件就可把各種硬件中斷源“線或”成為一個外部中斷輸入,然后再順序檢索一起中斷的特定源。89C51單片機的5個中斷源是:外部中斷請求0,由(P
12、3.2)輸入;外部中斷請求1,由(P3.3)輸入;片定時器/計數(shù)器0益處中斷請求;片定時器/計數(shù)器1溢出中斷請求; 片串行口發(fā)送/接收中斷請求;為了了解每個中斷源是否產(chǎn)生了中斷請求,中斷系統(tǒng)應(yīng)設(shè)置許多個中斷請求觸發(fā)器(標(biāo)志位)實現(xiàn)記憶。這些中斷源請求標(biāo)志位分別有特殊功能寄存器TCON和SCON的相應(yīng)位鎖存定時器/計數(shù)器控制寄存器TCON,它是一個八位的寄存器,各位如表1所示:表1 定時器/計數(shù)器控制寄存器TCONTF1TF0IE1IT1IE0IT0IT0,IT1:外部中斷0、1觸發(fā)方式選擇位,由軟件設(shè)置。1是下降沿觸發(fā),0是電平觸發(fā)。IE0,IE1:外部終端0、1請求標(biāo)志位。TF0,TF1:定
13、時器/計數(shù)器0、1溢出中斷請求標(biāo)志。1.2.2 中斷的控制中斷的控制主要實現(xiàn)中斷的開關(guān)管理和中斷優(yōu)先級的管理。這個管理主要通過對特殊功能寄存器IE和IP的編程實現(xiàn)。(1)中斷允許寄存器IE表2 中斷允許寄存器IEEA -ET2ESET1EX1ET0EX0EX0,EX1:外部終端0,1的中斷允許位。1是中斷開,0是中斷關(guān)ET0,ET1:定時器/計數(shù)器0、1溢出中斷允許位。1是開中斷,0是關(guān)中斷ES:串行口中斷允許位。1是中斷開,0是中斷關(guān)ET2:定時器/計數(shù)器2溢出中斷位EA:CPU開/關(guān)中斷控制位。1是開中斷,0是關(guān)中斷(2)中斷優(yōu)先級寄存器IP表3 中斷優(yōu)先級寄存器IPPSPT1PX1PT0
14、PX0若系統(tǒng)中多個中斷源同時請求中斷,則CPU按中斷源的優(yōu)先級別,由高到低分別響應(yīng)。89C51單片機有兩個中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級。每個中斷源都可以編程為高優(yōu)先級。這可以實現(xiàn)兩級中斷嵌套。嵌套的原則:一個正在執(zhí)行的中斷服務(wù)程序可以被高級的中斷請求中斷,而不能被同級或較低級的中斷請求中斷。兩級中斷通過使用IP寄存器設(shè)置,相應(yīng)的位置1,則優(yōu)先級高,0則優(yōu)先級低。PX0、PX1:終端0、1中斷優(yōu)先級控制;PT0、PT1:定時器/計數(shù)器0、1中斷優(yōu)先級控制。PS:串行口中斷優(yōu)先級控制。89C51復(fù)位時,IP被清零,5個中斷源都在同一個優(yōu)先級。這時若其中幾個中斷源同時產(chǎn)生中斷請求,則CPU按照片硬
15、件優(yōu)先級鏈路的順序相應(yīng)中斷,硬件優(yōu)先級由高到低的順序是:外部終端0,定時器/計數(shù)器0,外部中斷1,定時器/計數(shù)器1串行口中斷。1.2.3 中斷響應(yīng)89C51的CPU在每個機器周期采樣中斷源的中斷請求標(biāo)志位,如果沒有上述阻止條件,則將在下一個機器周期響應(yīng)被激活的最高級中斷請求。阻止條件如下: CPU正在處理同級或更高級的中斷; 現(xiàn)行機器周期不是所執(zhí)行指令的最后一個機器周期; 正在執(zhí)行的是RETI或者是訪問IE或IP的指令;CPU在中斷響應(yīng)之后完成如下操作: 硬件清除相應(yīng)的中斷標(biāo)志位; 執(zhí)行一條硬件子程序,保護斷點,并轉(zhuǎn)向中斷服務(wù)程序入口。 結(jié)束中斷時執(zhí)行RETI指令,恢復(fù)斷點,返回主程序。89C
16、51的CPU在相應(yīng)中斷請求時,由硬件電路自動形成轉(zhuǎn)向與該中斷源對應(yīng)的中斷的服務(wù)程序入口地址。這種方法為硬件向量中斷法。各中斷源的中斷服務(wù)程序入口地址如下:表4 中斷源的中斷服務(wù)程序入口地址編號中斷源入口地址0外部終端00003H1定時器/計數(shù)器0000BH2外部終端10013H3定時器/計數(shù)器1001BH4串行口中斷0023H各中斷服務(wù)程序入口地址僅隔8個字節(jié),編譯器在這些地址放入無條件轉(zhuǎn)移指令,跳到服務(wù)程序的實際地址。向量中斷包括把先前的程序計數(shù)指針推入堆棧,中斷服務(wù)程序很像其他子程序。當(dāng)向量中斷發(fā)生時,硬件禁止所有中斷。此時表明外部中斷或定時器溢出的標(biāo)志位由硬件清除。中斷服務(wù)程序的不同分支
17、取決于中斷源。在重新允許全局CPU中斷EA之前,必須仔細(xì)清除各種標(biāo)志。標(biāo)志會引起立即地重復(fù)中斷。89C51對終端實際上有特殊的返回指令-RETI。不是RET。RETI重新允許系統(tǒng)識別其他中斷。因而,沒必要在正常使用中斷時復(fù)位EA,只要在程序初始化時開中斷一次就可以了。1.3 單片機定時器/計數(shù)器的使用89C51系列單片機至少有兩個16位部定時器/計數(shù)器。8952有三個定時器/計數(shù)器,其中連個基本定時器/計數(shù)器是定時器/計數(shù)器0和定時器/計數(shù)器1。他們既可以編程為定時器使用,也可以編程為計數(shù)器使用。若是計數(shù)部晶振驅(qū)動時鐘,則它是定時器;若是計數(shù)89C51的輸入引腳的脈沖信號,則它是計數(shù)器。89C
18、51的T/C時加一計數(shù)的。定時器實際上也是工作在技術(shù)方式下的,只不過對固定頻率的脈沖計數(shù);由于脈沖周期固定,由計數(shù)值可以計算出時間,有定時功能。當(dāng)T/C工作在定時器時,對振蕩源12分頻的脈沖計數(shù),即每個機器周期計數(shù)值加一,頻率加=fosc/12。晶振為6MHz,計數(shù)頻率=500KHz,每2uS計數(shù)加一。當(dāng)T/C工作在計數(shù)器時,計數(shù)脈沖來自外部脈沖輸入引腳T0或T1。當(dāng)T0或T1腳上負(fù)跳變需2個機器周期,即24個振蕩周期。所以T0或T1腳輸入的計數(shù)外部脈沖的最高頻率為fosc/12。當(dāng)晶振為12MHz時,最高技術(shù)頻率為500KHz,高于此頻率將計數(shù)出錯。1.3.1 與T/C有關(guān)的特殊功能寄存器(
19、1)計數(shù)寄存器TH和TLT/C是16位的,計數(shù)寄存器有TH高8位TL低8位構(gòu)成。在特殊功能寄存器中,對應(yīng)T/C0為TH0和TL0;對應(yīng)T/C1為TH1和TL1。定時器/計數(shù)器的初始值通過TH1/TL1和TH0/TL0設(shè)置(2)定時器/計數(shù)器控制寄存器TCON表5 定時器/計數(shù)器控制寄存器TCONTR1TR0TR0、TR1:定時器/計數(shù)器0、1啟動控制位。1是啟動,0是停止TCON復(fù)位后清零,T/C需要受到軟件控制才能啟動計數(shù);當(dāng)計數(shù)計滿時,產(chǎn)生向高位的進位TF,即溢出中斷請求標(biāo)志T/C的方式控制寄存器TMOD表6 T/C的方式控制寄存器TMODGATEC/TM1M0GATEC/TM1M0C/T
20、:計數(shù)器或定時器選擇位。1位計數(shù)器,0位定時器GATE:門控信號。1時T/C的啟動控制受到雙重控制,即要求TR0/TR1和INT0/INT1同時為高;0時T/C的啟動僅受TR0/TR1控制。表7 M1和M0工作方式選擇位M1 M0方式功能0 00為13位定時器/計數(shù)器,TL存低5位,TH存高8位0 11為16定時器/計數(shù)器,TL存低8,TH存高8位1 02常數(shù)自動裝入的8位定時器/計數(shù)器1 13僅適用于T/C0,兩個8為定時器/計數(shù)器1.3.2 定時器/計數(shù)器的初始化(1)初始化步驟在使用89C51的定時器/計數(shù)器前,應(yīng)對它進行編程初始化,主要是對TCON和TMOD編程,還需要計算和裝載T/C
21、的計數(shù)初值。一般完成以下幾個步驟:l 確定T/C的工作方式-編程TMOD寄存器。l 計算T/C中的計數(shù)初值,并裝載到TH和TL。l T/C在中斷方式工作時,須開CPU中斷和源中斷-編程IE寄存器。l 啟動定時器/計數(shù)器-編程TCON中TR1和TR0位(2)計數(shù)初值的計算在定時器方式下,T/C是對機器周期脈沖計數(shù)的,如果fosc=6MHz,一個機器周期為2us,則方式0 13位定時器最大時間間隔=(2-1)×2us=16.384ms;方式1 16位定時器最大時間間隔=(2-1)×2us=131.072ms;方式2 8 位定時器最大時間間隔=(2-1)×2us=512
22、us若使T/C工作在定時器方式1,要求定時1ms,求計數(shù)初值。如設(shè)計數(shù)初值為x,則有(2-1)×2us=1000usx=2-500因此,TH,TL可置65536-500。2、 計價器系統(tǒng)設(shè)計圖3整體硬件電路圖2.1 硬件設(shè)計2.1.1 整體硬件電路圖由上圖我們可以看到,本電路控制核心是AT89C51芯片。該方案我們采用動態(tài)顯示的方法。動態(tài)顯示的優(yōu)點是,它占用CPU的時間少,每次只把一個數(shù)據(jù)送到外部接口,雖然我們仿真看到的是全部數(shù)碼管都亮著,那是因為動態(tài)顯示的時間比較快,超過我們?nèi)搜鄣谋鎰e能力。若我們在仿真的時候暫停一下,就可以清楚地看到,時間單元和價格單元分別只顯示一位。靜態(tài)顯示,是
23、每一個數(shù)碼管不論在什么時候都點亮,占用CPU的時間很多。按鍵主要控制系統(tǒng)的初始化、開始工作、數(shù)據(jù)鎖存三項工作。剛開始上電,則所有的數(shù)碼管同時顯示全0狀態(tài),當(dāng)?shù)谝淮伟聪麻_關(guān),價格從起步價005.0元開始計費,等待是否超過三公里以與計算,時間單元則從00.00.00開始計時,一秒一秒往上加。P0口作為數(shù)據(jù)總線口,分別把數(shù)據(jù)輸送到4個74LS273地址鎖存器中,而鎖存器的工作需要等待脈沖的到來。脈沖通過寫地址有些端口p3.6和端口p2.0-p2.3經(jīng)過或非門來產(chǎn)生。只有當(dāng)把數(shù)據(jù)送到外部接口時,p3.6口才為低電平,p2.0-p2.3用來控制到底是把數(shù)據(jù)送往哪一個鎖存器。算法公式是:費用=起步價+(路
24、程-3)×1.3路程=速度×時間 (速度恒定,60Km/h,也就是1Km/min)若路程小于等于3,則收起步價5元,否則按費用公式算。 由于速度恒定,所以計算的核心是時間,只要判斷時間超出2分鐘,則費用公式就開始計算,每多出一公里,費用就加上1.5元,一分鐘一公里來計算,因此本設(shè)計比較簡單。時間單元由單片機的定時器/計數(shù)器來計算,延時1ms時間的初值由程序來設(shè)定。2.1.2 74LS273和74LS02簡介圖4 74LS273管腳圖圖2-2 74LS273管腳圖引腳功能:74LS273是8位數(shù)據(jù)/地址鎖存器。74LS273是一種帶清除功能的8D觸發(fā)器,1D8D為數(shù)據(jù)輸入端,
25、1Q8Q為數(shù)據(jù)輸出端,正脈沖觸發(fā),低電平清除,常用作8位地址鎖存器。圖5 74LS02管腳圖引腳功能:74LS02是四二輸入或非門。該芯片有四個或非門公選擇,如1A或1B后,經(jīng)過非門再輸出,只有當(dāng)輸入的兩個變量同時為0時,輸出才為1。具有緩沖倒相功能。2.2 軟件設(shè)計2.2.1 模塊介紹該計費器系統(tǒng)的軟件設(shè)計分為一下幾個模塊:(1)主程序模塊在主程序模塊中,需要完成對個接口芯片的初始化、出租車起步價和單價、中斷向量的設(shè)計以與開中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設(shè)置啟動/清除標(biāo)志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的容,分別完成啟動、清
26、除、計程和計價等不同的操作。流程圖如3-4所示。當(dāng)按下輕觸開關(guān)時,開始對系統(tǒng)初始化,價格和時間都顯示0、0,再次按下開關(guān),時間單元開始計時,并計算時間是否超過2分鐘,超過2分鐘,則從第3分鐘開始計費。價格單元從起步價5.0元開始計費,每多一分鐘,價格單元多加1.5元。(2)顯示子程序模塊由于顯示是由顯示時間子程序DIS1和顯示價格子程序DIS組成的,時間由小時、分、秒三個單元組成,共六個數(shù)碼管。價格由元和角兩個單元組成,最大可以顯示999.9元。2.2.2 程序流程圖各緩沖區(qū)初始化開始對定時器中斷設(shè)置開始計數(shù)顯示緩沖單元首址送R0掃描初值送R2取顯示單元值,轉(zhuǎn)為段顯碼送段數(shù)據(jù)口 段顯碼送段數(shù)據(jù)
27、口掃描值送位數(shù)據(jù)口P0讓調(diào)整位的DP點亮延時一小段時間顯示單元地址加1掃描值右移一位顯示狀態(tài)是否切換查詢6位顯示完?取段碼送到顯示緩沖區(qū)單元NY分調(diào)整?YN在顯示的低位斷碼上加80H,即點亮DP。查詢下一個調(diào)整位圖程序流程2.2.3 匯編程序ORG 0000H ;初始化段地址LJMPMAIN ;長跳轉(zhuǎn)到主函數(shù)MAIN處ORG 000BH ;TT0開始地址LJMP TT0 ;長跳轉(zhuǎn)到TT0 處 ORG 0030H ;主函數(shù)開始地址,避開0030敏感段MAIN: MOV SP,#40H ;設(shè)堆棧底指針,下一個數(shù)據(jù)將放在41H單元 MOV 70H,#60 ;價格單元的起步價 MOV 71H,#00
28、;價格單元的十位和百位MOV 72H,#00 ;秒單元清零MOV 74H,#00 ;時單元清零MOV75H,#00 ;75H單元清零備用CLR00HCLR01H ;將00H,01H單元清零 MOV 6BH,#0AH ;將0AH(既十進制10)放入6B單元 MOV R1,#76H ;把76H放到R1中KKK: MOVR1,#00H ;將76H單元的容清零 INCR1 DJNZ6BH,KKK ;76H7FH單元全部清零,備用 LCALLDIS ;調(diào)用價格顯示子程序 LCALL DIS1 ;調(diào)用時間顯示子程序 MOVTMOD,#11H ;定時器/計數(shù)器工作方式設(shè)置 MOV TH0,#3CH MOV
29、TL0,#0B0H ;這句和上一句設(shè)置延時50ms MOV 6EH,#20 ;將6EH單元設(shè)置20,達到1s的延時G2: LCALL DIS ;長調(diào)用價格顯示子程序 LCALL DIS1 ;長調(diào)用時間顯示子程序 P1.0,G2 ;開關(guān)沒按下,等待按下,顯示初始狀態(tài),全部為零 LCALL TIME1 ;調(diào)用TIME1延時子程序P1.0,G2 ; 開關(guān)沒按下,跳到G2,否則轉(zhuǎn)到下一步G1: LCALL DIS LCALL DIS1 JNB P1.0,G1 ;開關(guān)按下,繼續(xù)顯示價格和時間,并轉(zhuǎn)到中斷 SETB EA ;開中斷 SETB ET0 ;定時器0中斷允許,向CPU申請中斷 SETB TR0
30、;定時器0工作允許 SETB 01H ;01H單元置位LLL: LCALL CHAI ;調(diào)用現(xiàn)場保護子程序 LCALL DIS LCALL JISUAN ;調(diào)用計算子程序 LCALL DIS1P1.0,G3 ;開關(guān)沒按下,則返回 LCALL TIME1P1.0,G3 CPL 01H ;01H單元此時為零 JNB 01H,G5;01H ;單元容為0,跳到G5 SETB ET0 ;定時器0中斷允許,向CPU申請中斷G6: LCALL DIS LCALL DIS1 JNB P1.0,G6 ;開關(guān)按下,顯示所走的時間與費用 LJMP MAIN ;重新等待下一個工作狀態(tài)G5: CLR ET0G4: LC
31、ALL DIS LCALL DIS1 JNB P1.0,G4G3: LJMP LLLTT0: CLR ET0 /*定時一秒*/ CLR TR0 MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 SETB ET0 DJNZ 6EH,JJJ LCALL ADD1 MOV 6EH,#20JJJ:RETIDIS: MOV 6DH,#06H /*價格顯示子程序*/ MOV R0,#7AH MOV 6CH,#0FEHHHH: MOV DPTR,#0FDFFH /數(shù)據(jù)指針出口地址,低8位給P0口,高8給/位P2口 MOV A,6CH MOVX DPTR,A MOV A,R0 MOV D
32、PTR,#TAB ;查表首地址 MOVC A,A+DPTR ;查表值送A MOV DPTR,#0FEFFH MOVX DPTR,A LCALL TIME1 MOV A,6CH RL A MOV 6CH,A INC R0 DJNZ 6DH,HHH RETDIS1: MOV 6DH,#04H /*時間顯示子程序*/ MOV R0,#72H MOV 6CH,#0FEHHHH1: MOV DPTR,#0F7FFH ;FF給P0口,F7給P1.0P1.3口 MOV A,6CH MOVX DPTR,A ;將6CH的容放到0F7FFH中 MOV A,R0 MOV DPTR,#TAB ;查表首地址 MOVC
33、AA+DPTR ;查表值送A MOV DPTR,#0FBFFH MOV R1,6DH CJNE R1,#03H,K1 ORL A,#80HK1: MOVX DPTR,A LCALL TIME1 MOV A,6CH RL A MOV 6CH,A INC R0 DJNZ 6DH,HHH1 RETTIME1: MOV 6AH,#0AH /*延時子程序*/FFF: MOV 69H,#0AHGGG: DJNZ 69H,GGG DJNZ 6AH,FFF RETJISUAN: 00H,K2 /*判斷是否超過3公里與計算價格子程序*/MOV A,78HCLR CSUBB A,#03HMOV 73H,#06HJ
34、C K3SETB 00HLJMP K3K2: MOVR3,71HMOV R4,70HMOV R2,#00HMOV R5,#00HMOV R6,#03HMOV R7,#0E8HLCALL NDIV42MOV 75H,R4MOV A,R6MOV R3,AMOV A,R7MOV R4,AMOV R2,#00HMOV R7,#100LCALL NDIV31MOV 74H,R4MOV A,R7MOV B,#10DIV ABMOV 73H,AMOV72H,B K3:RETCHAI: MOV 6FH,#03H /*保護現(xiàn)場子程序*/ MOV R0,#77H MOV R1,#7AHZZZ: MOV A,R0
35、ANL A,#0FH ;保存77H單元中的低4位 MOV R1,A MOV A,R0 SWAP A ANL A,0FH INC R1 MOV R1,A INC R0 INC R1 DJNZ 6FH,ZZZ ;循環(huán)三次 RETADD1: MOV A,77H /*加一子程序*/ CJNE A,#59H, L18 LJMPL19L18: ADD A,#01H DA A MOV 77H,A LJMP L24L19: MOV 77H,#00H JNB 00H,S1 CLR C MOV A,70H ADD A,#12 MOV 70H,A MOV A,71H ADDC A,#00H MOV 71H,AS1:
36、 MOV A,78H CJNEA,#59H,L20 LJMP L21L20: ADD A,#01HDA AMOV 78H,A LJMP L24L21: MOV 78H,#00H MOVA,79H CJNE A,#23H, L22 LJMP L23L22: ADD A,#01H DA A MOV 79H,AL23: MOV 79H,#00HL24: RETNDIV42:MOVA,R1 /*四除二子程序*/ PUSH ACC MOV B,#00HNDV421:MOV A,R2 CLR C SUBB A,R7 MOV R1,A MOV A,R5 SUBB A,R6 JC NDV422 MOV R5,
37、A MOV A,R1 MOV R2,A INC B SJMP NDV421NDV422:PUSH B MOV B,#10HNDV423:CLR C MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A XCH A,R5 RLC A XCH A,R5 MOV F0,C CLR C SUBB A,R7 MOV R1,A MOV A,R5 SUBB A,R6F0,NCV424 JC NDV425NCV424:MOV R5,A MOV A,R1 MOV R2,A INC R4NDV425:DJNZ B,NDV423 POP ACC CLR OV JNZ NDV426 SETB OVNDV426:
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年魯?shù)榭h民政局(殯儀館)招聘備考題庫及一套參考答案詳解
- 屏山縣自然資源和規(guī)劃局2026年公開招聘編外工作人員備考題庫及1套完整答案詳解
- 2026年雄安未來產(chǎn)業(yè)技術(shù)研究院(事業(yè)單位)招聘44人備考題庫及參考答案詳解
- 2026年湛江市坡頭區(qū)南三鎮(zhèn)人民政府招聘編外人員備考題庫完整答案詳解
- 中共桑植縣委組織部2026年公開選調(diào)工作人員備考題庫及一套答案詳解
- 2026年鐘山縣同古鎮(zhèn)人民政府公開招聘村級防貧監(jiān)測備考題庫員備考題庫完整參考答案詳解
- 2026年綿陽市平武縣公安局公開招聘警務(wù)輔助人員10人備考題庫及答案詳解參考
- 地下工程巖爆及其風(fēng)險評估綜述模板
- 金融監(jiān)管理論總結(jié)
- 2026年智能玻璃(天幕AR-HUD)項目可行性研究報告
- 頸部腫塊課件
- 考查課程考核方案
- 2023年鄭州公用事業(yè)投資發(fā)展集團有限公司招聘筆試模擬試題及答案解析
- (通用版)漢字聽寫大會競賽題庫(含答案)
- GB∕T 20973-2020 膨潤土-行業(yè)標(biāo)準(zhǔn)
- 婦幼保健院工作制度(崗位職責(zé)252項)
- 盡調(diào)模范:渾水做空瑞幸的報告(中文版)
- 燃?xì)夤艿滥甓葯z驗報告
- (完整版)外研版英語初二下冊單詞表
- 口腔扁平苔蘚PPT醫(yī)學(xué)課件
- 《設(shè)計概論》教案2022
評論
0/150
提交評論