📄 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 + -