第13次作业参考解答 - 完整版 - 889507230

更新时间:2024-04-30 19:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第13次作业参考解答

70 .某PC/XT的D/A接口使用DAC0832。有关信号接线如图,其输出电压Vout和输入数字量之间的对应关系如表所列(线性关系)。欲使V out周期性变化如波形图所示(周期可以自定),请用汇编语言编写有关控制部分程序。

解:此题训练两方面的能力:

⑴硬件

①对系统总线的接线能分析该芯片及其中每个端口的I/O地址(用符号表示)。 ②对DAC0832根据接线知道是工作于两级缓冲方式。 ⑵软件

①对所有I/O接口的IN/OUT指令都要结合接口电路理解指令的执行效果。此处CPU用POT0执行OUT指令将待转换字节送到DAC0832的输入寄存器,CPU再用POT1执行OUT指令将DAC0832输入寄存器的内容送到转换寄存器并启动转换。

② DAC0832输入的数值变化规律决定其输出的波型,分析此题的波型,先从零点逐次递增,达到最大值后变为递减减到最小值后又重复递增……从表中可查出起点、最高点、最低点对应的数字量。至于波型的周期,可以在相邻的两次数值输出指令之间,加进若干条指令循环执行,实现软件延时,调整循环次数即改变了波型的周期。

MOV AL, 7FH ;初始电压0

LP: MOV BL, 1 ;用寄存器来作增减比直接用增减1指令便于调解步距,

; 比用立即数加减执行快,但要注意寄存器的保护。

MOV BH, -1 ;用于下降波形阶段

- 1 -

UP: MOV DX, POT0

OUT DX, AL ;从接线图看出,0832在这里工作于双缓冲方式,用POT0输出 MOV DX, POT1 ;只是把数据送到0832的输入寄存器,须再用POT1输出一次

OUT DX, AL ;才真正启动一次转换。应是加1的循环,

; 加到最大值FFH后才变成减1,减到最小值0后又重复做加1。

CALL DELAY ;把延时定义成一个过程便于调整波形周期 ADD AL, BL

CMP AL, 0FFH ;AL=FFH这个数值没有输出就转到减1 JNZ UP

DOWN: MOV DX, POT0 ; 下降。不是用POT1输出下降。同上解释,是双缓冲

OUT DX, AL MOV DX, POT1 OUT DX, AL CALL DELAY

ADD AL, BH

CMP AL, 0 JNZ DOWN

JUMP UP ;波形不停止

DELAY: MOV CX, 40 ;延时子程序 DLA: DEC CX JNE DLA RET

- 2 -

本文来源:https://www.bwwdw.com/article/54lg.html

Top