微機(jī)原理與匯編語言課程設(shè)計(jì)多功能定時(shí)器設(shè)計(jì)_第1頁
微機(jī)原理與匯編語言課程設(shè)計(jì)多功能定時(shí)器設(shè)計(jì)_第2頁
微機(jī)原理與匯編語言課程設(shè)計(jì)多功能定時(shí)器設(shè)計(jì)_第3頁
微機(jī)原理與匯編語言課程設(shè)計(jì)多功能定時(shí)器設(shè)計(jì)_第4頁
微機(jī)原理與匯編語言課程設(shè)計(jì)多功能定時(shí)器設(shè)計(jì)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中北大學(xué)微機(jī)原理與匯編語言課程設(shè)計(jì)任務(wù)書 2009/2010 學(xué)年第 二 學(xué)期學(xué) 院:電子與計(jì)算機(jī)科學(xué)技術(shù)學(xué)院專 業(yè):計(jì)算機(jī)科學(xué)技術(shù)學(xué) 生 姓 名:學(xué) 號:設(shè) 計(jì) 題 目:多功能定時(shí)器設(shè)計(jì)起 迄 日 期: 2010.6.12-2010.6.25設(shè) 計(jì) 地 點(diǎn):指 導(dǎo) 教 師:下達(dá)任務(wù)書日期: 2010 年 6 月 12 日微機(jī)原理與匯編語言課程設(shè)計(jì)任務(wù)書1設(shè)計(jì)目的:通過微機(jī)原理與匯編語言課程設(shè)計(jì),使學(xué)生根據(jù)所學(xué)的微機(jī)原理與匯編語言知識,進(jìn)一步學(xué)習(xí)掌握匯編語言程序設(shè)計(jì)知識,充分理解計(jì)算機(jī)內(nèi)部的管理、接口內(nèi)容以及系統(tǒng)功能調(diào)用。能針對一個(gè)簡單的控制或匯編語言程序設(shè)計(jì)項(xiàng)目,做出分析,設(shè)計(jì)其硬件、軟件,

2、達(dá)到預(yù)期的控制目的。2設(shè)計(jì)內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、條件、設(shè)計(jì)要求等):設(shè)計(jì)內(nèi)容:利用8086匯編語言,多功能定時(shí)器設(shè)計(jì)。設(shè)計(jì)要求: 主要功能:1、 具有7段數(shù)碼管顯示2、 圓盤指針式顯示3、 具有操作提示功能4、 帶夏令時(shí)/冬令時(shí)轉(zhuǎn)換5、 最小設(shè)定時(shí)間為1分鐘,最大設(shè)定時(shí)間:7天 。每天最多可置20組開與關(guān),每星期最多可設(shè)置140組,可參照某些手機(jī)上的定時(shí)器功能。6、 利用鍵盤鼠標(biāo)操作7、 菜單功能,所有功能可通過菜單執(zhí)行8、 文件讀寫,把設(shè)置信息寫入/讀出文件,定時(shí)信息等9、 整點(diǎn)音樂提醒(注意此處應(yīng)設(shè)計(jì)成背景音樂)10、 顯示修改當(dāng)前系統(tǒng)時(shí)間日期11、 秒表功能,具有起停等功能

3、12、 數(shù)碼管和圓盤鐘表大小及位置可調(diào)3設(shè)計(jì)工作任務(wù)及工作量的要求:組長王小帆:與同組同學(xué)協(xié)商完成本設(shè)計(jì)的實(shí)現(xiàn)方法和原理,合理分配所設(shè)計(jì)軟件的功能模塊,督促同組其他成員獨(dú)立完成各自負(fù)責(zé)的模塊,以及將全組其他同學(xué)的軟件進(jìn)行連接,完成整個(gè)設(shè)計(jì)任務(wù)。王小帆:繪制鐘表(包括數(shù)碼和模擬鐘表)杜龍:聲音編程,如制作背景音樂及嘀嗒聲徐龍 孔艷萍:文件讀寫,如定時(shí)時(shí)間是否聲音提醒,是否重復(fù)重復(fù)方式等等等陳繼強(qiáng):鍵盤及鼠標(biāo)操作,如設(shè)置時(shí)間,定時(shí)開始結(jié)束等其他沒有提及的功能由組長協(xié)同組員分配。在設(shè)計(jì)內(nèi)容完成的條件下,編寫微機(jī)原理與匯編語言課程設(shè)計(jì)說明書中北大學(xué)微機(jī)原理與匯編語言課 程 設(shè) 計(jì) 說 明 書學(xué)生姓名:

