微機(jī)原理課程設(shè)計(jì)(電子秒表的)_第1頁
微機(jī)原理課程設(shè)計(jì)(電子秒表的)_第2頁
微機(jī)原理課程設(shè)計(jì)(電子秒表的)_第3頁
微機(jī)原理課程設(shè)計(jì)(電子秒表的)_第4頁
微機(jī)原理課程設(shè)計(jì)(電子秒表的)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理課程設(shè)計(jì)微機(jī)原理與應(yīng)用課程設(shè)計(jì)微機(jī)原理課程設(shè)計(jì)微機(jī)原理課程設(shè)計(jì) 目錄一、設(shè)計(jì)任務(wù)1、計(jì)時(shí)秒表,具有分、秒和百分之一秒的計(jì)時(shí)功能。2、可以在屏幕中央顯示計(jì)時(shí)結(jié)果,屏幕顯示彩色圖案和文字。3、秒表具有鍵控啟/停功能,而且可以隨時(shí)通過鍵盤復(fù)位,清零二、設(shè)計(jì)原理1、HALT(啟動(dòng)子程序)2、DIS(宏定義蘋果顯示程序)3、DISS(宏定義一一字符串的輸出)4、CLOUR(字體顏色設(shè)置程序)5、IOSET(設(shè)置光標(biāo)位置子程序)6、GO(初始化顯示子程序)7、TIME(延時(shí)子程序)8、TRAN(壓縮BCD碼轉(zhuǎn)ASCII碼程序)9、復(fù)位、停止等功能的實(shí)現(xiàn)三、流程圖a)主程序流程圖b)壓縮BCD轉(zhuǎn)AS

2、CII碼子程序流程圖c)延時(shí)子程序流程圖四、程序段五、程序調(diào)試六、程序運(yùn)行結(jié)果七、心得體會八、參考文獻(xiàn)一、設(shè)計(jì)任務(wù):計(jì)時(shí)秒表,具有分、秒和百分之一秒的計(jì)時(shí)功能,并可以在屏幕中央顯示計(jì)時(shí)結(jié)果。2屏幕顯示彩色圖案和文字。3.秒表具有鍵控啟/停功能,而且可以隨時(shí)通過鍵盤復(fù)位,清零。二、設(shè)計(jì)原理:本程序的主要設(shè)計(jì)原理是用主程序完成百分之一秒與秒之間的轉(zhuǎn)換,顯示計(jì)時(shí)結(jié)果,實(shí)現(xiàn)暫停,暫停再啟動(dòng),復(fù)位,復(fù)位再啟動(dòng)的功能,并通過調(diào)用一些附加程序,縮減主程序的長度,提高運(yùn)行效率和精度,現(xiàn)將用到的所有附加程序的原理及其在運(yùn)行過程中所起到的作用匯總?cè)缦拢篋IS(宏定義蘋果顯示程序)通過宏調(diào)用,實(shí)現(xiàn)蘋果圖案的顯示。在

3、宏定義里,設(shè)置一個(gè)形參變量,作為移動(dòng)光標(biāo)的位置,在下面調(diào)用宏中,給予變量X不同的實(shí)參,輸出蘋果圖案。DISS(宏定義一一符串的輸出)原理同上。CLOUR(字體顏色設(shè)置程序)通過字體顏色設(shè)置程序,實(shí)現(xiàn)屏顯字體顏色的改變。當(dāng)改變BX值時(shí),字體顏色會改變。HALT(啟動(dòng)子程序)通過啟動(dòng)子程序,實(shí)現(xiàn)計(jì)時(shí)的開始,當(dāng)從鍵盤輸入一個(gè)字符時(shí),判斷是否等于S,如果不等,則在循環(huán)執(zhí)行啟動(dòng)子程序中動(dòng)態(tài)等待,直到輸入的字符為S時(shí),計(jì)時(shí)開始。5IOSET(設(shè)置光標(biāo)位置子程序)通過設(shè)置光標(biāo)子程序,來設(shè)置顯示的區(qū)域。一般整個(gè)屏幕可顯示25行,80列,屏幕左上角字符位置為0行0列,右下腳字符為24行79列,對應(yīng)十六進(jìn)制為:左

