電子鐘課程設(shè)計(jì)_第1頁
電子鐘課程設(shè)計(jì)_第2頁
電子鐘課程設(shè)計(jì)_第3頁
電子鐘課程設(shè)計(jì)_第4頁
電子鐘課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理課程設(shè)計(jì) 一. 設(shè)計(jì)任務(wù):電子表設(shè)計(jì)要求:1. 實(shí)現(xiàn)秒、分、時(shí)的計(jì)時(shí),并顯示于屏幕中央;2. 能夠校時(shí);3. 能夠半點(diǎn)、整點(diǎn)報(bào)時(shí)。二. 設(shè)計(jì)原理:1.時(shí)鐘起始時(shí)間的設(shè)置先調(diào)用設(shè)置光標(biāo)子程序和清除屏幕子程序,調(diào)用dos操作系統(tǒng)模塊2,在顯示屏上顯示提示符“:”,再調(diào)用dos操作系統(tǒng)模塊10,提示要輸入時(shí)鐘的起始時(shí)間,輸入時(shí)間的格式是“時(shí):分:秒”。輸入的時(shí)間以字符串形式放在已定義的存儲器緩沖區(qū),繼而調(diào)用tran1和mul10子程序,將存放在存儲器緩沖區(qū)的ascii字符轉(zhuǎn)換成壓縮bcd碼,并將時(shí)、分、秒的值放置在寄存器ch、dh、dl中。2.延時(shí)程序調(diào)用time延時(shí)1s子程序(并未精確計(jì)算

2、),累加到存放秒值的寄存器dl中,并進(jìn)行十進(jìn)制調(diào)整。在累加的過程中,不斷地對時(shí)、分、秒進(jìn)行比較,秒不能等于60,分不能等于60,是不能等于24.秒等于限值時(shí),則使分值為0時(shí)值加1;時(shí)等于限值時(shí),就轉(zhuǎn)顯示屏輸出。3.時(shí)間顯示調(diào)用dos操作系統(tǒng)模塊9,可用來顯示存儲器內(nèi)字符串。由于顯示的字符串必須為ascii編碼,因?yàn)橐{(diào)用tran2轉(zhuǎn)換子程序?qū)⒓拇嫫鱟h、dh、dl內(nèi)壓縮bcd碼字符串轉(zhuǎn)換成ascii碼字符串,字符串最后以字符“$”結(jié)束,并按時(shí)、分、秒的順序送存儲器緩沖區(qū)內(nèi)。調(diào)用dos操作系統(tǒng)模塊9時(shí),(ds:dx)應(yīng)指向字符串首址。程序一旦進(jìn)入運(yùn)行,就將不間斷地在顯示屏顯示時(shí)間,要想使程序停止

3、運(yùn)行,可同時(shí)在鍵盤按下ctrl和break二鍵。4.校時(shí)校時(shí)系統(tǒng)我們采用了一個(gè)取鍵盤指令的中斷,在發(fā)現(xiàn)時(shí)間不正確之后,可以通過鍵盤cpu一個(gè)中斷請求,通過與鍵盤按鍵ascii碼的比較相同時(shí)返回初始化程序,重新輸入時(shí)間,最終達(dá)到校時(shí)的目的。具體程序如下:mov ah , 1int 16hcmp al,1bhjz next 5.半點(diǎn)、整點(diǎn)報(bào)時(shí) 當(dāng)分達(dá)到30時(shí),轉(zhuǎn)到報(bào)時(shí)程序,當(dāng)分到0時(shí),轉(zhuǎn)到報(bào)時(shí)程序。三框圖:c秒和60相等?(dl)0(al)(dh)分加1分和60相等?(dh)0(al)(ch)時(shí)加1時(shí)和24相等?顯示(dh)和0h相等報(bào)時(shí)字符顯示a開始n(ch)(al)置入時(shí)(bx)(bx)+1(

4、bx)(bx)+1(al)bxbcd碼轉(zhuǎn)為壓縮bcdnext:y(dh)(al)置入分 (bx)(bx)+1(bx)(bx)+1(al)bxbcd碼轉(zhuǎn)為壓縮bcd清屏光標(biāo)置中dxbuffer首地址鍵盤輸入字符串到緩沖區(qū)bxbuffer+2c延時(shí)鍵盤輸入esc,校時(shí)(al)(dl)“秒”加1(dl)(al)(dl)(al)置入秒a(al)bxbcd碼轉(zhuǎn)為壓縮bcd(bx)(bx)+1(bx)(bx)+1ascii碼轉(zhuǎn)為bcd碼bxbuffer+2ascii碼轉(zhuǎn)為bcd碼(bx)(bx)+1(bx)(bx)+1ascii碼轉(zhuǎn)為bcd碼ny(dh)和30h相等?(ch)0nyy四程序清單:dat s

5、egment buffer db 20 db ? db 20 dup (?)dat endssta segment para stack stack stapn db 100 dup (?) top equ length stapnsta endscod segment startproc far assume cs:cod,ds:dat,ss:sta mov ax,dat mov ds,ax mov ax,sta mov ss,ax mov ax,top mov sp,ax next: call ioclr call ioset mov dx,offset buffer mov ah,10