4、孔艷萍學(xué) 號:0706034448學(xué) 院:電子計(jì)算機(jī)科學(xué)技術(shù)專 業(yè):計(jì)算機(jī)科學(xué)技術(shù)題 目:多功能定時(shí)器成績 指導(dǎo)教師潘廣貞 雷海衛(wèi) 喬道跡2010 年 6月24日1. 引言通過微機(jī)原理與匯編語言課程設(shè)計(jì),使學(xué)生根據(jù)所學(xué)的微機(jī)原理與匯編語言知識,進(jìn)一步學(xué)習(xí)掌握匯編語言程序設(shè)計(jì)知識,充分理解計(jì)算機(jī)內(nèi)部的管理、接口內(nèi)容以及系統(tǒng)功能調(diào)用。能針對一個(gè)簡單的控制或匯編語言程序設(shè)計(jì)項(xiàng)目,做出分析,設(shè)計(jì)其硬件、軟件,達(dá)到預(yù)期的控制目的。2需求分析“時(shí)鐘功能處理程序”是運(yùn)行于windows 系統(tǒng)下的應(yīng)用軟件,主要用于實(shí)現(xiàn)時(shí)鐘顯示 時(shí)鐘調(diào)整以及倒計(jì)時(shí)功能。此程序?yàn)橛脩籼峁┝艘粋€(gè)簡單的人機(jī)對話界面。在屏幕上顯示系統(tǒng)

5、當(dāng)前的時(shí)間以及操作方法,它可以接受用戶對系統(tǒng)系統(tǒng)時(shí)間 顏色 聲音的常規(guī)性修改,并在確認(rèn)修改后實(shí)現(xiàn)定時(shí)鬧鐘,畫面顏色更改等功能。3總體設(shè)計(jì) 下面從程序的整體流程、各個(gè)功能模塊以及數(shù)據(jù)結(jié)構(gòu)幾個(gè)方面進(jìn)行總體設(shè)計(jì)。 本程序的設(shè)計(jì)基本是參照微型計(jì)算機(jī)原理與接口技術(shù)教程里“匯編語言程序設(shè)計(jì)”一章中的dos功能調(diào)用,中斷程序的代碼,然后設(shè)計(jì)出本程序各子程序的代碼。 關(guān)于時(shí)鐘信息的更新,由于試了好久都無法常駐內(nèi)存,所以這里只好用最原始的辦法延時(shí)與循環(huán)。延時(shí)的子程序是參照其他教程中發(fā)聲程序的延時(shí)程序,利用in al,61h獲得與cpu頻率無關(guān)的延時(shí)。4. 詳細(xì)設(shè)計(jì)文件讀寫主要是在鍵盤上輸入信息,在界面上實(shí)現(xiàn)定時(shí)

6、器對聲音,顏色,倒計(jì)時(shí)的控制。press a to change the time 12-24 ! 按a鍵可實(shí)現(xiàn)時(shí)間12制到24制的轉(zhuǎn)換press c to edit the alarm time ! 按c鍵可實(shí)現(xiàn)對鬧鐘的設(shè)定。press q t to change color !按w=t可實(shí)現(xiàn)界面顏色的更改。press b to reset!按b鍵可以重置時(shí)間。press x to edit the final countdown!按x鍵可實(shí)現(xiàn)倒計(jì)時(shí)功能。press esc to exit esc鍵為推出此界面。否 是 否 是 否 是 否 是結(jié)束延時(shí)是s?call settime是q?是a?

