三、存储器课堂练习 8253 40-43/46
0.一个有16个字的数据区,它的起始地址为70A0:DDF6H,那么该数据区的最后一个单元的物理地址为__7E814H_________。
2732的片内地址线是_12____根。
2114 1K*4 18
2716 2*8 24引脚
2164 64K*1
6264 8K*8 28
62256 32K*8 28
2732 4K*8
255A口的地址是___110111100_______。
二、8255并行接口课堂练习
1、8255有三种工作方式,在方式0输入方式时,三个端口均__无___(有/无)锁存能力。A 3 三种工作方式(基本输入输出方式 、选通输入输出方式、双向选通输入输出方式 ) B 2 C(按位置0置1方式)
3个8位I/O端口 PA 有三种工作方式
14.8255A的A口工作在方式2时,B口可工作__0/1______。8255A的A端口工作方式为 方式0
一:计数器8253练习题 3个计数器和6个工作方式 4个I/O端口 最大定时时间 0.5*65535
(2)若用0#计数器周期性地产生5ms的定时中断,试对其进行初始化编程(口地址合理假设)
假设 8253 控制寄存器的端口地址为86H,0#计数器的初值寄存器端口地址为80H
计数初值为10000,采用方式2
初始化程序为:
MOV AL,34H
OUT 86H,AL
MOV AX,10000
OUT 80H,AL ;先写低字节
MOV AL,AH
OUT 80H,AL ;后写高字节
(3) 若要定时产生1秒种的中断,写出实现方法(硬件连接、工作方式、计数值,可不编程)
即计数器0工作于方式2,且每次定时5毫秒,但其输出OUT0连接到计数器1的CLK1上,作为计数器1的计数时钟,其周期为5ms。
计数器1工作于方式0,计数初值为200,其OUT1连接到8259申请中断,则启动计数器后,经过1秒钟,OUT1申请中断。
11.若要采用一片8253产生近似为1Hz的对称方波,已知时钟频率为2MHz,8253地址为350-353H,试编写8253初始化程序,并说明通道引脚的连接方法。
时钟频率为2MHz,要分频至1Hz,分频系数为2000000。一个8253的计数器分频系数最大为65536,所以必须用两个计数器串联起来工作。
即将2MHz的时钟连接到0#计数器的输入端CLK0,OUT0连接到CLK1,1Hz的对称方波由1#计数器的输出端OUT1输出。设0#计数器分频系数定为10000,则OUT0输出200Hz波形。1#计数器分频系数定为200。0#计数器输出的200Hz波形作为1#计数器的时钟信号,经1#计数器200分频后得到1Hz的波形。两个计数器均初始化为方式3,
初始化程序如下:
MOV DX,353H OUT DX,AL
MOV AL,37H OUT DX,AL
OUT DX,AL INC DX
MOV AL,77H MOV AL,00H
OUT DX,AL OUT DX,AL
SUB DX,3 MOV AL,02H
MOV AL,00H OUT DX,AL
12.8253 2号通道工作在方式2,按二进制计数,计数值为1110H,现要在计数过程中读取该计数器的计数值。试编程对其进行初始化和读出计数值。
MOV AL,0B4H JNZ W
OUT 73H,AL MOV AL,84H
MOV AL,10H OUT 73H,AL
OUT 72H,AL IN AL,72H
MOV AL,11H MOV CL,AL
OUT 72H,AL IN AL,72H
MOV BH,20H MOV AH,AL
W: DEC BH MOV AL,CL
CMP BH,0
13.某系统中8253的端口地址为F280H~F283H,请按如下要求编制初始化程序:
1)计数器0工作于方式3,CLK0=2.5MHz,要求OUT0输出速率为1kHz的方波。
计数器0的计数初值
N= CLK的频率/ OUT的频率
=2.5MHz/1kHz
=2500
初始化程序段:
MOV AL,37H
先低字节后高字节,BCD计数
MOV DX,0F283H
;控制寄存器端口大于地址8位,送DX
OUT DX,AL
;控制字写入控制端口,完成初始化
MOV DX,0F280H ;计数器0的地址送DX
MOV AL,00H ;计数初值低字节送计数器0
OUT DX,AL
MOV AL,25H ;计数初值高字节送计数器
OUT DX,AL ;完成送计数初值
2)计数器1工作于方式2,CLK1=2MHz,要求OUT1输出1kHz频率的脉冲波。
计数器1的计数初值
N=CLK的频率/ OUT的频率
=2MHz/1kHz
=2000
初始化程序段:
MOV AL,65H ;控制字=0110 0101,计数 器1方式2,先低字节后高字节,BCD计数
MOV DX,0F283H;大于8位的控制器端口地址送DX
OUT DX,AL ;控制字写入控制器端口
MOV DX,0F281H ;计数器1端口地址送DX
MOV AL,00H ;低字节送计数器1
OUT DX,AL
MOV AL,20H ;高字节送计数器1
OUT DX,AL ;完成送计数初值
3)计数器2工作于方式4,用OUT1输出作计数脉冲CLK2,计数值为1000,计数器计到0,给出一个控制脉冲沿。
计数器2的计数初值 N=1000=03E8H
初始化程序段:
MOV AL,0B8H ;控制字=1011 1000,计数器2方式4, 先低字节后高字节,二进制计数
MOV DX,0F283H ;大于8位的控制器端口送DX
OUT DX,AL;控制字送控制器端口,完成初始化
MOV DX,0F282H ;计数器2的端口地址送DX
MOV AL,0E8H ;低字节送计数器2
OUT DX,AL
MOV AL,03H ;高字节送计数器2
OUT DX,AL ;完成送计数初值
14、已知某8253的输入时钟为1.193MHz。请用该芯片产生1Hz频率的脉冲波。设芯片的端口地址为40H~43H。
输入脉冲频率为1.193MHz,要求输出1Hz频率的脉冲波。
计数初值 N = CLK脉冲频率 / OUT频率
= 1.193MHz/1Hz
=1193000 >216
显然无法用一个计数器单独实现,必须用两个计数器级连才能实现。选用计数器0和计数器1工作于方式2 ,将OUT0连至CLK1。
(1)计数器0,对1.193MHz的时钟计数,产生频率为1kHz的周期信号,计数器0的计数初值为1193;
(2)计数器1,对OUT0产生的1kHz周期信号计数,从而产生频率为1Hz的周期信号,计数器1的计数初值为1000。
MOV AL,35H ;控制字=0011 0101,计数器0方式2,
;先低字节后高字节,BCD计数
OUT 43H,AL ;控制字写入控制器端口,完成初始化
MOV AL,93H ;计数初值低字节送AL
OUT 40H,AL ;写入计数器0
MOV AL,11H ;计数初值高字节送AL
OUT 40H,AL ;写入计数器0,完成送计数初值至计数器0
MOV AL,75H ;控制字=0111 0101,计数器1方式2,
;先低字节后高字节,BCD计数
OUT 43H,AL ;控制字写入控制器端口
MOV AL,00H ;计数初值低字节送AL
OUT 41H,AL ;写入计数器1
MOV AL,10H ;计数初值高字节送AL
OUT 41H,AL ;写入计数器1,完成送计数初值至计数器1
15.一个8088系统中有一8255,8255各口设置如下:A组与B组均工作于方式0,A口为数输入,B口为输出,C口高位部分为输出,低位部分为输入,A口地址设为40H。
1) 写出工作方式控制字
10010001B 即91H
2)对8255A初始化
MOV AL,91H
OUT 43H,AL
3) 从A口输入数据,将其取反后从B口送出
IN AL,40H
NOT AL
OUT 41H,AL
16.设8255A的4个寻址地址号为0060H~0063H,试编写下列各种情况下的初始化程序。
1) 将A组和B组设置成方式0,A口,B口为输入,C口为输出。
MOV AL,10010010B
OUT 63H,AL
2) 将A组工作方式设置成方式2,B组为方式1,B口作为输出。
MOV AL,11000100B
OUT 63H,AL
3) 将A口,B口均设置成方式1,均为输入,PC6和PC1为输出.
MOV AL,10110110B
OUT 63H,AL
4) A口工作在方式1,输入
MOV AL,10110001B
OUT 63H,AL
17.8255A控制字如下,8255A端口地址为:160H、162H、164H、166H,端口A方式0输出,端口B方式0输入,端口C方式0输出。编写程序实现初始化,并将端口B内容的2倍与端口C的内容求和后将结果取反送到端口A。
根据端口地址知,端口A地址为:160H,端口B地址为:162H,端口C地址为:164H,控制端口地址为:166H。
端口A方式0输出,端口B方式0输入,端口C方式0输入知:控制字8BH。
MOV AL, 8BH
MOV DX, 0166H
OUT DX, AL
MOV DX, 0162H
IN AL, DX
MOV BL, AL
ADD BL, AL
MOV DX, 0164H
IN AL, DX
ADD AL, BL
NOT AL