4、上腳為(0,0),右下腳為(18,4F)。入口信息為:(AH)=2要設(shè)置光標(biāo);(BH)=0頁號;(DH,DL)=00要置光標(biāo)于0行0列。DX賦值為0D27H,光標(biāo)置位于屏幕中央。&GO(初始化顯示子程序)通過將在數(shù)據(jù)段定義的BUFFER數(shù)組的首址賦給BX,將待顯示初值字符串00:00存入數(shù)組中的相應(yīng)位置,當(dāng)每次復(fù)位以后,重新調(diào)用該子程序,將程序的執(zhí)行結(jié)果修正為00:00,并顯示于屏幕上,從而實(shí)現(xiàn)了程序的初值設(shè)定和復(fù)位功能。TIME(延時(shí)子程序)計(jì)算機(jī)每執(zhí)行一條指令,雖然很快,但是需要一些時(shí)間,因此在本程序中可以通過延時(shí)程序,讓計(jì)算機(jī)去執(zhí)行一些無關(guān)的程序,來達(dá)到時(shí)鐘秒與百分之一秒轉(zhuǎn)換時(shí)的時(shí)間延遲

5、。每條指令執(zhí)行時(shí)間的長短,是以計(jì)算機(jī)的時(shí)鐘周期為基本單位的,因此不同的計(jì)算機(jī)可以通過修改延時(shí)程序數(shù)值來使其達(dá)到準(zhǔn)確計(jì)時(shí)。TRAN(壓縮BCD碼轉(zhuǎn)ASCII碼程序)計(jì)算機(jī)顯示數(shù)據(jù)時(shí)使用的是數(shù)據(jù)的ASCII碼,而在程序設(shè)計(jì)當(dāng)中程序的計(jì)時(shí)數(shù)值是BCD碼,因此,需要通過此子程序?qū)崿F(xiàn)將BCD碼轉(zhuǎn)變?yōu)锳SCII碼,以備送屏幕顯示。因?yàn)闀r(shí)鐘計(jì)時(shí)的壓縮BCD碼每一個(gè)數(shù)都有8位,因此將其右移四位并加30H,將其高位數(shù)字取出,送BX存放,再將其低位數(shù)字取出,加30H,送BX存放,達(dá)到不同碼制之間轉(zhuǎn)換的目的。復(fù)位、停止等功能的實(shí)現(xiàn)通過對輸入字符的判斷和各種循環(huán)的嵌套調(diào)用實(shí)現(xiàn)。整體上本程序的主要設(shè)計(jì)原理是先在數(shù)據(jù)段中

6、定義“SSTARTRRESETEENDCCONTINUE”控制字符串,并定義緩沖區(qū)。將數(shù)據(jù)段的段基址送DS,并將“SSTARTRRESETEENDCCONTINUE”顯示,同時(shí)調(diào)用GO子程序,將顯示結(jié)果初始化。同時(shí)設(shè)置光標(biāo),啟動(dòng)計(jì)時(shí),啟動(dòng)延時(shí)程序,將百分之一秒加1并將其設(shè)置為壓縮BCB碼,當(dāng)其CF不為1時(shí),送屏幕顯示,當(dāng)其為1時(shí),將其設(shè)置為0,并在秒上加1,當(dāng)秒等于60時(shí),其置0,當(dāng)其小于60時(shí),送屏幕顯示。在計(jì)時(shí)過程中,如果鍵入R,則將其復(fù)位,并重新開始計(jì)時(shí),當(dāng)鍵入E時(shí),計(jì)時(shí)暫停,如果鍵入C,則繼續(xù)計(jì)時(shí),如果鍵入R,則復(fù)位,設(shè)置為00:00,當(dāng)再次鍵入S時(shí),再次計(jì)時(shí)開始。三框圖(見附頁)四、

7、程序清單(附顯示結(jié)果)DATSEGMENTSPACEDB2000DUP()FU1DBWherethereisawill$FU2DBThereisaway$FU3DBMadeBy:$FU4DBSunandFeng$FU5DB12/28/2008$FU6DBINPUTSSTARTRRESETEENDCCONTINUE$設(shè)置控制字符串BUFFERDB10DUP(?);定義緩沖區(qū)DATENDSCODSEGMENTSTARTPROCFARASSUMECS:COD,DS:DATMOVAX,DATMOVDS,AXCLOUR:;字體顏色設(shè)置MOVAX,0003HINT10HMOVAX,DATMOVDS,AXM

8、OVES,AXMOVBP,OFFSETSPACEMOVDX,0E00HMOVCX,2000MOVBX,0004HMOVAX,1300HINT10HMOVAH,02HMOVBH,00MOVDX,182DHINT10HMOVDL,MOVAH,02HINT21HMOVAH,02HMOVBH,00MOVDX,1823HINT10HMOVDL,MOVAH,02H;用宏顯示蘋果圖案INT21HDISMACROXMOVAH,02HXORBH,BHMOVDX,XINT10HMOVDL,*MOVAH,02HINT21HENDMPUSHDXPUSHAXPUSHBXDIS0A28HDIS0928HDIS0829HD