7、call setdate判斷輸入?開始call show_menu ;顯示菜單更新時(shí)鐘信息call show_dt ;顯示時(shí)間 程序流程圖 5. 軟件測試圖1 總界面圖2 字母a12制到24制小時(shí)轉(zhuǎn)換圖3 字母t實(shí)現(xiàn)界面顏色的轉(zhuǎn)換6. 程序清單guangbiao macro num1,num2 ;帶參數(shù)的宏 mov bh,0h ;本宏用于置光標(biāo)的位置 mov ah,2h mov dh,num1 mov dl,num2 int 10hendmdispcolor macro color push ax push bx push dx push cx mov ah,02h ;設(shè)置調(diào)色板和邊框 mov

8、 dh,0 mov dl,0 mov bh,0 int 10h mov ah,9 ;讀取調(diào)色板和邊框 在當(dāng)前光標(biāo)處按指定屬性顯示字符 mov bl,color mov cx,2000 mov al, int 10h guangbiao 0,0 call showmenu pop cx pop dx pop bx pop axendm.model small.stack.data.code.startupjmp install;大海音樂(默認(rèn))freq dw 196,220 dw 262,262,262,262,262,220,196 dw 262,262,262,262,294,262,220

9、,262 dw 294,294,294,294,294,262,220 dw 294,294,294,294,330,294,330,392 dw 440,440,392,440,392,330 dw 294,294,330,294,262,220,196,220 dw 262,262,262,262,262,220 dw 262,196,220 dw 440,440,392,440,524,440 dw 392,330,294,262,220,196,220 dw 262,262,262,262,294,262 dw 262,330,392 dw 440,440,440,440,524,44

10、0 dw 392,392,392,440,392,330,294 dw 262,262,262,262,294 dw 330,330,294 dw 262,262,262,262,524,440 dw 392,392,392,440,392,330,392 dw 440,524,524,440,392 dw 392,330,392 dw 440,440,440,440,524,440 dw 392,392,392,440,392,330,294 dw 262,262,262,262,392 dw 330,330,294 dw 262,262,262,262,294,330 dw 392,392

11、,330,392,330,392 dw 440 dw 9,9,196,660,294,294,262 dw 262,-1 ;音樂頻率表 time dw 400,400 dw 400,200,400,400,800,400,400 dw 400,200,400,200,200,800,400,400 dw 400,200,400,400,800,400,400 dw 400,200,400,200,200,800,400,400 dw 400,800,400,800,400,400 dw 400,200,200,400,400,800,400,400 dw 400,200,400,400,800

12、,800 dw 1600,800,800 dw 400,800,400,800,400,400 dw 400,400,400,400,800,400,400 dw 400,800,400,800,400,200 dw 2400,400,400 dw 400,800,400,800,400,400 dw 400,800,200,200,800,400,400 dw 400,800,400,800,800 dw 2400,400,400 dw 400,800,400,800,400,400 dw 400,800,200,200,800,400,400 dw 800,400,800,400,200

13、dw 2400,400,400 dw 400,800,400,800,400,400 dw 400,800,200,200,800,400,400 dw 400,800,400,800,800 dw 2400,400,400 dw 400,800,400,800,400,400 dw 400,800,400,800,400,400 dw 3200 dw 800,400,400,400,400,400,400 dw 4000 ;延時(shí)表 freq0 dw 262,294,330,262 dw 330,349,392 dw 392,440,392,349,330,262 dw 294,196,262

14、 time0 dw 1600,800,800,1600 dw 400,400,400,400,800,800 dw 800,800,1600;兩只老虎音樂menudb *electronic clock* ,0ah,0dh db 1.press a to change the time 12-24 ! ,0ah,0dh db ,0ah,0dh db 2.press c to edit the alarm time ! (press s to stop),0ah,0dh db ,0ah,0dhdb 3.press x to edit the final countdown !(press s t

15、o stop) ,0ah,0dh db ,0ah,0dhdb 4.press q t to change color !,0ah,0dh db ,0ah,0dh db 5.press b to reset,0ah,0dhdb ,0ah,0dh db 6.press esc to exit,0ah,0dh,$ tc db please input the alarmtime (hh:mm:ss):,$tc_buff db 40 db ? db 40 dup (?)temp_hdb ?temp_mdb ?temp_sdb ?tx db please input the final countdow

