⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 da_ad.txt

📁 本来是不想传此代码的
💻 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 + -