9、IS0729HDIS062AHDIS052AHDIS042BHDIS032CHDIS0B28HDIS0A2AHDIS092CHDIS082EHDIS0730HDIS0732HDIS0834HDIS0936HDIS0A38HDIS0B39HDIS0C3AHDIS0D3BHDIS0E3CHDIS0F3CHDIS103CHDIS113BHDIS1239HDIS1337HDIS1435HDIS1533HDIS1631HDIS172FHDIS172BHDIS1629HDIS1528HDIS1627HDIS1725HDIS1721HDIS161FHDIS151DHDIS141BHDIS1319HDIS12

10、17HDIS1115HDIS1014HDIS0F14HDIS0E14HDIS0D15HDIS0C16HDIS0B17HDIS0A18HDIS091AHDIS081CHDIS071EHDIS0720HDIS0822HDIS0924HDIS0A26HPOPBXPOPAXPOPDX;用宏顯示字符串MOVAH,02HXORBH,BHMOVDX,XINT10HMOVDX,OFFSETYMOVAH,09HINT21HDISSMACROX,YENDMPUSHAXPUSHBXPUSHDXDISS0F1AH,FU1DISS1227H,FU2DISS1439H,FU3DISS163FH,FU4DISS1842H,

11、FU5DISS0004H,FU6POPDXPOPBXPOPAXCALLGOLOAD:CALLIOSETCALLHALTMOVDX,0;賦值程序調(diào)用;光標(biāo)置屏中央程序調(diào)用;等待開始信號程序調(diào)用DISPY:MOVBX,OFFSETBUFFERMOVAL,CHCALLTRANINCBXINCBX;顯示程序;分值BCD碼轉(zhuǎn)ASCII碼MOVCX,0;1/100秒與秒初值賦0AGAIN:CALTIME;延時(shí)程序調(diào)用MOVAL,DL;1/100秒值加1ADDAL,1DAA;BCD碼調(diào)整JCNEXT1;1/100秒等于100時(shí)清零MOVDL,AL;1/100秒值存DLJMPDISPY;1/100秒不等于10

12、0時(shí)顯示NEXT1:MOVDL,0;1/100秒值回零MOVAL,DH;秒值加1ADDAL,1DAAMOVDH,AL;秒值存DHCMPAL,60H;秒值與60比較JENEXT4;秒值為60時(shí),向分值進(jìn)一MOVDH,ALJNEDISPY;秒值不為60時(shí)顯示NEXT4:;秒值回零MOVDH,0MOVAL,CHADDAL,1DAAMOVCH,ALCMPCH,60HJNEDISPY;分值不為60時(shí)顯示MOVCH,0;分值回零MOVAL,DHCALLTRAN;秒值BCD碼轉(zhuǎn)ASCII碼INCBXINCBXMOVAL,DL;1/100秒值BCD碼轉(zhuǎn)ASCII碼CALLTRANMOVBX,ALPUSHBXP

13、USHCXPUSHDXCALLIOSETMOVDX,OFFSETBUFFER;時(shí)間顯示MOVAH,09HINT21HPOPDXPOPCXPOPBXMOVAH,0BH;判斷是否有鍵盤輸入INT21HANDAL,ALJZAGAIN;無鍵入則轉(zhuǎn)計(jì)時(shí)程序MOVAH,08H;鍵入控制符INT21HCMPAL,R;判斷是否為復(fù)位信號JNENEXT2;若為非復(fù)位信號則判斷是否為結(jié)束信號MOVDL,0;鍵入為復(fù)位信號則復(fù)位后繼續(xù)計(jì)時(shí)MOVDH,0JMPAGAINNEXT2:CMPAL,E;判斷是否為結(jié)束信號JNEAGAIN;若為非結(jié)束信號則計(jì)時(shí)繼續(xù)NEXT3:MOVAH,08H;若為結(jié)束信號則計(jì)時(shí)暫停INT2

14、1HCMPAL,C;判斷計(jì)時(shí)是否繼續(xù)JEAGAINCMPAL,R;判斷是否為復(fù)位信號JNENEXT3;若為非復(fù)位信號則繼續(xù)等待鍵入CALLGO;若為復(fù)位信號則復(fù)位并轉(zhuǎn)至開頭等待CALLIOSETMOVDX,OFFSETBUFFERMOVAH,09HINT21HJMPLOADRETSTARTENDPGOPROC;賦值程序MOVBX,OFFSETBUFFERMOVAL,0MOVBX,ALINCBXMOVAL,0MOVBX,ALINCBXMOVAL,:MOVBX,ALINCBXMOVAL,0MOVBX,ALINCBXMOVAL,0MOVBX,ALINCBXMOVAL,:MOVBX,ALINCBXMO

