微机与接口实验5模数、数模实验

  • 格式:doc
  • 大小:4.06 MB
  • 文档页数:13

微机与接口技术实验5 实验设备:LAB6000通用微控制器实验系统 实验用时4小时 实验内容:模数、数模实验 1.采用查表法,用DAC0809产生100Hz正弦输出模拟信号,用示波器检查波形。(8253 T0产生定时脉冲,8259 INT0向CPU中断)。 2.设计ADC0832模数采样程序,对电位器输出电压采样,并用发光二极管显示采样值。要求每秒采样并输出显示一次。(8253 T0产生定时脉冲,8259 INT0向CPU中断)。 3.在原理图上增加0809,0832芯片, 地址分别为10050H和100601H起(占16地址) 实验报告:程序清单,说明;电路原理图。 程序代码 1.

CONTROL equ 0c003h COUNT0 equ 0c000h COUNT1 equ 0c001h COUNT2 equ 0c002h CS0832 equ 0a000h

ICW1 equ 00010011b ; 单片8259, 上升沿中断, 要写ICW4 ICW2 equ 00100000b ; 中断号为20H ICW4 equ 00000001b ; 工作在8086/88 方式 OCW1 equ 11111110b ; 只响应INT0 中断 ,也响应INT1中断 CS8259A equ 09000h ; 8259地址 CS8259B equ 09001h data segment x db 128,203,249,249,203,128,53,7,7,53 CNT dw 0 CNNT dw 0 data ends code segment assume cs:code,ds:data

IEnter proc near ;中断程序 push ax push dx

mov al, [x+bx] mov dx, CS0832 out dx, al inc bx cmp bx,10 jb output mov bx,0

output: mov dx, CS8259A mov al, 20h ; 中断服务程序结束指令 out dx, al

pop dx pop ax iret IEnter endp

IInit proc ;初始化中断程序 mov dx, CS8259A mov al, ICW1 out dx, al

mov dx, CS8259B mov al, ICW2 out dx, al mov al, ICW4 out dx, al

mov al, OCW1 out dx, al ret IInit endp

start proc near mov al, 0 mov dx, CS0832 out dx, al mov al, 80h out dx, al mov al, 0ffh out dx, al ;新加的 ;初始化计时器 mov ax, data mov ds, ax mov al, 00110100B ; 计数器0,16位,方式2,二进制 mov dx, CONTROL out dx, al

mov ax, 4000 ;产生100Hz时钟信号 mov dx, COUNT0 out dx, al ; 计数器低字节 mov al, ah out dx, al ; 计数器高字节 ;中断程序存储 mov ax, 0 mov ds, ax

mov bx, 4*ICW2 ; 中断号 mov ax, code shl ax, 4 ; x 16 add ax, offset IEnter ; 中断入口地址(段地址为0) mov [bx], ax

mov ax, 0 inc bx inc bx mov [bx], ax ; 代码段地址为0

call IInit ;中断程序初始化结束 mov ax,data mov ds,ax sti mov bx,0

LP: ; 等待中断,并计数。 nop jmp LP

jmp $ start endp code ends end start 产生的波形图: 2. mode equ 082h PA equ 09000h CTL equ 09003h CS0809 equ 08000h

CONTROL equ 0c003h COUNT0 equ 0c000h COUNT1 equ 0c001h COUNT2 equ 0c002h CS0832 equ 0a000h

ICW1 equ 00010011b ; 单片8259, 上升沿中断, 要写ICW4 ICW2 equ 00100000b ; 中断号为20H ICW4 equ 00000001b ; 工作在8086/88 方式 OCW1 equ 11111110b ; 只响应INT0 中断 ,也响应INT1中断 CS8259A equ 0b000h ; 8259地址 CS8259B equ 0b001h data segment data ends code segment assume cs:code,ds:data

IEnter proc near ;中断程序 push ax push dx

mov al, 0 mov dx, CS0809 out dx, al ; 起动 A/D

mov cx, 40h loop $ ; 延时 > 100us

in al, dx ; 读入结果 mov dx, PA out dx, al

output: mov dx, CS8259A mov al, 20h ; 中断服务程序结束指令 out dx, al

pop dx pop ax iret IEnter endp

IInit proc ;初始化中断程序 mov dx, CS8259A mov al, ICW1 out dx, al mov dx, CS8259B mov al, ICW2 out dx, al

mov al, ICW4 out dx, al

mov al, OCW1 out dx, al ret IInit endp

start proc near ;初始化计时器 mov ax, data mov ds, ax mov al, 00110100B ; 计数器0,16位,方式2,二进制 mov dx, CONTROL out dx, al mov al, 01110100B ; 计数器1,16位,方式2,二进制 out dx, al

mov ax, 4000 ;产生100Hz时钟信号 mov dx, COUNT0 out dx, al ; 计数器低字节 mov al, ah out dx, al ; 计数器高字节

mov ax, 1000 ;产生100Hz时钟信号 mov dx, COUNT1 out dx, al ; 计数器低字节 mov al, ah out dx, al ; 计数器高字节

;中断程序存储 mov ax, 0 mov ds, ax

mov bx, 4*ICW2 ; 中断号 mov ax, code shl ax, 4 ; x 16 add ax, offset IEnter ; 中断入口地址(段地址为0) mov [bx], ax

mov ax, 0 inc bx inc bx mov [bx], ax ; 代码段地址为0

call IInit ;中断程序初始化结束 mov ax,data mov ds,ax sti ;原来有的

mov bx, 0f123h mov ax, 5678h mov [bx], ax mov ax, [bx] mov ax, 1234h mov bx, 5678h add ax, bx mov bx, 400h mov [bx], ax

mov al, mode mov dx, CTL out dx, al again:

jmp again code ends end start 程序运行结果: 图中可见,当指示灯显示为11111111b时,电压表读得的数据是4.29V,那么按照理论结果,指示灯显示的数值与电压应该是线性关系。 显示数值 0 162 194 210 理论电压(V) 0 2.73 3.26 3.53

实测电压(V) 0 2.77 3.31 3.53