




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
IBMTstandardizationoffice【IBMT5AB-IBMT08-IBMT2C-ZZT18】IBMTstandardizationoffice【IBMT5AB-IBMT08-IBMT2C-ZZT18】微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告出租車自動(dòng)計(jì)價(jià)器修訂版東南大學(xué)自動(dòng)化學(xué)院《微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)》課程設(shè)計(jì)報(bào)告綜合測(cè)試題六:出租車自動(dòng)計(jì)價(jià)器姓名:劉策學(xué)號(hào):08014116專業(yè):自動(dòng)化實(shí)驗(yàn)室:金智樓五樓組別:同組人員:設(shè)計(jì)時(shí)間:2016年06月1日——2016年6月16日評(píng)定成績(jī):審閱教師:目錄一.課程設(shè)計(jì)目的與要求..…………………..二.方案論證與原理設(shè)計(jì)....………....………三.實(shí)驗(yàn)流程與測(cè)試結(jié)果…........……………四.實(shí)驗(yàn)總結(jié)……...………….五.附錄....................................................................................................................................一.課程設(shè)計(jì)目的與要求1、課程設(shè)計(jì)目的(1)總結(jié)、應(yīng)用前面八個(gè)實(shí)驗(yàn)中積累的微機(jī)實(shí)驗(yàn)經(jīng)驗(yàn);(2)熟悉8253、8255等芯片的使用方法;(3)結(jié)合課堂中所學(xué)的匯編語(yǔ)言基礎(chǔ)知識(shí),進(jìn)行系統(tǒng)的編程,培養(yǎng)動(dòng)手操作能力(4)鍛煉了查找錯(cuò)誤,修正錯(cuò)誤的能力2、課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)出租車自動(dòng)計(jì)價(jià)器,計(jì)費(fèi)包括起步價(jià)、行車?yán)锍逃?jì)費(fèi)、等待時(shí)間計(jì)費(fèi)三部分,用三只數(shù)碼管顯示總金額,最大值為99.9元,起步價(jià)8.0元,3公里之內(nèi)按起步價(jià)計(jì)費(fèi),超過3公里,往返雙程可設(shè)每1公里1.2元,單程每公里1.8元,等待時(shí)間每分鐘0.2元。用兩位數(shù)碼管顯示總里程數(shù),最大值99km,用兩位數(shù)碼管顯示等待時(shí)間(分鐘),最大值99分鐘。用直流電機(jī)模擬出租車行駛,里程數(shù)與脈沖個(gè)數(shù)成正比,每1km脈沖數(shù)100個(gè)(可設(shè)定),低于每小時(shí)5公里時(shí)作為等待狀態(tài)。(1)基本要求i假設(shè)有計(jì)數(shù)比較器測(cè)定停車與行車狀態(tài),轉(zhuǎn)換成開關(guān)信號(hào)。開關(guān)輸入行車狀態(tài),并用LED燈顯示;同時(shí)有空車信號(hào),可用于啟動(dòng)計(jì)價(jià)并用LED燈顯示;ii記錄里程數(shù),等待時(shí)間,計(jì)算總金額,并實(shí)時(shí)顯示;iii模擬剎車和啟動(dòng)動(dòng)作,動(dòng)作后立即停車/行車;iv簡(jiǎn)單的標(biāo)定和檢錯(cuò)功能。(2)進(jìn)一步設(shè)計(jì)要求i打印輸出功能,在屏幕上打印上下車時(shí)間、里程、價(jià)格;ii保存最近5次數(shù)據(jù),可選擇打印在屏幕上以便檢查;iii有語(yǔ)音提示功能。二.方案論證與原理設(shè)計(jì) 整個(gè)出租車自動(dòng)計(jì)價(jià)器系統(tǒng)是由主程序控制模塊、計(jì)價(jià)模塊、顯示模塊三部分組成。1、主程序控制模塊總控制模塊的作用是控制出租車的行車狀態(tài)以及控制數(shù)碼管的顯示內(nèi)容,包括如下幾點(diǎn):判斷是否選中單程或雙程判斷出租車是否處于等待判斷數(shù)碼管顯示內(nèi)容判斷系統(tǒng)是否開始行駛具體的規(guī)劃如下:以8255芯片為例,將A口定義為方式0輸入,A0連接8253定時(shí)器的OUT1輸出,以便用來(lái)檢測(cè)是否存在1s定時(shí)。后面相繼的1-5分別接到邏輯電平開關(guān)K1-K5,K6接某個(gè)與門右引腳控制直流電機(jī)的開關(guān)。而K7開關(guān)接到一個(gè)LED燈上,檢驗(yàn)判斷是處于開始計(jì)價(jià)還是空車狀態(tài)。開關(guān)名稱K1K2K3K4K5K6K7對(duì)應(yīng)口PA1PA2PA3PA4PA5與門右引腳PA7功能K=0停止?fàn)顟B(tài)單程K3K4K5顯示功能關(guān)閉直流電機(jī)空車狀態(tài)K=1計(jì)費(fèi)狀態(tài)雙程01X時(shí)間打開直流電機(jī)開始計(jì)價(jià)1XX里程000費(fèi)用低位001費(fèi)用高位計(jì)數(shù)模塊計(jì)算路程、計(jì)算時(shí)間兩個(gè),通過計(jì)數(shù)模塊可以獲得出租車目前行駛的路程以及已經(jīng)行駛的時(shí)間,該模塊的數(shù)據(jù)應(yīng)用到計(jì)費(fèi)模塊可以行駛及等待過程的總費(fèi)用。其原理是根據(jù)直流電機(jī)每秒中輸出的脈沖數(shù)分情況,預(yù)先設(shè)定好一個(gè)脈沖閾值(本實(shí)驗(yàn)用的是10),當(dāng)直流電機(jī)每秒輸出的脈沖數(shù)大于10時(shí),出租車處于行車狀態(tài),此時(shí)里程=歷史里程+脈沖數(shù)/100。當(dāng)直流電機(jī)每秒輸出的脈沖數(shù)小于10時(shí),出租車處于等待狀態(tài),此時(shí)等待時(shí)間加1。8253定時(shí)器功能分配如下:計(jì)數(shù)器0設(shè)置成方式3,計(jì)數(shù)器1設(shè)置成方式0,計(jì)數(shù)器0、1的計(jì)數(shù)初值均設(shè)置為1000,然后將兩個(gè)計(jì)數(shù)器級(jí)聯(lián),計(jì)數(shù)器0輸入1MHz的時(shí)鐘信號(hào),利用out1產(chǎn)生的1S的周期信號(hào)來(lái)產(chǎn)生1S的定時(shí)中斷。計(jì)數(shù)器2設(shè)置成方式0,將直流電機(jī)的脈沖輸入到CLK2,用來(lái)計(jì)數(shù)直流電機(jī)的脈沖數(shù)。計(jì)費(fèi)模塊計(jì)費(fèi)模塊利用計(jì)數(shù)模塊提供的時(shí)間以及路程等信息,通過條件等操作針對(duì)不同的情況采用不同的計(jì)費(fèi)方式,最終得到總費(fèi)用。計(jì)費(fèi)公式如下:顯示模塊根據(jù)設(shè)計(jì)要求我們可以將顯示模塊主要分為屏幕顯示和數(shù)碼管顯示兩個(gè)部分。第一部分是屏幕顯示,在屏幕上顯示里程數(shù)、等待時(shí)間和總費(fèi)用,最近5次費(fèi)用等等,可以通過調(diào)用DOS中斷顯示數(shù)據(jù);第二部分是通過數(shù)碼管顯示,由于數(shù)碼管只有兩個(gè),我們組合使用K3、K4、K5選擇顯示當(dāng)前里程數(shù)、等待時(shí)間和總費(fèi)用的高低位,數(shù)碼管位選和段選分別用8255芯片的C口PC0和PC1、B口PB0~PB7控制。而空車信號(hào)由LED燈顯示,只需將K7連接LED燈上即可顯示空車狀態(tài)。其中8255B口設(shè)置成方式0輸出,用于控制八位數(shù)碼管的段選。8255C口設(shè)置為方式0輸出方式。三.實(shí)驗(yàn)流程與測(cè)試結(jié)果判斷單雙程從8255A口讀入開關(guān)開始判斷單雙程從8255A口讀入開關(guān)開始數(shù)值顯示更新數(shù)值顯示更新初始化程序數(shù)值顯示更新數(shù)值顯示更新初始化程序數(shù)碼管顯示數(shù)碼管顯示NNPA1=1PA1=1YYNNPA0=1PA0=1YY系統(tǒng)啟動(dòng)系統(tǒng)啟動(dòng)調(diào)用顯示模塊調(diào)用顯示模塊NNPA7=1PA7=1YY計(jì)價(jià)更新模塊計(jì)價(jià)更新模塊DJK6DJK6直流電機(jī)5直流電機(jī)分析與總結(jié)按照題目的實(shí)驗(yàn)要求,我一共完成了5個(gè)基本要求和提高要求的(1)、(2)兩部分。通過機(jī)械開關(guān)控制出租車的狀態(tài),LED燈L7顯示行車狀態(tài):L7滅表示空車,L7亮表示車?yán)镉腥饲易詣?dòng)計(jì)價(jià)器在計(jì)價(jià)??梢酝ㄟ^調(diào)節(jié)控制直流電機(jī)的電位器來(lái)切換出租車的行駛狀態(tài)。在屏幕上將動(dòng)態(tài)顯示出當(dāng)前的路程、等待時(shí)間和費(fèi)用,數(shù)碼管的顯示數(shù)據(jù)則可以通過開關(guān)來(lái)切換。經(jīng)過多次檢驗(yàn)和驗(yàn)證,本項(xiàng)目能正確地計(jì)算出租車行駛的費(fèi)用,實(shí)現(xiàn)了出租車自動(dòng)計(jì)價(jià)器的基本功能和部分?jǐn)U展功能。在實(shí)驗(yàn)中我熟悉了8253、8255的操作過程和原理,了解了直流電機(jī)、數(shù)碼管的使用方法,對(duì)匯編語(yǔ)言的書寫、編輯能力有了進(jìn)一步提高。事實(shí)上我的設(shè)計(jì)過程并不是一帆風(fēng)順。一開始在查找資料后我發(fā)現(xiàn)了一個(gè)比較簡(jiǎn)單的思路,即把汽車實(shí)時(shí)數(shù)據(jù)預(yù)先存儲(chǔ)在數(shù)據(jù)段的字符串里面,通過8253定時(shí)得到的時(shí)間、8253獲得的直流電機(jī)脈沖數(shù)目,計(jì)算出等待時(shí)間、行駛路程等重要參數(shù),間接的從預(yù)存數(shù)據(jù)中取得費(fèi)用等,顯示在屏幕和數(shù)碼管上。由于現(xiàn)實(shí)行車中不會(huì)出現(xiàn)太長(zhǎng)的等待時(shí)間,出租車也不可能每客都行駛數(shù)十公里,所以我覺得可行性還是相當(dāng)高的。但是后來(lái)因?yàn)槠渲械膸讉€(gè)問題一直得不到解決,且這些問題由很重要,所以不得不放棄原來(lái)的思路,參考去往屆學(xué)長(zhǎng)成熟的經(jīng)驗(yàn)方法,最終比較成功的實(shí)現(xiàn)了各功能。老師提出了等待脈沖閾值設(shè)定的問題,原來(lái)的脈沖閾值設(shè)定為50,太高不符合現(xiàn)實(shí)情況,后來(lái)進(jìn)行了更改,改為10。除此之外直流電機(jī)轉(zhuǎn)速過快會(huì)使屏來(lái)不及更新數(shù)據(jù),在咨詢學(xué)長(zhǎng)后在調(diào)整速度又恢復(fù)正常。在測(cè)試代碼時(shí),調(diào)試數(shù)碼管相對(duì)來(lái)說(shuō)比較麻煩,程序中的算法存在一點(diǎn)點(diǎn)漏洞,會(huì)對(duì)顯示造成很多影響,最終我們也發(fā)現(xiàn)數(shù)碼管顯示值會(huì)比屏幕顯示出來(lái)的值小數(shù)個(gè)采樣,通過調(diào)整代碼也沒有解決它。這次實(shí)驗(yàn)讓我對(duì)微機(jī)系統(tǒng)各組成部分的工作原理有了更加清晰的認(rèn)識(shí),了解了微機(jī)乃至以后單片機(jī)的一些設(shè)計(jì)和應(yīng)用的方法。這是很寶貴的收獲。附錄cursormacrorow,clm;***********移動(dòng)光標(biāo)位置到(row,clm)*******************io8255c第三口接LED燈用來(lái)表示行車等待pushax pushbx pushdx movah,2 ;INT10功能號(hào)為2時(shí),置光標(biāo)位置 movbh,0 ;頁(yè)號(hào)為0 movdh,row movdl,clm int10h popdx popbx popaxendmdatasegment ioportequ0ec00h-0280h io8253aequioport+280h ;8253計(jì)數(shù)器0地址 io8253bequioport+281h ;8253計(jì)數(shù)器1地址 io8253cequioport+282h ;8253計(jì)數(shù)器2地址 io8253dequioport+283h ;8253控制寄存器地址 io8255aequioport+288h ;8255A口地址 io8255cequioport+28ah ;8255C口地址 io8255bequioport+289h;8255B口地址 io8255dequioport+28bh ;8255控制寄存器地址 onekmequ100 ;一公里對(duì)應(yīng)的脈沖數(shù) waitnumequ10 ;參考脈沖數(shù),小于此值即為等待 startpequ80 ;起步價(jià)8元 pricedb12 ;行車計(jì)費(fèi),1.2元/公里 waitpequ2 ;等待計(jì)費(fèi),0.2元/分鐘 str0db'',0dh,0ah,'$'str1db'****************Taxicalculatingfeemachine**************',0dh,0ah,'$'str6db'*********************08013226**************************',0dh,0ah,'$'str2db'*********PRICE:1.80yuan/km0.2yuan/min***************',0dh,0ah,'$'str12db'*********PRICE:1.20yuan/km0.2yuan/min***************',0dh,0ah,'$'str3db'TIME:0(M)',0dh,0ah,'$'str4db'DIST:0(KM)',0dh,0ah,'$'str5db'COST:0(YUAN)',0dh,0ah,'$'str7db'Fivecost:',0dh,0ah,'$'str11db'GETOFFTHETAXIend_time:00:00:00',0dh,0ah,'$'str14db'start_time:00:00:00',0dh,0ah,'$'pnumdw0 ;總脈沖數(shù) distdb0 ;總里程 timedb0 ;等待時(shí)間 totaldw0000h ;總費(fèi)用 flag db11h xdk db0feeBufferdw0000h,0000h,0000h,0000h,0000h ;五次費(fèi)用 feeCountdb0 leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段碼buffer1db6,5h;存放要顯示的個(gè)位和十位bzdw?;位碼dataendsstackssegmentstack db100dup(?)stacksendscodesegment assumecs:code,ds:data,ss:stacksmainprocstart: movax,data movds,ax movax,stacks movss,ax movdx,io8255a inal,dx testal,04h ;0代表單程,1代表雙程 jzbb movbl,55h ;作為單程還是雙程的標(biāo)志,等于55h則為雙程 movflag,bl movbl,12;十進(jìn)制,表示往返雙程則為1.2元/公里 movprice,bl bb: callini ;調(diào)用初始化子程序 calldisp;調(diào)用數(shù)值更新程序begin1: movdi,offsetbuffer1;設(shè)di為顯示緩沖區(qū)calllll;;調(diào)用數(shù)碼管顯示程序 movdx,io8255ainal,dx testal,02h ;0代表計(jì)費(fèi)狀態(tài),1代表結(jié)束 jnzexittestal,01h ;判斷是否有1秒鐘定時(shí)中斷信號(hào),1為start啟動(dòng) jzbegin1;為0則重新調(diào)用數(shù)碼管顯示程序 callbegin ;啟動(dòng)計(jì)費(fèi)movbx,total moval,bl callextendBcd;調(diào)用二進(jìn)制轉(zhuǎn)換為BCD碼程序,輸入為八位的al,返回值為16位的ax movwordptr[buffer1],ax;將低位價(jià)格BCD碼存入要顯示的數(shù)字的內(nèi)存區(qū) movdx,io8255a inal,dx testal,00001000b jzshowl1 ;K3=0,不顯示里程數(shù) moval,dist callextendBcd movwordptr[buffer1],ax;將里程數(shù)對(duì)應(yīng)的BCD碼存入要顯示的數(shù)字的內(nèi)存區(qū) jmpshowl3showl1: movdx,io8255a inal,dx testal,00010000bjzshowl2 ;K4=0,不顯示等待時(shí)間 moval,time callextendBcd movwordptr[buffer1],ax;將等待時(shí)間對(duì)應(yīng)的BCD碼存入要顯示的數(shù)字的內(nèi)存區(qū)jmpshowl3showl2:movdx,io8255a inal,dx testal,00100000bjzshowl3 ;K5=0,不顯示價(jià)格高兩位 movbx,total moval,bh callextendBcd movwordptr[buffer1],ax;將高位價(jià)格BCD碼存入要顯示的數(shù)字的內(nèi)存區(qū)showl3: movdx,io8255a inal,dx jzbegin1 ;每過一秒鐘則判斷一下是否停止等等 callgains ;每過一秒鐘則調(diào)用一次計(jì)費(fèi)模塊 movbl,feeCount cmpbl,9 jaaboveCount jmpbelowCountaboveCount:movbl,0;五個(gè)一循環(huán)belowCount:movax,total movbh,0 movfeeBuffer[bx],ax incbl incbl movfeeCount,bl jmpbegin1exit:calloff_texicursor11,0 movah,4ch ;退出程序 int21hmainendp;*********************擴(kuò)展BCD碼***************************extendBcdprocpushbx pushcxmovbl,al movcl,4 shral,cl;取高四位 movah,al andbl,00001111b moval,bl;取低四位 popcx popbx retextendBcdendp;*********************數(shù)碼管顯示程序***************************lllprocpushdipushbx pushax pushsi movbh,2ll:movbyteptrbz,bh pushdi decdi adddi,bz movbl,[di];bl為要顯示的數(shù) popdimoval,0movdx,io8255c;消隱,全部關(guān)閉outdx,al movbh,0 movsi,offsetled;置led數(shù)碼表偏移地址為SI addsi,bx;求出對(duì)應(yīng)的led數(shù)碼地址 moval,byteptr[si] movdx,io8255b;自8255B口輸出段碼 outdx,al moval,byteptrbz;使相應(yīng)的數(shù)碼管亮 oral,xdk movdx,io8255c outdx,al;自8255C口輸出位碼movcx,3000delay: loopdelay;延時(shí) movbh,byteptrbz shrbh,1 jnzll;右移一位判斷顯示的高地位,若為高位,回ll繼續(xù)顯示低位popsi popax popbx popdi retlllendp;*********************計(jì)價(jià)更新程序***************************gainsproc pushax pushbx pushcx pushdx movax,total andax,ax jzreturn2;總價(jià)是0,則返回主程序 movdx,io8253c ;讀取脈沖數(shù) inal,dx ;將直流電機(jī)的脈沖輸入到CLK2,用來(lái)計(jì)數(shù)直流電機(jī)的脈沖數(shù) movbl,al movdx,io8253a ;計(jì)數(shù)器0重新計(jì)數(shù) movax,1000 outdx,al moval,ah outdx,al movdx,io8253b movax,1000 ;計(jì)數(shù)器1重新計(jì)數(shù)outdx,al moval,ah outdx,al moval,0 movdx,io8253c ;計(jì)數(shù)器2重新計(jì)數(shù) outdx,al moval,0ffh ;計(jì)算脈沖數(shù) subal,bl incal cmpal,waitnum ;脈沖數(shù)小于參考值則為等待狀態(tài),否則為行車狀態(tài) jbwgain movah,00000100b movxdk,ah movah,0 addpnum,ax ;計(jì)算總的脈沖數(shù) movax,pnum movbl,100 divbl callnum2bcds ;計(jì)算行駛里程數(shù)并轉(zhuǎn)化為2位壓縮BCD碼 movdist,al jmpnewcost;更新總費(fèi)用wgain:moval,0 movxdk,al moval,time ;判斷為等待狀態(tài),等待時(shí)間加1 callbcd2num;將2位壓縮BCD碼轉(zhuǎn)換成十進(jìn)制數(shù)字 incal callnum2bcds;再將二進(jìn)制轉(zhuǎn)換為壓縮BCD碼,方便數(shù)碼管顯示 movtime,al jmpnewcostreturn2:jmpreturnnewcost:moval,dist ;計(jì)算當(dāng)前總金額 callbcd2num;BCD轉(zhuǎn)換為10進(jìn)制 movtotal,startp cmpal,3 jbecost2;路程小于三公里 subal,3 movah,0 movbl,price mulbl addtotal,ax;總費(fèi)用cost2: moval,time ;開始等待計(jì)費(fèi) callbcd2num movah,0 movbl,waitp mulbl addax,total;ax中等待費(fèi)用加上total中路程費(fèi)用 callnum2bcdl;轉(zhuǎn)換為4位壓縮BCD格式 movtotal,ax calldisp;數(shù)值更新顯示程序return: popdx popcx popbx popaxretgainsendp;*********************2位壓縮BCD碼轉(zhuǎn)換為十進(jìn)制數(shù)***************************bcd2numproc pushbx pushcx movbh,al movcl,4 shral,cl movbl,10 mulbl andbh,00001111b addal,bh popbx popcx ret bcd2numendp;**********************************小數(shù)點(diǎn)顯示程序*********************commaproc pushax pushdx movah,2 movdl,'.' int21h popdx popax retcommaendp;*********************************顯示程序*******************************showproc callshow1 cmpdl,1 ;是否顯示小數(shù)點(diǎn)的標(biāo)志 jnzdown callcommadown: callshow11 ret showendp;****************************顯示子程序1*************************************show1proc pushdx pushcx pushax movdl,al ;顯示程序用的是al寄存器 movcl,4 shrdl,cl ;保留高四位,清除低四位 adddl,30h ;dl存的是所顯示字符的ASCII碼,若顯示數(shù)字,則需將其數(shù)值加上30h movah,02h int21h popax popcx popdx retshow1endp;**************************顯示子程序2*********************************** show11proc pushdx pushax movdl,al anddl,00001111b ;保留低四位,清除高四位 adddl,30h movah,02h int21h popax popdx retshow11endp;***************************數(shù)值更新顯示程序 *******************************dispproc pushax pushbx pushdx pushsi movdl,0 cursor3,6 moval,time callshow;顯示等待時(shí)間 movdl,0 cursor4,6 moval,dist callshow;顯示行駛里程 movdl,0 cursor5,6 movbx,total moval,bh callshow;顯示總金額前兩位 movdl,1 ;使show子程序調(diào)用comma moval,bl callshow;顯示總金額第三位以及小數(shù)點(diǎn)后的值 movsi,0movdl,0 cursor7,12 movbx,feeBuffer[si] moval,bh callshow movdl,1 moval,bl callshow;顯示前五次的總金額————1incsi incsi movdl,0 cursor7,21 movbx,feeBuffer[si] moval,bh callshow movdl,1 moval,bl callshow;顯示前五次的總金額————2incsi incsi movdl,0 cursor7,30 movbx,feeBuffer[si] moval,bh callshow movdl,1 moval,bl callshow;顯示前五次的總金額————3incsi incsi movdl,0 cursor7,39 movbx,feeBuffer[si] moval,bh callshow movdl,1 moval,bl callshow;顯示前五次的總金額————4 incsi incsi movdl,0 cursor7,48 movbx,feeBuffer[si] moval,bh callshow movdl,1 moval,bl callshow;顯示前五次的總金額————5;loppend popsi popdx popbx popax retdispendp;*********************************8位二進(jìn)制碼轉(zhuǎn)2位壓縮BCD碼*****************num2bcdsproc pushbx pushcx pushdx cmpal,9 jbe_out1;小于9,不用轉(zhuǎn)換 movah,0 movbl,10 divbl cmpal,10 jaeerror1;數(shù)值比100大,則錯(cuò)誤 movcl,4 shlal,cl andah,0fh addal,ah_out1: popdx popcx popbx reterror1:cursor11,0 movsi,offsetstr7 movdx,si movah,09h int21h movah,4ch int21hnum2bcdsendp;*********************************16位二進(jìn)制碼轉(zhuǎn)4位壓縮BCD碼*****************num2bcdlproc pushbx pushcx pushdx cmpax,9999 jaerror2 cmpax,0009h jbe_out2 movdx,ax movbl,100 divbl movbh,ah callnum2bcds;低8位轉(zhuǎn)換為壓縮BCD movbl,al moval,bh callnum2bcds;高8位轉(zhuǎn)換為壓縮BCD movah,bl_out2: popdx popcx popbx reterror2: cursor11,0 movsi,offsetstr7 movdx,si movah,09h int21h movah,4ch int21hnum2bcdlendp;*****************************************初始化程序***********************iniproc pushax pushdx pushsi movbh,7 ;窗口底部卷入行屬性 movdx,314fh ;窗口右下角行號(hào)列號(hào) movax,0600h ;al=0表示清窗口 movcx,0 ;窗口左上角行號(hào)列號(hào) int10h ;清屏幕 cursor0,0 movax,0 movpnum,ax movdist,al movtime,al movtotal,ax ;相關(guān)存儲(chǔ)單元內(nèi)容清零 movdx,io8255d outdx,al movdx,offsetstr1;在屏幕上顯示提示語(yǔ)“Taxicalculatingfeemachine” movah,09h int21h movdx,offsetstr6;顯示08014116 movah,09h int21h cmpflag,55h ;作為單程還是雙程的標(biāo)志 jzbbb movdx,offsetstr2;比較,flag不是55h,單程,顯示1.8yuan/km jmpbbbb bbb:movdx,offsetstr12;比較,flag為55h,雙程,顯示1.2yuan/km bbbb:movah,09h int21h movdx,offsetstr3;顯示TIME:0(M) movah,09h int21h movdx,offsetstr4;顯示DIST:0(KM) movah,09h int21h movdx,offsetstr5;顯示COST:0(YUAN) movah,09h int21h movdx,offsetstr14;顯示start_time:00:00:00 movah,09h int21h movdx,offsetstr7;顯示Fivecost: movah,09h int21h popsi popdx popax ret iniendp;*********************************啟動(dòng)計(jì)費(fèi)*********************************beginproc pushax pushbx pushcx pushdx movax,total andax,ax jnzrettt ;判斷本身是否是0,不等于就直接退出;*********************************get_start_time********************************** movah,2ch int21h ;取時(shí)間,ch小時(shí),cl分鐘,dh秒 movdl,0 moval,ch callnum2bcds cursor6,11 callshow moval,cl callnum2bcds cursor6,14 callshow moval,dh callnum2bcds cursor6,17 callshow;******************************************************************************
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能農(nóng)業(yè)植保無(wú)人機(jī)租賃與病蟲害防治方案合同
- 智能教育機(jī)器人比賽計(jì)時(shí)器租賃與賽事獎(jiǎng)勵(lì)服務(wù)協(xié)議
- 中醫(yī)用藥護(hù)理原則與方法
- 軟件產(chǎn)品功能質(zhì)量測(cè)試補(bǔ)充協(xié)議
- 奢侈品行業(yè)私人保鏢培訓(xùn)與品牌形象維護(hù)合同
- 口腔囊腫治療方法
- 抖音平臺(tái)用戶行為分析與權(quán)益保護(hù)合作協(xié)議
- 美容美發(fā)連鎖品牌全國(guó)市場(chǎng)拓展合作協(xié)議
- 知識(shí)產(chǎn)權(quán)變更手續(xù)辦理及許可使用協(xié)議范本
- 數(shù)據(jù)庫(kù)平臺(tái)運(yùn)營(yíng)權(quán)轉(zhuǎn)讓及技術(shù)服務(wù)合同
- 系桿拱橋工程測(cè)量施工方案
- 淺談摩托艇的安全管理
- 女性功能治療方案ppt課件
- 公路工程計(jì)量與計(jì)價(jià)考試B本科
- 醫(yī)用耗材分類目錄 (低值 ╱ 高值)
- 短、中、長(zhǎng)距離游泳項(xiàng)目的體能訓(xùn)練方法及特征研究
- 人造草坪技術(shù)參數(shù)
- 淺談歌曲《我的祖國(guó)》
- lemon米津玄師翻唱中文諧音
- 城鎮(zhèn)老舊小區(qū)改造技術(shù)導(dǎo)則(青島)
- 農(nóng)村飲水安全工程施工組織設(shè)計(jì)方案
評(píng)論
0/150
提交評(píng)論