16、n time(00-99):,$tx_buff db 40 db ? db 40 dup (?)txtemp db ?msg db current time is: time_h db ?,? db :time_m db ?,? db :time_sdb ?,?,0,0hoursdb ?secondsdb 0flag1db 0flag2db 0flag3db 0oldint1c dd ?newint1c procpush ax push bx push cx push dx push si push di push escmp flag1,01hjnz acdcall showtxtempac

17、d: mov ax,0200h ;獲取系統(tǒng)時(shí)間,chhours clminutes dhseconds,均為bcd碼格式 int 1ahmov hours,ch;把小時(shí)送到hours中,以防變換12和24進(jìn)制后出現(xiàn)異常 cmp flag2,01h jnz notchg cmp ch,12h jc notchg mov al,ch pushf sub al,12h das popf mov ch,alnotchg:cmp flag1,01h;判斷是否開始倒計(jì)時(shí)jnz notdocmp dh,secondsjz notdomov seconds,dhcmp txtemp,0hjz notdomov

18、 al,txtemppushfsub al,01hdas mov txtemp,alpopfnotdo: mov al,ch lea si,time_h call bcd mov al,cl lea si,time_m call bcd mov al,dh lea si,time_s call bcd mov ax,0b800h ;顯存地址 采用直接寫顯存的方法輸出字符 mov es,ax ;es:di 指向顯存地址 mov di,160*12+108d lea si,msgdisp: mov al,cs:si inc si or al,al jz disp0 ;cs=ds cld stosb

19、 inc di ;將cs:si指向的一個(gè)字節(jié)傳送到es:di jmp dispdisp0: pop es pop di pop si pop dx pop cx pop bx pop ax jmp cs:oldint1c ;新1ch中斷的事情做完后調(diào)用原來的1ch中斷iret;中斷返回bcd: mov ah,al shr ah,1 shr ah,1 shr ah,1 shr ah,1 and al,0fh add ax,00 xchg ah,al mov cs:si,ax retnewint1c endp;中斷結(jié)束showtxtemp procpush axpush espush dipush

20、 simov ax,0b800h mov es,ax ;es:di 指向顯存地址 mov di,160*10+130dmov al,txtempmov ah,alshr ah,1shr ah,1shr ah,1shr ah,1and al,0fhadd ax,00push axmov al,ahstosbinc dipop axstosbpop sipop dipop espop axretshowtxtemp endpedittime_c procpush axpush bxpush cxpush dxpushfmov ah,0ch;清除鍵盤 緩沖區(qū)int 21h guangbiao 14,

21、0mov dx,offset tc ;顯示設(shè)置鬧鈴時(shí)間的格式提示mov ah,09hint 21hmov dx,offset tc_buffmov ah,0ahint 21hguangbiao 15,0add dx,0hlea bx,tc_buffinc bxinc bxmov dh,bxsub dh,30h ;將輸入數(shù)值09的asc碼轉(zhuǎn)化成09的數(shù)字inc bxmov dl,bxsub dl,30hmov cl,10hmov al,dhmul cladd al,dlmov ch,almov temp_h,al;小時(shí)存放于temp_h變量中 inc bx inc bxmov dh,bx sub

22、 dh,30h inc bx mov dl,bx sub dl,30h mov cl,10h mov al,dh mul cl add al,dlmov ch,al mov temp_m,al ;分鐘存放于temp_m變量中 inc bx inc bx mov dh,bx sub dh,30h inc bx mov dl,bx sub dl,30h mov cl,10h mov al,dh mul cl add al,dlmov ch,almov temp_s,al ;秒鐘存放于temp_s變量中 popf pop dx pop cx pop bx pop axjmp compreteditt

