微型计算机技术实用知识点编程应用题

1.设8251A为异步方式,1个停止位,偶校验,7个数据位,波特率因子为16,请写出其方式字。若发送使能,接收使能,DTR端输出低电平,TXD端发送空白字符,RTS端输出低电平,内部不复位,出错标志复位,请写出控制字;并编写程序完成其初始化设置。

方式字=01111010B 控制字=00111111B 关于控制字的格式可参考这篇文章:8251A查询法收发数据的通信程序 设端口地址为 40H、42H

MOV AL,01111010B
OUT 42H,AL
MOV AL,00111111B
OUT 42H,AL

2.要求计数器0工作于方式3,输出方波的重复频率为2KHZ,计数脉冲输入为2.5MHZ,采用BCD计数,试写出初始化程序段。

8253计数器的计数初值=分频系数=fclk/fout=时钟脉冲/输出频率=(波特率*波特率因子)/输出频率 计算计数初始值 TC=2.5MHz/2KHz=1250 方式控制字为00110111=37H,即计数器0,写16位,方式3,BCD计数。 设8253的端口地址为80H,81H,82H,83H。 则初始化程序段为

MOV AL,37H ;写入方式控制字
OUT 83H,AL
MOV AL,50H ;写入计数初始值低8位
OUT 80H,AL
MOV AL,12H ;写入计数初始值高8位
OUT 80H,AL

3.某系统中8253芯片的通道0~2和控制端口地址分别为FFF0H~FFF3H。定义通道0工作在方式2,CLK0=2MHz,要求输出OUT0为1kHz的速率波;定义通道l工作在方式0,其CLKl输入外部计数事件,每计满100个向CPU发出中断请求。试写出8253通道1,0和通道1的初始化程序。

通道0的计数值为:2MHz/1kHz = 2000 8253初始化程序如下:

MOV AL,00110100B ;计数器0,先读/写低8位,再读/写高8位,模式2,二进制
MOV DX,0FFF3H
OUT DX,AL
MOV AX,2000
MOV DX,0FFFOH
OUT DX,AL
MOV AL,AH
OUT DX,AL

MOV DX,0FFF3H
MOV AL,01110000B ;计数器1,先读/写低8位,再读/写高8位,模式0,二进制
OUT DX,AL
MOV DX,0FFF1H
MOV AX,100
OUT DX,AL
MOV AL,AH
OUT DX,AL

4.让8253计数器0用1ms脉冲信号源作CLK0,且工作在方式3定时1分钟,用8255的PC6提供GATE0,在定时期间,由PC7控制的灯亮(PC7=1,亮),对OUT0的检测通过PC0进行,定时结束灯灭,先画出脉冲信号源、8253、8255的连接关系图,再编写程序段(8253,8255的端口地址为60H~63H,40H~43H)。

[caption id=”attachment_593” align=”aligncenter” width=”223” caption=”8253-8255”]8253-8255[/caption]

MOV AL,81H ;8255方式字
OUT 43H,AL
MOV AL,00001101B ;将PC6置位
OUT 43H,AL
MOV AL,00001111B ;将PC7置位
OUT 43H,AL

MOV    AL,00110110B        ;8253计数器0初始化
OUT    63H,AL
MOV    AX,60000
OUT    60H,AL
MOV    AL,AH
OUT    60H,AL
    MOV     AL,00001110B    ;将PC7复位
    OUT     43H,AL



MOV    AL,0DH        ;GATE0 = 1
OUT    43H,AL
MOV    AL,OFH        ;灯亮
OUT     43H,AL

LOP1:
IN AL,62H ;等待半分高电平结束
SHR AL,1
JNC LOP1
LOP2:
IN AL,42H ;等待半分低电平结束
SHR AL,1
JNC LOP2
MOV AL,0EH ;灯灭
OUT 43H,AL
HLT

5.试用8253-5计数器1输出一个1ms的连续脉冲,启动某一数字系统。 设:(1)CLK1为5MHZ (2)端口地址为208H~20BH (3)工作方式选择方式4,BCD计数 要求设计有关初始化程序。

初始值 Tc=5MkHz/1000Hz=5000 控制字:0111 1001 控制口的地址为20BH 计时器1的地址是209H

MOV DX,20BH
MOV AL,01111001B
OUT DX,AL
MOV DX,209H
MOV AX,5000H
OUT DX,AL
MOV AL,AH
OUT DX,AL

6.在8255A中,一个采用查询传送的输入接口由两个端口组成,一个是数据端口,地址为120H,一个是状态端口,地址为121H,用D7位表示就绪位,外设工作时,已启动外设。利用上述接口电路从输入设备上输入1000个字节的数据送存储器中BUFFER缓冲区,编写控制程序段。

LEA SI , BUFFER
MOV CX , 1000 ;1000个字节
LOP: MOV DX , 121H
LOP1: IN AL,DX ;从数据口读入数据
SHL AL,1
JNC LOP1
DEC DX
IN AL,DX
MOV [SI],AL
INC SI
LOOP LOP
HLT

7.某8086系统中使用8237完成从存储器到外设端口的数据传送任务,若已知通道0的地址寄存器、字节计数器、方式寄存器端口地址分别为EEE0H,EEE1H和EEE8H,要求通过通道0将存储器中偏移地址为1000H~10FFH的内容传送到显示器输出,试编写初始化程序。

