?? da_ad.txt
字號:
;***********DAC0832_PROGRAM1***********************
ioport equ 0dd80h-280h
io0832a equ ioport+290h
code segment
assume cs:code
start:
mov cl,0
mov dx,io0832a
lll:
mov al,cl
out dx,al
inc cl;cl加1
inc cl;2
inc cl;3
inc cl;4
inc cl;5
inc cl;6
inc cl;7
push dx
mov ah,06h;判斷是否有鍵按下
mov dl,0ffh
int 21h
pop dx
jz lll;若無則轉lll
mov ah,4ch
int 21h
code ends
end start
;***********DAC0832_PROGRAM2***********************
data segment
ioport equ 0dd80h-0280h
io0832a equ ioport+290h
sin db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh
db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h
db 80h,66h,4eh,38h,25h,15h,09h,04h
db 00h,04h,09h,15h,25h,38h,4eh,66h;正弦波數據
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov da,ax
ll:
mov si,offset sin;置正弦波數據的偏移地址為SI
mov bh,32;一組輸出32個數據
lll:
mov al,[si];將數據輸出到D/A轉換器
mov dx,io0832a
out dx,al
mov ah,06h;any key pressed
mov dl,0ffh
int 21h
jne exit
mov cx,1
delay:
loop delay;延時
inc si;取下一個數據
dec bh
jnz lll;若未取完32個數據則轉lll
jmp ll
exit:
mov ah,4ch
int 21h
code ends
end start
;***********ADC0809_PROGRAM1***********************
ioport equ 0dd80h-0280h
io0809a equ ioport+298h
code segment
assume cs:code
start:
mov dx,io0809a;啟動A/D轉換器
out dx,al
mov cx,0ffh;延時
delay:
loop delay
in al,dx;從A/D轉換器輸入數據
mov bl,al;將AL保存到BL
mov cl,4
shr al,cl;將AL右移四位
call disp;調顯示子程序顯示其高四位
mov al,bl
mov al,0fh
call disp;調顯示子程序顯示其低四位
mov ah,02
mov dl,20h;加回車符
int 21h
mov dl,20h
int 21h
push dx
mov ah,06h;判斷是否有鍵按下
mov dl,0ffh
int 21h
pop dx
je start;若沒有轉START
mov ah,4ch
int 21h
disp proc near;顯示子程序
mov dl,al
cmp dl,9;比較DL是否大于9
jle ddd;若不大于則為‘0’-‘9’,加30h為其ASCII碼
add dl,7;否則為‘A’‘F’,再加7
ddd:
add dl,30;顯示
mov ah,02h
int 21h
ret
disp endp
code end
end start
;***********ADC0809_PROGRAM2***********************
ioport equ 0dd80h-0280h
io0809b equ ioport+299h
code segment
assume cs:code
start:
mov ax,0012h;設屏幕顯示方式為VGA 640*480模式
int 10h
and cx,0;cx為橫坐標
draw:
mov dx,io0809b;啟動A/D轉換器信道1
out dx,al
mov bx,500;延時
delay:
dec bx
jnz delay
in al,dx;讀入數據
mov ah,0
mov dx,368;dx為縱坐標
sub dx,ax
mov al,0ah;設置顏色
mov ah,0ch;畫點
int 10h
cmp cx,639;一行是否滿
jz start;是則轉start
inc cx;繼續畫點
push dx
mov ah,06h;是否有鍵按下
mov dl,0ffh
int 21h
pop dx
je draw;無,則繼續畫點
mov ax,0003;有恢復屏幕為字符方式
int 10h
mov ah,4ch;返回DOS
int 21h
code ends
end start
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -