




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、微機原理與接口技術(shù)課程設(shè)計姓名: *班級學(xué)號: *任課老師: * 一、 實驗課題交通信號燈控制系統(tǒng)二、 實驗?zāi)康脑谑煜?086/8088指令系統(tǒng)的基礎(chǔ)上,掌握8086/8088匯編語言程序設(shè)計方法;掌握8259可編程中斷控制器,8255可編程并行接口、8253可編程定時/計數(shù)器的應(yīng)用三、實驗要求1、模擬交通信號燈(分a、b兩組)的紅、黃、綠燈(實驗箱中的發(fā)光二極管)交替變換的過程。2、在實驗箱的led顯示器上顯示當(dāng)前剩余時間(每秒更新一次,倒計時)。a組、b組之間時間關(guān)系如下:a組b組綠燈26秒紅燈30秒黃燈4秒紅燈30秒綠燈26秒黃燈4秒 四、 實驗設(shè)備pc機一臺、實驗箱一個(8086、82
2、59、8255、8253芯片及相關(guān)電路、發(fā)光二極管六只)及導(dǎo)線若干。五、 設(shè)計1、 設(shè)計思路(1)分析問題各端口應(yīng)用代碼實現(xiàn)(2)具體應(yīng)用(8255的b口做燈信號的輸出,a口做位選碼的輸出,c口做led的輸出。)(3)實驗內(nèi)容1、系統(tǒng)中,8259采用初始化命令字icw1、icw2、icw4和操作命令字ocw1,允許內(nèi)部中斷irq0和外部中斷irq12、系統(tǒng)中,8255選用(10000000)方式選擇字,a組工作0方式,a端口輸出,pc3-pc7輸出,b組0方式,b端口輸出,pc3-pc0輸出3、系統(tǒng)中,8253選用(00110101)選擇零號端口讀寫兩個字節(jié),工作方式2(頻率發(fā)生器)二十進制2
3、、程序流程 開始初始化8259初始化8255初始化8253設(shè)置中斷向量設(shè)置交通燈初態(tài)顯示時間啟動計數(shù)器結(jié)束3、 電路原理圖1.193mhz 8253 gate0 clk0 out0 irq08259irq1圖1 系統(tǒng)硬件電路圖位選碼 pb0pb78255 pc4pc7 pc0pc3 pa0pa7kk1-發(fā)光二極管電路紅燈綠燈adp數(shù)碼管顯示模塊4、 設(shè)計代碼stack segment stack dw 64 dup(?)stack endsdata segmenttimer db 00h,30h;irq0中斷次數(shù),通行剩余時間(a道30秒,b道30秒)初始設(shè)為b道通行tab db 3fh,06
4、h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;七段碼,用于顯示時間,順序不可調(diào)換disoff db 00h,00h,00h,00h ;led顯示器緩沖區(qū),數(shù)字(剩余時間)的個位和十位roddb00h;當(dāng)前道路通行狀態(tài)(00:為a通行道;01為b通行)lightdb 0d7h;信號燈的輸出信號(11010111) kk1 db 00h ;暫停開關(guān)kk1計數(shù)lightzt db 00hdata endscode segment assume cs:code,ds:data,ss:stackstart:mov ax,0000h ;數(shù)據(jù)段清零 mov ds,ax ;填寫中斷向量
5、表 mov ax,offset irq0 ;提取irq0的中斷處理程序的偏移地址add ax,2000h ;加載時ip=2000h(絕對地址)mov si,0020h ;中斷號0的矢量地址為(20h-23h)mov si,ax ;填寫中斷處理程序的偏移地址寫進中斷向量表mov ax,0000hmov si,0022hmov si,ax ;填寫中斷處理程序的段地址寫進中斷向量表mov ax,offset irq1 add ax,2000hmov si,0024h ;中斷號1的矢量地址為(24h-27h)mov si,axmov ax,0000hmov si,0026hmov si,ax;加載數(shù)據(jù)
6、段 mov ax,datamov ds,ax;8259初始化mov al,13h ;8259初始化icw1(00010011)單片方式需寫icw4out 20h,al ;端地址a0=0mov al,08h ;icw2(00001000)中斷向量號的高五位(000001)out 21h,almov al,01h ;icw4(00000001)一般全嵌套,非緩沖,非自動中斷結(jié)束,十六位機系統(tǒng)out 21h,al ;特征位:d7-d5=000mov al,0fch ;ocwl允許irq0、irq1中斷out 21h,al;8255初始化mov al,80h ;(10000000)方式選擇字,a組工作
7、0方式,a端口輸出,pc3-pc7輸出,b組0方式,b端口輸出,pc3-pc0輸出out 63h,al ;初始化8253mov al,35h ;(00110101)選擇零號端口讀寫兩個字節(jié),工作方式2(頻率發(fā)生器)二十進制out 43h,almov ax,380 ;定時(頻率乘以時間)out 40h,al ;低字節(jié)mov al,ahout 40h,al ;高字節(jié)sti ;開中斷(允許cpu接收中斷)m:call disp2 cmp kk1,1jz zt ;調(diào)用時間顯示函數(shù)cmp timer+1,04h ;判斷是否到了最后4秒,到了則跳轉(zhuǎn)jz r1cmp timer+1,00h ;判斷通行時間是
8、否結(jié)束,到了則跳轉(zhuǎn)jz r2jmp disp1 ;如時間大于五秒,則直接按當(dāng)前方式顯示信號燈r1: cmp rod,00h ;如到了最后五秒,則判斷是a道通行否? rod=00h為a道 jz r12 ;如是a道通行,則改變狀態(tài)r11:mov light,7bh ;(01111110)改變?yōu)閍道紅,b道黃 jmp disp1 ;信號輸出r12:mov light,0b7h ;(10110111)改變?yōu)閍道黃,b道紅jmp disp1r2: cmp rod,00h ;改變通行狀態(tài) jz r22r21:mov light,0d7h ;如果當(dāng)前b道通行結(jié)束,則切換為a道 mov rod,00h mov
9、 timer+1,30h ;a道通行時間30秒 jmp disp1r22:mov rod,01h ;如果當(dāng)前a道通行結(jié)束,則切換為b道 rod=01h為b道 mov light,7dh mov timer+1,30h jmp disp1 ;b道通行時間30秒zt:jmp m disp1: ;燈信號輸出函數(shù)mov al,light ;將燈信號輸出到8255的b口out 61h,alstijmp m irq0: push ax ;現(xiàn)場保護 push cxpushf mov al,timer ;取80次中斷請求為一秒 incalmovtimer,alcmpal40h ;1秒判斷?jnem1 ;不到則
10、跳轉(zhuǎn)mov al,00h ;毫秒數(shù)清零 mov timer,al moval,timer+1 ;剩余時間減1sub al,01hdas ;調(diào)整為壓縮bcd碼mov timer+1,alm1:mov al,20h ;中斷復(fù)位out 20h,alpopfpop cxpop axstiiretirq1: ;暫停(恢復(fù))push axpushfmov al,kk1cmp al,00h ;判斷當(dāng)前的狀態(tài):00為通行,01為暫停jne m2inc al ;改變當(dāng)前狀態(tài)mov kk1,al mov al,0fdh ;(11111101)關(guān)irq0中斷,開irq1中斷out 21h,almov al,ligh
11、tmov lightzt,al ;/mov al,77h;(01110111)大、小道均為紅燈 out 61h,aljmp m3m2: ;恢復(fù)mov al,00hmov kk1,almov ax,lightzt ;/out 61h,almov al,0fch ;(11111100)開irq0、irq1中斷out 21h,alstim3: mov al,20hout 20h,alpopfpop axstiiretdisp2: ;時間顯示函數(shù)mov al,timer+1;al=30h ax=?30hand al,0fh;ax=0000hmov disoff+3,al;disoff+3=00h di
12、soff db 03h,00h,03h,00h mov disoff+1,al;disoff+1=00h mov al,timer+1;al=30hmov cl,04h;cl=04hshr al,cl;al=03hmov disoff+2,al;disoff+2=03h mov disoff,al;disoff=03h mov si,offset disoff ;緩沖區(qū)的偏移地址 mov dl,0f7h ;(11110111)將位選碼初值送dl mov al,dl;al=0f7hagain:out 60h,al ;從a口輸出位選碼 mov al,si mov bx,offset tab ;七段
13、碼的偏移地址 ax=0003h bx=tab and ax,00ffh xlat ;mov al,bx+ax ;將顯示七段碼送alout 62h,al ;將al轉(zhuǎn)換成七段碼從b口輸出 call dally ;調(diào)用延時1ms子程序inc si ;si=si+1 mov al,dl test al,01h ;4位顯示完否? jz m4 ror al,01h ;dl循環(huán)右移一位 mov dl,al jmp againm4: retdally: ;循環(huán)256次mov cx,0010h ;延時子程序t1: mov ax,0010h t2: dec ax jnz t2 loop t1 retcode ends end start六、 心得體會這周關(guān)于交通燈的設(shè)計是對我來說就是一次挑戰(zhàn),雖然說代碼并非是我自己寫的,可以說我是參考別人的,但是理解所有的設(shè)計代碼我確實也花了不少時間,我除了要熟悉8259、8255、8253這些芯片,還得將它們合理的利用起來,由于之前對匯編知識的掌握相當(dāng)差,理解起來是相當(dāng)?shù)睦щy,但是慶幸的事,我向同學(xué)和老師
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論