23、ime_c endpedittime_x procpush axpush bxpush cxpush dxpushfmov ah,0ch;清除鍵盤 緩沖區(qū)int 21h guangbiao 15,0mov dx,offset tx ;顯示設(shè)置倒計(jì)時(shí)鬧鈴時(shí)間mov ah,09hint 21hmov dx,offset tx_buffmov ah,0ahint 21hguangbiao 16,0add dx,0hlea bx,tx_buffinc bxinc bxmov dh,bxsub dh,30h ;將輸入數(shù)值09的asc碼轉(zhuǎn)化成09的數(shù)字inc bxmov dl,bxsub dl,30hmo

24、v cl,10hmov al,dhmul cladd al,dlmov ch,almov txtemp,al;小時(shí)存放于txtemp變量中mov flag1,01h;設(shè)置標(biāo)志位,以判斷是否要求倒計(jì)時(shí)popf pop dx pop cx pop bx pop axretedittime_x endpchangecolor proc push ax in al,60h ;60h:鍵盤輸入數(shù)據(jù)緩沖區(qū) cmp al,10h jne i1 dispcolor 41h ;q顯示41h(紅底藍(lán)字)i1: cmp al,11h jne i2 dispcolor 20h ;w顯示20h(綠底黑字)i2: cmp

25、 al,12h jne i3 dispcolor 02h ;e顯示02h(黑底綠字)i3: cmp al,13h jne i4 dispcolor 40h ;r顯示40h(紅底黑字)i4: cmp al,14h jne i5 dispcolor 0f0h ;t顯示0f0h(白底黑字)i5: pop ax retchangecolor endpshowmenu procpush axpush dxmov ah,09hmov dx,offset menuint 21hpop dxpop axretshowmenu endpyinyue proc ;音樂子程序push cs pop dscmp fl

26、ag3,01hjnz l0mov si,offset freq0 mov di,offset time0jmp l1l0: mov si,offset freq mov di,offset timel1: mov cx,si cmp cx,-1 jz return mov bx,di call gensound add si,2 add di,2in al,60hcmp al,1fhjz return jmp l1return: mov flag1,0hmov flag3,0hjmp f0 ;鬧鈴音樂結(jié)束返回主界面yinyue endp gensound proc near push dx m

27、ov al,0b6h ;計(jì)數(shù)器選擇:計(jì)數(shù)器2;數(shù)據(jù)讀/寫格式:16 位計(jì)數(shù)先讀寫高字節(jié),后讀寫低字節(jié);工作方式:工作方式3;數(shù)制選擇:二進(jìn)制 out 43h,al ;43h可編程中斷計(jì)時(shí)器,控制字寄存器(模式設(shè)置端口,寫入方式控制字) mov dx,08h mov ax,3208h ;設(shè)置輸出頻率537096hz(dx:ax) div cx ;控制實(shí)際輸出頻率ax=537096hz/cx out 42h,al ;先寫入低 8位 mov al,ah out 42h,al ;后寫入高 8位(參數(shù)據(jù)讀/寫格式及計(jì)數(shù)器選擇) in al,61h ;取得設(shè)備控制寄存器開關(guān)量 mov ah,al ;暫存以

28、下次恢復(fù) or al,3 ;d0d1=11接通揚(yáng)聲器 out 61h,al ;設(shè)置設(shè)備控制寄存器開關(guān)量l2: push dx push ax mov dx,8h mov ax,0f05hs1: sub ax,1 sbb dx,0 jnz s1 pop ax pop dx dec bx jnz l2 mov al,ah out 61h,al pop dx retgensound endpcheck_c procpush axpush bxpush cxpush dxpush simov ax,0200hint 1ahmov ch,hours cmp ch,temp_h jnz cf cmp cl,temp_m jnz cf cmp dh,temp_sjnz cfcall yinyuecf:pop sipop dxpop cxpop bx

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論