微機原理程序_第1頁
微機原理程序_第2頁
微機原理程序_第3頁
微機原理程序_第4頁
微機原理程序_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、;*; ;* 數(shù)/模轉(zhuǎn)換實驗1 *;* 產(chǎn)生鋸齒波 *;*;io0832a equ 290hcode segment assume cs:codestart: mov cl,0 mov dx,io0832alll: mov al,cl out dx,al add cl,10 push dx mov ah,06h ;判斷是否有鍵按下 mov dl,0ffh int 21h pop dx jz lll ;若無則轉(zhuǎn)LLL mov ah,4ch ;返回 int 21hcode ends end start;*;* 數(shù)/模轉(zhuǎn)換實驗2 *;* 產(chǎn)生正弦波 *;*;data segmentio0832a e

2、qu 290h Sin db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96hdb 80h,66h,4eh,38h,25h,15h,09h,04hDb 00h,04h,09h,15h,25h,38h,4eh,66h ;正弦波數(shù)據(jù)data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,axll: mov si,offset sin ;置正弦波數(shù)據(jù)的偏移地址為SI mov bh,32 ;一組輸出32個數(shù)據(jù)l

3、ll: mov al,si ;將數(shù)據(jù)輸出到D/A轉(zhuǎn)換器 mov dx,io0832a out dx,al mov ah,06h mov dl,0ffh int 21h jne exit mov cx,1delay: loop delay ;延時 inc si ;取下一個數(shù)據(jù) dec bh jnz lll ;若未取完32個數(shù)據(jù)則轉(zhuǎn)lll jmp llexit: mov ah,4ch ;退出 int 21hcode ends end start;*;* AD轉(zhuǎn)換器2-示波器 *;* 采集數(shù)據(jù)在屏幕是作圖 *;*;io0809b equ 299hcode segment assume cs:code

4、start: mov ax,0012h ;設(shè)屏幕顯示方式為VGA 640X480模示 int 10hstart1: mov ax,0600h int 10h ;清屏 and cx,0 ;cx為橫坐標draw: mov dx,io0809b ;啟動A/D轉(zhuǎn)換器通道1 out dx,al mov bx,200;500 ;延時delay: dec bx jnz delay in al,dx ;讀入數(shù)據(jù) mov ah,0 mov dx,368 ;dx為縱坐標 sub dx,ax mov al,0ah ;設(shè)置顏色 mov ah,0ch ;畫點 int 10h cmp cx,639 ;一行是否滿 jz s

5、tart1 ;是則轉(zhuǎn)start inc cx ;繼續(xù)畫點 push dx mov ah,06h ;是否有鍵按下 mov dl,0ffh int 21h pop dx je draw ;無,則繼續(xù)畫點 mov ax,0003 ;有恢復(fù)屏幕為字符方式 int 10h mov ah,4ch ;返回 int 21hcode endsend start;*;*8251串行通訊(自發(fā)自收)*;*;data segment io8253a equ 280h io8253b equ 283h io8251a equ 2b8h io8251b equ 2b9h mes1 db 'you can play

6、 a key on the keybord!',0dh,0ah,24h mes2 dd mes1data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8253b ;設(shè)置8253計數(shù)器0工作方式 mov al,16h out dx,al mov dx,io8253a mov al,52 ;給8253計數(shù)器0送初值 out dx,al mov dx,io8251b ;初始化8251 xor al,al mov cx,03 ;向8251控制端口送3個0 delay: call out

7、1 loop delay mov al,40h ;向8251控制端口送40H,使其復(fù)位 call out1 mov al,4eh ;設(shè)置為1個停止位,8個數(shù)據(jù)位,波特率因子為16 call out1 mov al,27h ;向8251送控制字允許其發(fā)送和接收 call out1 lds dx,mes2 ;顯示提示信息 mov ah,09 int 21hwaiti: mov dx,io8251b in al,dx test al,01 ;發(fā)送是否準備好 jz waiti mov ah,01 ;是,從鍵盤上讀一字符 int 21h cmp al,27 ;若為ESC,結(jié)束 jz exit mov d

