微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 25
┅
POP BX POP AX
IRET ;中断返回
第十章作业
10-3假设一8位T型电阻网络式DAC,其参考电压为-5V, Rf=R,则将输出的数了量为68H时, 输出电压为多少? 当获得的输出电压为4V时,应该向DAC送入的数字量是多少?
n?1解:U。=?RfVref?2iDi=?RfVref?D,Vref=-5V,Rf=R,所以D=68H,U0=5×68H/256=2.03125V;
n2R2nR0U0=4V,则D=4/5*256=204.8≈205=C0H
10-4利用图10.5的电路,如果DAC0832的地址为3004H,写出产生最低点为1V,最高点为4V的三角波(波形如图10.20所示)程序片段。如果采用同样的程序,试问如果电路改为图10.7所示的双极应用,输出的波形是怎样的? 4V 1V 0V
图10.20 1-4V三角波
解:1V对应的数字量D1V=1/5*256=51.2≈51,4V对应的数字量D4V=4/5*256=204.8≈205=C0H 参考程序片段如下: DLV EQU 51 DHV EQU 205
MOV DX,3004H
或
MOV DX,3A9H MOV AL,DLV
REPLP1: OUT DX,AL
CMP AL,DHV JB INCDV OUT DX,AL
MOV AL,DLV CMP AL,DHV JLE INCD OUT DX,AL CMP AL,DLV JA DEC0 JMP INC0
INC0: OUT DX,AL
DEC0: DEC AL
INCD: INC AL
REPLP2 DEC AL
26 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案
CMP AL,DLV JA REPLP2 JMP REPLP1
2Vref?D?Vref2n
INCDV: INC AL
对于双极应用由式(10-2)知Vo=
D=51时,Vref=5V,因此Vo=2*5/256*51-5=-3V,
D=205时,Vref=5V,因此Vo=2*5/256*205-5=3V,因此程序不变时输出波形为-3V至+3V的三角波,输出波形如图所示。
3V0V-3V
10-5基于16位总线的压力检测系统如图10.21所示,已知8255的PA口作为A/D转换器ADC0809的接口;ADC0809的500KHz CLK时钟由8254 OUT1产生,已知8254的CLK1端接2MHz的时钟信号,GATE1接8255的PC7;DAC0832作为后向输出通道,各地址关系及与系统总线连接如图所示。系统工作过程为:采集8路压力,将其转换后的数字量一方面存放到内存缓冲区(由DATABUF指示),然后取8路压力的平均值,把平均值数字量通过逻辑取反后由DAC0832变换成模拟量输出,如果采集平均值超过Pmax值,则通过在8254的OUT0输出正脉冲为5ms的方波,如果低于Pmin,则让在8254的OUT2输出最大的负脉冲(不需要硬件触发)。
试按以下要求用编写有关程序片段:
(1) 写出8255在本应用系统中的初始化程序片段 (2) 写出供ADC0809的CLK端500KHZ方波的程序片段 (3) 根据系统工作过程写出满足要求的程序片段
(4)通过该电路,还可以扩展应用,请自行设计,说明要求,并给出参考答案。
A9A8A7
12U3374AS11654321A0A1U774AS138E3E2E1CBAY7Y6Y5Y4Y3Y2Y1Y079101112131415U8343332313029282753698356+5C1U2D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PC0PC1PC2PC3PC4PC5PC6PC7PB0PB1PB2PB3PB4PB5PB6PB7432140393837141516171312111018192021222324251714158181920212524239622lsb2-82-72-62-52-42-32-2msb2-1ADDAADDBADDCOESTARTALEADC080926272812345A6A5A4A3A2IORCIOWC2MHzD7~D012U5A374AS32IN0IN1IN2IN3IN4IN5IN6IN7压力1压力2压力3压力4压力5压力6压力7压力8信号调理电路模拟信号输入+5710EOCCLOCKref(+)ref(-)121687654321222391110D0D1D2D3D4D5D6D7RDWRCLK0GATE0OUT0A0A1U18254CSCLK1OUT1GATE1OUT2GATE2CLK21920211513141716188255R1U1276541615141312lsbDI0DI1DI2DI3DI4DI5DI6msbDI7CSWR1DAC0832RfbIout1Iout2VrefXferILEWR29+511128171918-5+5U9Vo压力传感器RW模拟输出VCCVCC
图10.21 一数据采集与处理系统原理示意图
解:地址分配: 8254:300H~303H 8255:304H~307H
微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 27
DAC0832:314H~317H任何一个地址均可 P8254_0 P8254_1 P8254_2 P8254_C P8255A P8255B P8255C PDAC0832
EQU 300H EQU 301H EQU 302H EQU 304H EQU 305H EQU 306H EQU 314H
; 8254-0通道 ; 8254-1通道 ; 8254-2通道 ; 8255A口 ; 8255B口 ; 8255C口 ;DAC0832地址
;8255控制端口 ;92H
EQU 303H ; 8254控制口
P8255Ctrl EQU 307H ; 8255控制口
(1)8255初始化要做的工作就是确定工作方式:A方式0输入、B方式0输入、C口输出
MOV DX,P8255Ctrl MOV AL,10010010B OUT DX,AL
计数值初=2MHz/500KHz=2000/500=4 MOV DX,P8255Ctrl MOV AL,00001111B OUT DX,AL
;PC7=1(GATE1=1) ;8254控制端口地址
;8254通道1设置为8位读写,二进制计数 ;初值
MOV DX,P8254_C MOV AL,01010110B OUT DX,AL MOV AL,4 OUT DX,AL
MOV DX,P8254_1 ;8254通道1口地址
(2)8254产生500KHz方波
(3)
对ADC0809的操作依据三个步骤进行,即启动并锁存地址、查询EOC状态以及转换读取结果,然参考程序如下:
PROC MOV MOV MOV MOV INC OUT MOV MOV OUT MOV
NEAR CX,8 DX, P8255C BL,80H AL,BL BL
DX,AL
;8255的C端口地址
;通道0(低3位,高位1为GATE1) ;选择ADC0809通道 ;指向下一通道
;ALE、START、OE=0,选中INi
MOV SI,OFFSET DATABUF
后根据结果确定DAC0832的输出波形。假设初始化工作已经做完如(1)和(2) ADCS
START:
REPEATL:
DX,P8255Ctrl
AL,00001011B ;ALE=1 DX,AL
AL,00001001B ;START=1
28 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案
OUT NOP NOP MOV OUT MOV OUT MOV DX,AL
AL,00001010B ;ALE=0 DX,AL
AL,00001000B ;START=0 DX,AL DX,P8255B AL,DX
;指向8255的B端口
ADCWAIT: IN
RP2:
CALLSUB1:CALLSUB2:AND AL,01 JZ ADCWAIT
;判断EOC是否为1
MOV DX,P8255Ctrl
MOV AL,00000111B ;OE=1 MOV DX,P8255A ;8255的A口地址 IN AL,DX ;读取转换结果 MOV [SI],AL
;存结果 INC SI LOOP REPEATL MOV SI,OFFSET DATABUF MOV CX,8 MOV AX,0
MOV BH,0 MOV AL,[SI] ADD AX,BX INC SI LOOP RP2
MOV BL,8 DIV BL
CMP AL,Pmin JB CALLSUB1 ;低于Pmin产生最大的负脉冲 CMP AL,Pmax
;
JA CALLSUB2
;超过Pmax产生5ms为高电平的方波JMP START NOT AL
MOV DX,PDAC0832 ;DAC0832口地址(E14H~E17H) OUT DX,AL JMP START CALL SUB1 JMP
START CALL
SUB2 JMP
START