MOV DX,0EEEDH
OUT DX,AL
MOV DX,0EEEBH
MOV AL,68H
OUT DX,AL
MOV DX,0EEECH
OUT DX,AL
MOV DX,0EEE0H
MOV AX,1000H
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,0EEECH
OUT DX,AL
MOV DX,0EEE1H
MOV AL,0FFH
OUT DX,AL
XOR AL,AL
OUT DX,AL
MOV DX,0EEE8H
MOV AL,0C0H
OUT DX,AL

8.8251A工作于异步方式,波特率为1200b/s,收发时钟 = ,频率为76.8KHz,异步字符格式为:数据位7位,采用偶校验,两位终止位,CPU从8251A读入100个字符,存入变量INARY,8251A的端口地址为80H与81H。试对其进行初始化编程和数据输入程序段。

程序分为两部分: (1)初始化——写方式指令字,命令指令字。 (2)读入数据——按传输数据流程编写。 计算波特率因子: K=76.8K/1200=64 方式指令字设置:

S2

S1

EP

PEN

L2

L1

B2

B1

1 1 1 1 1 0 1 1 2位终止位 偶校 用奇偶校 字符7位 波特率因子64 方式指令字用FBH。 命令指令字设置:

EH

IR

RTS

ER

SBRE

RXE

DTR

TXEN

0 0 1 1 0 1 0 1 不搜索同 内部 RTS(低电平) 复位出 正常 允许 DTR(低电平) 允许 步字符 不复位 有效 错标志 工作 接收 无效 发送 命令指令字为35H。 初始化程序及数据输入程序如下:

MOV AL,OFBH ;写方式指令字
OUT 81H,AL
MOV AL,35H ;写命令指令字
OUT 81H,AL
MOV BX,0
MOV CX,100
POLL: IN AL,8lH
TEST AL,02H
JZ POLL ;等待输入
IN AL,80H ;输入
MOV INARY[BX],AL ;存内存
INC BX
IN AL,8lH
TESI AL,38H ;检测出错标志
JNZ ERROR ;出错,转出错处理
POLL

9.设计一个采用异步通信方式输出字符的程序,波特率因子为64,7个数据位位,1个停止位,偶校验,端口地址为40H,42H,缓冲区为2000H~3000H。

模式字为:01111011B=7BH。控制字为:00110101B=35H。

MOV AL,0 ;为发复位命令作准备
OUT 42H,AL
OUT 42H,AL
OUT 42H,AL
MOV AL,40H ; 发复位命令
OUT 42H,AL
MOV AL,7BH ;设置模式字,异步方式,规定波特率因子为64
;7个数据位,1个停止位,偶校验
OUT 42H,AL
MOV AL,35H ;设置控制字,使发送器和接收器启动,并清除
;出错标志
OUT 42H,AL
PUSH DS
MOV BX,2000H ;DS:BX指向输出缓冲区首址
MOV DS,BX
MOV BX,3000H ;缓冲区指针初始化
MOV CX,100H ;发送100H个字节
BEGIN: IN AL,42H ;读取状态字,测试TxRDY是否为1
TEST AL,01H
JZ BEGIN ;为0表示外设还未取走字符
MOV AL,[BX] ;从输出缓冲区取数
OUT 40H,AL ;发送字符
INC BX ;修改缓冲区指针
LOOP BEGIN ;则再发送下一个字符
POP DS

10.有一8086中断电路如下图所示,请回答下列问题: (1)根据图中给出条件,写出五种内部中断1、2、3、4、5的名称; (2)写出8086三条引脚6、7、8的符号及名称; (3)写出芯片9的名称,并简述其功能。

[caption id=”attachment_594” align=”aligncenter” width=”495” caption=”8086”]8086[/caption] (1)①单步中断 ②溢出中断 ③除法中断 ④INT n指令中断 ⑤断点中断 (2)⑥NMI(非屏蔽中断申请信号) ⑦INTR(可屏蔽中断申请信号) ⑧INTA(低电平有效,可屏蔽中断响应信号) (3)⑨8259A,它是一种可编程的中断控制器,其功能有:

a、可管理8级优先权中断,通过级联最多可管理64级优先权的中断 b、每一个中断源都可以单独屏蔽 c、能向CPU提供可编程的中断类型号 d、多种中断优先权管理方式:完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式、查询方式

11利用8251A实现与外设串行通信的控制程序如下,其中8251A的控制/状态口地址为2F9H,数据口地址为2F8H,41H为字符A的ASCII码,要求:

(1)阅读此程序,加上适当注释并说明程序实现的功能; (2)指出CPU与8251A见数据传送的控制方式。

START: MOV DX,2F9H
  MOV AL,74H
  OUT DX,AL
  MOV AL,11H
  OUT DX,AL
  L1: MOV DX,2F9H
  IN AL,DX
  AND AL,01H
  JZ L1
  MOV DX,2F8H
  MOV AL,41H
  OUT DX,AL
  HLT

12.某微机系统的8253通道2接有一发光二极管,要使发光二极管以点亮1秒,熄灭1秒的间隔工作,其电路如图所示,试编写初始化程序。

[caption id=”attachment_595” align=”aligncenter” width=”433” caption=”8253”]8253[/caption]

arthinking wechat
欢迎关注itzhai公众号