8、x,io8251a inc al out dx,al ;發(fā)送 mov cx,40hs51: loop s51 ;延時next: mov dx,io8251b in al,dx test al,02 ;檢查接收是否準備好 jz next ;沒有,等待 mov dx,io8251a in al,dx ;準備好,接收 mov dl,al mov ah,02 ;將接收到的字符顯示在屏幕上 int 21h jmp waitiexit: mov ah,4ch ;退出 int 21hout1 proc near ;向外發(fā)送一字節(jié)的子程序 out dx,al push cx mov cx,40hgg: loo

9、p gg ;延時 pop cx retout1 endpcode endsend start;8259-1.asm;8259中斷查詢方式應(yīng)用實驗;*; 2008年03月為8259應(yīng)用修改;*I8259_1 EQU 2B0H ;8259的ICW1端口地址I8259_2 EQU 2B1H ;8259的ICW2端口地址I8259_3 EQU 2B1H ;8259的ICW3端口地址I8259_4 EQU 2B1H ;8259的ICW4端口地址O8259_1 EQU 2B1H ;8259的OCW1端口地址O8259_2 EQU 2B0H ;8259的OCW2端口地址O8259_3 EQU 2B0H ;8

10、259的OCW3端口地址data segment mes1 db 'you can play a key on the keyboard!',0dh,0ah,24h mes2 dd mes1 mess1 db 'Hello! This is interrupt * 0 *!',0dh,0ah,'$' mess2 db 'Hello! This is interrupt * 1 *!',0dh,0ah,'$' mess3 db 'Hello! This is interrupt * 2 *!',0dh

11、,0ah,'$' mess4 db 'Hello! This is interrupt * 3 *!',0dh,0ah,'$' mess5 db 'Hello! This is interrupt * 4 *!',0dh,0ah,'$' mess6 db 'Hello! This is interrupt * 5 *!',0dh,0ah,'$' mess7 db 'Hello! This is interrupt * 6 *!',0dh,0ah,'$'

12、 mess8 db 'Hello! This is interrupt * 7 *!',0dh,0ah,'$'data endsstacks segment db 100 dup(?)stacks endsSTACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:stacks,ES:DATA.386START: mov ax,data mov ds,ax mov es,ax mov ax,stacks mov ss,ax MOV DX,I8259_1 ;

13、初始化8259的ICW1 MOV AL,13H ;邊沿觸發(fā)、單片8259、需要ICW4 OUT DX,AL MOV DX,I8259_2 ;初始化8259的ICW4 MOV AL,0B0H ;非自動結(jié)束EOI OUT DX,AL ;MOV AL,00H ;OUT DX,AL MOV AL,03H OUT DX,AL MOV DX,O8259_1 ;初始化8259的OCW1 MOV AL,00H ;打開IR0和IR1的屏蔽位 OUT DX,AL QUERY: MOV AH,1 ;判斷是否有按鍵按下 INT 16H JNZ QUIT ;有按鍵則退出 MOV DX,O8259_3 ;向8259的OC

14、W3發(fā)送查詢命令 MOV AL,0CH OUT DX,AL IN AL,DX ;讀出查詢字 MOV AH,AL AND AL,80H TEST AL,80H ;判斷中斷是否已響應(yīng) JZ QUERY ;沒有響應(yīng)則繼續(xù)查詢 MOV AL,AH AND AL,07H CMP AL,00H JE IR0ISR ;若為IR0請求,跳到IR0處理程序 CMP AL,01H JE IR1ISR ;若為IR1請求,跳到IR1處理程序 CMP AL,02H JE IR2ISR CMP AL,03H JE IR3ISR CMP AL,04H JE IR4ISR CMP AL,05H JE IR5ISR CMP A

15、L,06H JE IR6ISR CMP AL,07H JE IR7ISR JMP QUERYIR0ISR: MOV AX,DATA MOV DS,AX MOV DX,offset mess1 ;顯示提示信息 MOV AH,09 INT 21H JMP EOIIR1ISR: MOV AX,DATA MOV DS,AX MOV DX,offset mess2 ;顯示提示信息 MOV AH,09 INT 21H JMP EOIIR2ISR: MOV AX,DATA MOV DS,AX MOV DX,offset mess3 ;顯示提示信息 MOV AH,09 INT 21H JMP EOIIR3IS

