第8章 常用接口芯片
1.假定8255A的地址为0060H~0063H,试编写下列各种情况的初始化程序:
(l)将A组和B组设置为方式0,端口A和C作为输入口,端口B作为输出口。 (2)将A组设置为方式2,B组设置为方式1,端口B作为输出口。
(3)将A组设置为方式1,且端口A作为输入,PC6和PC7作为输出;B组设置为方式1,且端口B为输入口。
2.IBM PC/XT机中8255A与系统总线的连接如图8.74所示,试分析8255A的 A口、B口、C口及控制寄存器的基本地址。
解: 0 0 0 1 1 图8.74
图8.75
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 × × × × × A口:060H B口:061H C口:062H
控制寄存器:063H
3.某外设引脚如图8.75所示,当BUSY为低电平时,表示外设可以接收数据。外设通过8255A接到系统总统上,CPU利用查询方式将BUFFER开始的100字节数据输出。
(1)规定8255A的口地址为ECH—EFH,试画出8255A和系统总线及外设的连接图。
(2)编写包括8255A初始化程序在内的输出程序。
4.图8.76为开关状态检测电路和继电器控制电路,当开关闭合时,将驱动对应的继
图8.76
电器(有驱动电流流过继电器线圈);若某开关处于断开状态,则无电流流过继电器线圈。系统每隔10ms检测一次开关状态和对继电器作相应控制,定时控制由8253完成,试完成对8255A的初始化编程(初始状态所有继电器的线图都无电流流过)和检测控制程序(假定8255A地址为3COH~3C3H)。
5.图8.23的8253应用实例中,若通道0和通道1都采用二进制计数,扬声器的发声频率为500HZ,问程序应作何变动?
解: ;主程序
MOV AL,15H(改为14H) ;计数器0初始化 OUT 43H,AL
MOV AL,50H(改为50) OUT 40H,AL
STI ;开中断 LOP:HLT ;等待中断 JMP LOP ;中断服务程序
INIP:MOV AL,01H ;GATE1置1,启动计数 OUT 80H,AL
MOV AL,77H(改为76H);计数器1初始化 OUT 43H,AL
MOV AL,00H(改为0F0H);1.4×106/500=2800=0AF0H OUT 41H,AL
MOV AL,07H(改为0AH) OUT 4lH,AL
CALL DLSS ;延时5秒
MOV AL,0 ;GATE1置0,停止计数 OUT 80H,AL IRET
6.若8253可利用8088的外设接口地址D0D0H~D0D3H,试画出电路连接图。若加到8253上的时钟信号为2MHz,
(1)若利用计数器0、1、2分别产生周期为10?S的对称方波以及每1S和10s产生一个负脉冲。试说明8253如何连接并编写包括初始化在内的程序。
(2)若希望利用8088程序通过接口控制GATE,当CPU使GATE有效开始,20?S后在计数器0的OUT端产生一个正脉冲,试设计完成此要求的硬件和软件。 解: (1)
①产生周期为10?s的对称方波,计数器:0,工作方式:方式3,初值:10?S=0.1MHZ,2/0.1=20 MOV AL,00010111B MOV DX,0D0D3H OUT DX,AL MOV AL,20H MOV DX,0D0D0H OUT DX,AL
②每1S产生一个负脉冲,计数器:0、1,工作方式:3、2,初值:200、10000
MOV AL,00110111B;计数器0 MOV DX,0D0D3H OUT DX,AL MOV DX,0D0D0H MOV AL,00H OUT DX,AL MOV AL,02H OUT DX,AL MOV AL,01110101B;计数器1 MOV DX,0D0D3H OUT DX,AL MOV DX,0D0D1H MOV AL,00H OUT DX,AL OUT DX,AL
③每10S产生一个负脉冲,计数器:0、1,工作方式:3、2,初值:2000、10000
MOV AL,00110111B;计数器0 MOV DX,0D0D3H OUT DX,AL MOV DX,0D0D0H MOV AL,00H OUT DX,AL MOV AL, 20H OUT DX,AL MOV AL,01110101B;计数器1 MOV DX,0D0D3H OUT DX,AL MOV DX,0D0D1H MOV AL,00H
OUT DX,AL OUT DX,AL
(2)8255控制计数器0的GATE信号,OUT0接反相器,工作方式:方式5,初值:20?S=0.05MHZ,2/0.05=40
MOV AL,00011011B MOV DX,0D0D3H OUT DX,AL MOV AL,40H MOV DX,0D0D0H OUT DX,AL
7.若加到8253上的时钟频率为0.5MHz,则一个计数器的最长定时时间是多少?若要求10分钟产生一次定时中断,试提出解决方案。
8.假设一片 IBM PC机I/O卡的8253连到一个1KHz的时钟,用该8253以BCD格式保持一天中的时间,精度为秒。在DATA1、DATA2、DATA3(时、分、秒)等字节装入当前时间后,启动8253开始计时。试编写一个8253的初始化程序和一个在每秒结束时修改时间的中断眼务程序。(8253的地址为02C0H~02C3H)。
说明;8253产生的中断请求信号连接到PC总线的IRQ2。
9.设有某微机控制系统,采用定时器8253产生定时中断信号。CPU响应中断后更执行数据采集、数字滤波和相应的控制算法,以控制输出。如图8.77所示。采用两个计数器串联的方法实现定时控制。一旦定时时间到,OUT1信号由高变低,经反相后送IRQ2。IRQ2的中断类型号为0AH,中断处理程序首址存储在28H~2BH。8253端口地址为230H~233H。试编制8253的初始化及设置中断处理程序首地址程序段。
图8.77
10.某系统中使用825lAI作在异步方式、7位字符、不带校验、停止位长2位、波特率系数为16、允许发送、也允许接收。若已知其控制口地址为FFAOH,数据口地址为FFA1H,请编写初始化程序。