6、int 21h mov bx,offset buffer+2 call tran1 inc bx inc bx call tran1 inc bx inc bx call tran1 mov bx,offset buffer+2 mov al,bx call mul10 mov ch,al inc bx inc bx mov al,bx call mul10 mov dh,al inc bx inc bx mov al,bx call mul10 mov dl,al again: call time mov ah,1 int 16h cmp al,1bh jz next mov al,dl a

7、dd al,1 daa mov dl,al cmp al,60h jne display mov dl,0 mov al,dh add al,1 daa mov dh,al cmp al,60h jne display mov dh,0 mov al,ch add al,1 daa mov ch,al cmp al,24h jne display mov ch,0display: mov bx,offset buffer inc bx inc bx call ioclr call ioset mov al,ch call tran2 inc bx mov al,: mov bx,al inc

8、bx mov al,dh call tran2 inc bx mov al,: mov bx,al inc bx mov al,dl call tran2 cmp dh,30h jnz next2 next1: cmp dl,0 jnz next3 inc bx mov al,* mov bx,al inc bx mov al,: mov bx,al inc bx mov al,) mov bx,al inc bx mov al,07h mov bx,al jmp next3 next2: cmp dh,0 jnz next3 jmp next1 next3: inc bx mov al,$

9、mov bx,al push bx push cx push dx mov dx,offset buffer mov ah,9 int 21h pop dx pop cx pop bx jmp again ret start endp mul10 proc add al,al daa mov cl,al add al,al daa add al,al daa add al,cl daa mov cl,al inc bx mov al,bx add al,cl ret mul10endp tran1proc mov al,bx and al,0fhmov bx,alinc bxmov al,bx

10、and al,0fhmov bx,alret tran1 endp tran2proc mov cl,al shr al,1shr al,1shr al,1shr al,1or al,30hmov bx,alinc bxmov al,cland al,0fhor al,30hmov bx,alret tran2endp time proc push cx push ax mov ax,25000 waited: mov cx,30000 goon: loop goon dec ax jnz waited pop ax pop cx ret time endpioset proc push ax

11、 push bx push dx mov dx,0c20h mov bh,00 mov ah,02 int 10h pop dx pop bx pop ax retioset endp ioclr proc push ax push bx push cx push dx mov ax,0600h mov bh,7 mov cx,0 mov dx,184fh int 10h pop dx pop cx pop bx pop ax retioclr endp cod ends endstart半點(diǎn)截圖整點(diǎn)截圖五程序調(diào)試:所遇到的問題與解決:1、對延時(shí)時(shí)間的設(shè)置:當(dāng)計(jì)算機(jī)執(zhí)行命令時(shí),雖然快,但還是需

12、要一定的時(shí)間。此時(shí)間與計(jì)算機(jī)的主頻有關(guān)系,我們采用循環(huán)的方式來進(jìn)行延時(shí)。但我們所使用的計(jì)算機(jī)的cpu主頻比8086高,約為0.75ghz,故需要內(nèi)外兩個(gè)循環(huán)來實(shí)現(xiàn),內(nèi)循環(huán)為30000,外循環(huán)為25000,這樣延時(shí)約為1s。2、開始光標(biāo)不在屏幕中央,原因是ioset子程序中的光標(biāo)設(shè)計(jì)的位置不對,重新改變dx后,光標(biāo)到達(dá)屏幕中央。3、無法校時(shí):原因在于,控制校時(shí)的程序在前,而dispy最后是跳到again,循環(huán)不經(jīng)過程序,所以無法控制。解決:在again開始時(shí)加上校時(shí)的程序。4、校時(shí)后原先的時(shí)間還在屏幕上的下一行顯示。解決:在dispy開始加上call ioclr。5、檢查錯(cuò)誤過程中,系統(tǒng)提示“o

13、ut of memory”1)、原因:在某些程序段存在只有現(xiàn)場保護(hù)沒有現(xiàn)場恢復(fù)2)、解決辦法:通過系統(tǒng)運(yùn)行,發(fā)現(xiàn)錯(cuò)誤的行數(shù),找到相應(yīng)的位置,添加現(xiàn)場恢復(fù)語句。 六心得體會:微機(jī)原理與應(yīng)用課程是一門應(yīng)用性很強(qiáng)的課程,其中包括軟硬件的結(jié)合,接口技術(shù),中斷的處理。由于平時(shí)對硬件的接觸較少所以學(xué)習(xí)起來多少有些困難。但課程中融入了實(shí)驗(yàn),并且還有課程設(shè)計(jì)。對于理論知識的理解就更深刻了。通過這次微機(jī)原理課程設(shè)計(jì)學(xué)到了很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。而且我第一次感受到以前在上課的時(shí)候,老師經(jīng)常強(qiáng)調(diào)在寫一個(gè)程序的時(shí)候,一定要事先把程序原理方框圖畫出來的重要性。在課程設(shè)計(jì)中碰到的那些需要很多代碼才能完成的任務(wù),畫程序方框圖是很有必要的。因?yàn)橥ㄟ^程序方框圖,在做設(shè)計(jì)的過程中,我們每一步要做什么,每一步要完成什么任務(wù)都有一個(gè)很清楚的思路,而且在程序測試的過程中也有利于查錯(cuò)。本次課程設(shè)計(jì)的過程中遇到了很多問題,比如時(shí)間走得太快、光標(biāo)的位置無法定位等等。對每個(gè)問題的解決都是一種對知識的重新

溫馨提示

  • 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

提交評論