16、R: MOV AX,DATA MOV DS,AX MOV DX,offset mess4 ;顯示提示信息 MOV AH,09 INT 21H JMP EOIIR4ISR: MOV AX,DATA MOV DS,AX MOV DX,offset mess5 ;顯示提示信息 MOV AH,09 INT 21H JMP EOIIR5ISR: MOV AX,DATA MOV DS,AX MOV DX,offset mess6 ;顯示提示信息 MOV AH,09 INT 21H JMP EOIIR6ISR: MOV AX,DATA MOV DS,AX MOV DX,offset mess7 ;顯示提示信

17、息 MOV AH,09 INT 21H JMP EOIIR7ISR: MOV AX,DATA MOV DS,AX MOV DX,offset mess8 ;顯示提示信息 MOV AH,09 INT 21HEOI: MOV DX,O8259_2 ;向8259發(fā)送中斷結(jié)束命令 MOV AL,20H OUT DX,AL JMP QUERY QUIT: MOV AX,4C00H ;結(jié)束程序退出 INT 21HCODE ENDS END START;*;* DMA傳送實驗(塊傳送) *;* 2008年2月為8237擴展板修改 *;*;io8237 equ 280h ;從8237地址code segmen

18、t assume cs:codestart: mov ax,0D000h mov es,ax mov bx,4000h mov cx,0ffH;傳輸個數(shù) mov dl,40h;字符Arep1: inc dl mov es:bx,dl inc bx cmp dl,5ah jnz ss1 mov dl,40hss1: loop rep1 mov dx,18h ;關(guān)閉主8237 mov al,04h out dx,al mov dx,1dh ;復(fù)位主8237 mov al,00h out dx,al mov dx,18h ;開啟主8237,DACK信號高有效 mov al,80h out dx,al

19、 mov dx,1bh ;主8237為級聯(lián)方式 mov al,0c0h out dx,al mov dx,io8237+08h ;關(guān)閉從8237 mov al,04h out dx,al mov dx,io8237+0dh ;復(fù)位從8237 mov al,00h out dx,al mov dx,io8237+02h ;寫目的地址低位 mov al,00h out dx,al mov dx,io8237+02h ;寫目的地址高位 mov al,42h out dx,al mov dx,io8237+03h ;傳送字節(jié)數(shù)低位 mov al,0ffh out dx,al mov dx,io8237

20、+03h ;傳送字節(jié)數(shù)高位 mov al,00h out dx,al mov dx,io8237+00h ;源地址低位 mov al,00h out dx,al mov dx,io8237+00h ;源地址高位 mov al,40h out dx,al mov dx,io8237+0bh ;通道1寫傳輸,地址增 mov al,85h out dx,al mov dx,io8237+0bh ;通道0讀傳輸,地址增 mov al,88h out dx,al mov dx,io8237+08h ;DREQ低電平有效,存儲器到存儲器,開啟從8237 mov al,41h out dx,al mov d

21、x,io8237+09h ;通道1請求 mov al,04h out dx,al mov cx,0F000hdelay: loop delay mov ax,0D000h mov es,ax mov bx,04200h;目的地址起始 mov cx,0ffh;讀出字符個數(shù)rep2: mov dl,es:bx mov ah,02h int 21h inc bx loop rep2 mov ax,4c00h int 21h code ends end start;*;* 8253分頻 *;*io8253a equ 280hio8253b equ 281hio8253c equ 283hcode se

22、gment assume cs:codestart:mov dx,io8253c ;向8253寫控制字 mov al,36h ;使0通道為工作方式3 out dx,al mov ax,1000 ;寫入循環(huán)計數(shù)初值1000 mov dx,io8253a out dx,al ;先寫入低字節(jié) mov al,ah out dx,al ;后寫入高字節(jié) mov dx,io8253c mov al,76h ;設(shè)8253通道1工作方式2 out dx,al mov ax,1000 ;寫入循環(huán)計數(shù)初值1000 mov dx,io8253b out dx,al ;先寫低字節(jié) mov al,ah out dx,al ;后寫高字節(jié) mov ah,4ch ;程序退出 int 21h code ends end start;*;* 8253方式0計數(shù)器實驗 *;*;io8253a equ 283hio8253b equ 280hcode segment assume cs:codestart: mov al,14h ;設(shè)置8253通道0為工作方式2,二進制計數(shù) mov dx,io8253a out dx,al mo

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論