15、VAL,0MOVBX,ALINCBXMOVAL,0MOVBX,ALINCBXMOVAL,$MOVBX,ALRETGOENDPIOSETPROCMOVDX,0D27HMOVBH,00MOVAH,02HINT10HRETIOSETENDPHALTPROCMOVAH,08HINT21HCMPAL,SJNEHALTRETHALTENDPTRANPROCMOVCL,ALSHRAL,1SHRAL,1SHRAL,1SHRAL,1ORAL,30HMOVBX,ALINCBX;光標(biāo)置屏中央程序;等待開始信號鍵入程序;BCD碼轉(zhuǎn)ASCII碼程序MOVAL,CLANDAL,0FHORAL,30HMOVBX,ALRET

16、TRANENDPTIMEPROC;延時(shí)程序PUSHCXPUSHAXMOVAX,00B0HMOVCX,0FFFFHA1:DECAXJNZA2JMPA3A2:DECCXJNZA2JMPA1A3:POPAXPOPCXRETTIMEENDPCODENDSENDSTART;程序結(jié)束五、程序調(diào)試由于是第一次用匯編語言編寫一個(gè)較為復(fù)雜的程序以實(shí)現(xiàn)具體功能,在編寫以及調(diào)試過程中我們遇到了很多問題,經(jīng)過組員的努力和同學(xué)及老師的幫助問題得以順利解決,下面列舉了我們遇到的問題及其解決方法以供參考。1我們將程序打入電腦進(jìn)行匯編時(shí),發(fā)現(xiàn)匯編程序運(yùn)行后沒有生成相應(yīng)格式的文件,相反卻是滿頁的錯(cuò)誤提示,按照軟件的提示我們查找

17、問題,發(fā)現(xiàn)都是低級錯(cuò)誤,只要認(rèn)真即可避免。經(jīng)過正確的匯編后,可執(zhí)行文件生成,開始后進(jìn)入DOS運(yùn)行界面,屏幕上顯示的全是亂碼,經(jīng)過查找,最終我們找到問題癥結(jié)所在:緩沖區(qū)賦初值后沒有在其末尾賦入結(jié)束標(biāo)志字符$,經(jīng)過重新定義,問題解決。3亂碼問題解決后,屏幕顯示計(jì)數(shù)結(jié)果,但卻并沒有顯示在屏幕中央,這種問題只能是光標(biāo)定位程序IOSET調(diào)用出現(xiàn)錯(cuò)誤,在仔細(xì)檢查該程序后發(fā)現(xiàn)DX賦值錯(cuò)誤,將0027H改為0D27H后問題解決。4重新運(yùn)行程序時(shí),我們發(fā)現(xiàn)1/100秒值未從零開始變化而是從13開始遞變,經(jīng)過我們?nèi)齻€(gè)的努力和同學(xué)的幫助我們找到了錯(cuò)誤原因:AGING程序開始運(yùn)行時(shí),DH和DL(分別存放秒值和1/10

18、0秒值)在此前的過程之前DH和DL的值發(fā)生變化,因此須在AGAIN程序的開始將DH和DL置零,問題解決。5屏幕中央顯示結(jié)果時(shí),只有秒和百分之一秒顯示,沒有分顯示。經(jīng)檢查是顯示程序中沒有定義分顯示,加上分顯示程序后分秒正常跳動(dòng)。6我們添加宏定義不能運(yùn)行,沒有得到預(yù)期的效果。經(jīng)過我們組員的努力,發(fā)現(xiàn)應(yīng)該將宏展開置于宏定義后面。我們認(rèn)為宏展開放于最后,中間程序?qū)⑵渥兞扛淖?,使得最后不能將宏展開。7.在CLOUR程序段中,定義的是字體或屏幕顏色。開始時(shí)只有一半的屏幕顯示顏色。我們改變中間變量,發(fā)現(xiàn)是字符串長度設(shè)置的太少,然后定義字符串長度大一些,問題得以解決。六、程序運(yùn)行結(jié)果1、程序初始運(yùn)行2、控制字符控制運(yùn)行中七、心得體會經(jīng)過這次課程設(shè)計(jì),我覺得我有了很大的收獲,:1我大大地鍛煉了自己搞科研的能力,作為我們大學(xué)生,尤其是工科的大學(xué)生,對于科研能力,能夠自主開發(fā)課題,項(xiàng)目有著很高的要求,而我們很多大學(xué)生動(dòng)手研發(fā)的能力還不是很強(qiáng)。而通過這次課程設(shè)計(jì),使自己的研發(fā)能力有了很大堤提高。2.我對于工科設(shè)計(jì)的嚴(yán)謹(jǐn)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論