李伯成《微机原理》习题 - - - 第六章 下载本文

李伯成《微机原理》习题 第六章

6.1若8253芯片可利用8088的外设接口地址为 0D0D0H~0D0DFH,试画出电路,若加到8253上的时钟信号为2MH:

(1) 若利用计数器0,1,2 分别产生周期为10微秒的对称方波以及0.1秒和10秒产生

一个负脉冲,试说明8253应如何连接并编写初始化在内的程序;

(2) 若希望利用8088程序通过接口控制GATE,从CPU使GATE有效开始,20微秒后

在计数器0 的OUT 端产生一个正脉冲,试设计完成此要求的硬件和软件。

根据题意 三个计数器都应该工作在方波发生器方式3,计数器0的输出信号周期为10微秒,因为时钟信号周期我0.5微秒,所以计数器0的计数值为20。用OUT0作为计数器1的时钟,计数器1的分频系数为1/10-4, 而假如又用OUT1作为计数器2的时钟,则计数器2的分频系数应为100。所以有以下初始化程序段:

计数器0 : 00 01 011 1 = 37H 计数器0 单字节 方式3 十进制 计数器1 01 11 011 1 =57H 计数器1 双字节 方式3 十进制 计数器2 10 01 011 1 =97H 计数器2 单字节 方式3 十进制

MOV DX,0D0D3H;控制端口地址 MOV AL,37H OUT DX,AL MOV DX,0D0D0H;计数器0端口地址 MOV AL,20 OUT DX,AL

MOV DX,0D0D3H MOV AL,57H OUT DX,AL MOV DX,0D0D1H;计数器1端口地址 MOV AL,00 OUT DX,AL MOV AL,100 OUT DX,AL

MOV DX,0D0D3H; MOV AL,97H OUT DX,AL MOV DX,0D0D2H MOV AL,100 OUT DX,AL

6.2 规定8255并行接口地址为FFE0~FFE3H,试将其连接到8088系统总线上。

(1)、若希望8255的三个端口的24根线均为输出,且输出幅度和频率为任意的方波,试编程序; (2)、若A/D变换器的引线及工作时序如图示,试将此A/D转换器与8255相连接,并编写包括初始化程序在内的、变换一次数据并将数据存放在DATA中的程序; 解:根据题目所给的接口地址,其电路连接如下:

(1)、根据8255的方式字格式,三个端口全都工作在 方式0 输出,故为1 00 0 0 0 0 0B= 80H 所以有如下的初始化: MOV DX,FFE3H; MOV AL,80H; OUT DX,AL;

用8255输出幅度任意的方波是不可能的,所以后续问题无解。

(2)、8255的初始化包括:工作方式0、A口输入、B口输出、C口低四位输出、C口高四位输入,且在程序开始时,使PC0、PC1为低电平。所以 控制字应为:1 00 1 1 0 0 0B= 98H

据此写下以下程序:

MOV DX,FFE3H; 8255 控制寄存器地址 MOV AL,98H; 工作方式控制字 OUT DX,AL; 写入8255 MOV DX,FFE2; 8255C口 MOV AL,0;

OUT DX,AL; 使使PC0、PC1为低电平

数据采集部分采用查询方式,程序以过程的方式书写如下: AD0809 PROC NEAR PUSH AX PUSH BX; PUSH DX; PUSH SI; 断点保护

MOV DX, SEG ADATA;转换数据存储区段地址 MOV DS,DX; MOV SI, OFFSET ADATA;转换数据存储区偏移地址 XOR BX,BX; MOV BL,08; 模拟输入通道数 BEGIN: MOV DX,FFE1H;8255B口—模拟通道选择 MOV AL,BL; OUT DX,AL; 选择模拟输入通道 MOV DX,FFE2H;8255C口地址

MOV AL,01H; OUT DX,AL; MOV AL,00H; OUT DX,AL; 输出开始转换脉冲START CHANGE:IN AL,DX; 读C口,查询EOC信号 TEST AL,10H; 检测 PC4 JZ CHANGE; EOC无效则等待 MOV AL,02H; OUT DX,AL; 发送OE脉冲 MOV DX,FFE0H; 8255A口 IN AL,DX;读转换数据 MOV [SI],AL; 存入数据区 MOV DX,FFE2H; MOV AL,0 OUT DX,AL; 取消OE信号 INC SI; 移动数据区指针 INC BL; 选择下一个通道 MOV AL,08H CMP AL,BL JNZ BEGIN POP SI POP DX POP BX POP AX RET AD0809 ENDP

6.3 说明8253的六种工作方式。若加到8255上的时钟频率为0.5Mhz,则一个计数器的最长定时时间是多少?若要求每10分钟产生一次定时中断,试利用8253 提出解决方案。