使用8259A单级中断控制实验.docx
《使用8259A单级中断控制实验.docx》由会员分享,可在线阅读,更多相关《使用8259A单级中断控制实验.docx(26页珍藏版)》请在冰豆网上搜索。
使用8259A单级中断控制实验
实验五使用8259A的单级中断控制实验
一、实验目的
1、掌握中断控制器8259A与微机接口的原理和方法。
2、掌握中断控制器8259A的应用编程。
二、预备知识
1、8259A的内部结构
8259A是专为控制优先级中断而设计的芯片。
它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8级中断。
b5E2RGbCAP
如图5-19所示,它由中断请求寄存器(IRR>、优先级分析器、中断服务寄存器(ISR>、中断屏蔽寄存器(IMR>、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。
p1EanqFDPw
图5-19
中断请求寄存器:
寄存所有要求服务的请求IR0~IR7。
中断服务寄存器:
寄存正在被服务的中断请求。
中断屏蔽寄存器:
存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号,该位为1,屏蔽该号中断,否则开放该号中断。
DXDiTa9E3d
数据总线缓冲器:
是双向三态的,用以连接系统总线和8259A内部总线,通过它可以由CPU对8259A写入状态字和控制字。
RTCrpUDGiT
读写控制电路:
用来接受I/O命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A的工作方式和控制方式。
5PCzVD7HxA
级联缓冲器/比较器:
用于多片8259A的连接,能构成多达64级的矢量中断系统。
2、8259A编程及初始化
(1>写初始化命令字
*写初始化命令字ICW1(A0=0>,以确定中断请求信号类型,清除中断屏蔽寄存器,中断优先级排队和确定系统用单片还是多片。
jLBHrnAILg
*写初始化命令字ICW2,以定义中断向量的高五位类型码。
*写初始化命令字ICW3,以定义主片8259A中断请求线上IR0~IR7有无级联的8259A从片。
xHAQX74J0X
第i位=0,表明IRi引脚上无从片
第i位=1,表明IRi引脚上有从片
*写初始化命令ICW4,用来定义8259A工作时用8085模式,还是8088模式,以及中断服务寄存器复位方式等。
LDAYtRyKfE
(2>写控制命令字
*写操作命令字0CW1,用来设置或清除对中断源的屏蔽。
第i位=0,对应的中断请求IRi开放
第i位=1,对应的中断请求IRi屏蔽
注:
OCW1如不写,则在初始化命令写入后,OCW1为全开放状态。
*操作命令字OCW2,设置优先级是否进行循环、循环方式及中断结束方式。
注:
8259A复位时自动设置IR0优先权最高,IR7优先权最低。
*操作命令字OCW3,设置查询方式、特殊屏蔽方式以及读取8259中断寄存器的当前状态。
(3>8259A查询字
通过OCW3命令字的设置,可使CPU处于查询方式,随时查询8259A有否中断请求,有则转入相应的中断服务程序。
Zzz6ZB2Ltk
三、实验内容
本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量关于如下表5-3所示。
dvzfvkwMI1
表5-3
根据实验原理图5-20<见下页),8259A和8088系统总线直接相连,8259A上连有一系统地址线A0,故8259A有2个端口地址,本系统中为20H、21H。
20H用来写ICW1,21H用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。
OCW2、OCW3用口地址20H,OCW1用口地址21H。
图5-14中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。
如果中断源电平信号不符规定要求则自动转到7号中断,显示“Err”。
CPU响应中断后,在中断服务中,对中断次数进行计数并显示,计满5次结束,显示器显示“8259Good”。
rqyn14ZNXI
四、实验线路连接
8259A的IR3插孔和SP插孔相连。
SP插孔初始电平为低电平。
图5-20
五、实验软件框图
六、实验软件清单
CODESEGMENT
ASSUMECS:
CODE
INTPORT1EQU0020H
INTPORT2EQU0021H
INTQ3EQUINTREEUP3
INTQ7EQUINTREEUP7
CONTPORTEQU00DFH
DATAPORTEQU00DEH
DATA0EQU0580H
DATA1EQU0500H
DATA2EQU0508H
DATA3EQU0518H
DATA4EQU0520H
ORG1800H
START:
JMPTint1
Tint1:
CALLFORMAT
CLD
MOVDI,DATA0
MOVCX,08H
XORAX,AX
REPSTOSW
MOVSI,DATA3
CALLLEDDISP。
DISP8259-1
MOVAX,0H
MOVDS,AX
CALLWRINTVER。
WRITEINTRRUPT
MOVAL,13H
MOVDX,INTPORT1
OUTDX,AL
MOVAL,08H
MOVDX,INTPORT2
OUTDX,AL
MOVAL,09H
OUTDX,AL
MOVAL,0F7H
OUTDX,AL
MOVBYTEPTRDS:
[0601H],01H。
TIME=1
STI
WATING:
JMPWATING
WRINTVER:
MOVAX,0H
MOVES,AX
MOVDI,002CH
LEAAX,INTQ3
STOSW
MOVAX,CS
STOSW
MOVDI,003CH
LEAAX,INTQ7
STOSW
MOVAX,CS
STOSW
RET
INTREEUP3:
CLI
MOVAL,DS:
[0601H]
CALLCONVERS
MOVSI,DATA0
CALLLEDDISPD
MOVAL,20H
MOVDX,INTPORT1
OUTDX,AL
ADDBYTEPTRDS:
[0601H],01H
CMPBYTEPTRDS:
[0601H],06H
JNAINTRE1
MOVSI,DATA4
CALLLEDDISP
INTRE3:
JMPINTRE3
CONVERS:
MOVBH,0H
ANDAL,0FH
MOVBL,AL
MOVAL,CS:
[BX+DATA2]
MOVBX,DATA0
MOVDS:
[BX],AL
RET
INTRE1:
MOVAL,20H
MOVDX,INTPORT1
OUTDX,AL
STI
IRET
INTREEUP7:
CLI
MOVSI,DATA1
CALLLEDDISP
MOVAL,20H
MOVDX,INTPORT1
OUTDX,AL
IRET
LEDDISP:
MOVAL,90H
MOVDX,CONTPORT
OUTDX,AL
MOVBYTEPTRDS:
[0600H],00
LED1:
CMPBYTEPTRDS:
[0600H],07H
JALED2
MOVBL,DS:
[0600H]
MOVBH,0H
MOVAL,CS:
[BX+SI]
MOVDX,DATAPORT
OUTDX,AL
ADDBYTEPTRDS:
[0600H],01H
JNZLED1
LED2:
RET
LEDDISPD:
MOVAL,90H
MOVDX,CONTPORT
OUTDX,AL
MOVBYTEPTRDS:
[0600H],00
LEDD1:
CMPBYTEPTRDS:
[0600H],07H
JALEDD2
MOVBL,DS:
[0600H]
MOVBH,0H
MOVAL,DS:
[BX+SI]
MOVDX,DATAPORT
OUTDX,AL
ADDBYTEPTRDS:
[0600H],01H
JNZLEDD1
LEDD2:
RET
FORMAT:
MOVBX,0
MOVWORDPTRDS:
[BX+0500H],5050H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],0079H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],0000H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],0000H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],063FH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],4F5BH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],6D66H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],077DH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],6F7FH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],7C77H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],5E39H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],7179H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],4006H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],4040H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],6D6FH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],7F5BH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],3F5EH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],5C3FH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],6D6FH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],7F5BH
RET
CODEENDS
ENDSTART
七、实验步骤
1、按图5-20连好实验线路
2、运行实验程序
在系统显示“DVCC-86H”状态下,按任意键,系统显示命令提示符“-”。
按GO键,显示“1000XX”
输入F000:
B2E0
按EXEC键,在DVCC-8086H上显示“8259-1”。
3、按AN按键,每按二次产生一次中断,在显示器左边一位显示中断次数,满5次中断,显示器显示“8259good”。
EmxvxOtOco
实验六8255A可编程并行口实验(一>
一、实验目的
1、掌握并行接口芯片8255A和微机接口的连接方法。
2、掌握并行接口芯片8255A的工作方式及其编程方法。
二、预备知识
1、8255A结构
8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,如图5-6是8255A的逻辑框图,内部有3个8位I/O端口:
A口、B口、C口;也可以分为各有12位的两组:
A和B组,A组包含A口8位和C口的高四位,B组包含B口8位和C口的低4位;A组控制和B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。
由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和8088系统数据总线相连。
SixE2yXPq5
2、8255A端口地址见表5-1
表5-1
图5-12
3、8255A工作方式
8255A芯片有三种工作方式:
方式0、方式1、方式2。
它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。
6ewMyirQFL
方式0:
基本输入/输出
图5-7(a>方式0引脚功能
如图5-13该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出,C口分成高4位(PC7~PC4>和低4位(PC3~PC0>两组,也有控制字决定其输入或输出。
需注意的是:
该方式下,只能将C口其中一组的四位全部置为输入或输出。
kavU42VRUs
方式1:
选通输入/输出
图5-13(b>方式1输入图5-13(c>方式1输出y6v3ALoS89
如图5-13所示。
该方式又叫单向输入输出方式,它分为A、B两组,A组由数据口A和控制口C的高4位组成,B组由数据口B和控制口C的低4位组成。
数据口的输入/输出都是锁存的,与方式0不同,由控制字来决定它作输入还是输出。
C口的相应位用于寄存数据传送中所需的状态信号和控制信息。
M2ub6vSTnP
方式2:
双向输入输出
图5-13(D>方式2双向输入输出
如图5-13本方式只有A组可以使用,此时A口为输入输出双向口,C口中的5位(PC3~PC7>作为A口的控制位。
0YujCfmUCw
4、8255A控制字
(1>方式选择控制字
(2>PC口按位置/复位控制字
三、实验内容
1、实验原理
如实验原理图5-14所示,PC口8位接8个开关K1~K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。
拨动K1~K8,PB口上接的8个发光二极管L1~L8对应显示K1~K8的状态。
eUts8ZQVRd
图5-14
2、实验线路连接
<1)8255A芯片PC0~PC7插孔依次接K1~K8。
<2)8255A芯片PB0~PB7插孔依次接L1~L8。
<3)8255A的CS插孔接译码输出070H-07FH插孔。
四、实验软件框图
五、实验软件清单
CODESEGMENT
ASSUMECS:
CODE
IOCONPTEQU0073H
IOCPTEQU0072H
IOBPTEQU0071H
CONTPORTEQU00DFH
DATAPORTEQU00DEH
DATA1EQU0500H
START:
JMPIOLED
IOLED:
CALLFORMAT
CALLLEDDISP
MOVAL,89H
MOVDX,IOCONPT
OUTDX,AL
NOP
NOP
NOP
IOLED1:
MOVDX,IOCPT
INAL,DX
MOVDX,IOBPT
OUTDX,AL
MOVCX,0FFFFH
DELAY:
LOOPDELAY
JMPIOLED1
LEDDISP:
MOVAL,90H
MOVDX,CONTPORT
OUTDX,AL
MOVBYTEPTRDS:
[0600H],00LED1:
CMPBYTEPTRDS:
[0600H],07HsQsAEJkW5T
JALED2
MOVBL,DS:
[0600H]
MOVBH,0H
MOVAL,CS:
[BX+DATA1]
MOVDX,DATAPORT
OUTDX,AL
ADDBYTEPTRDS:
[0600H],01H
JNZLED1
LED2:
RET
FORMAT:
MOVBX,0
MOVWORDPTRDS:
[BX+0500H],4006H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],4040H
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],6D6DH
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],7F5BH
RET
CODEENDS
ENDSTART
六、实验步骤
1、按图5-14连好线路。
2、运行实验程序。
在系统显示“DVCC-86H”状态下,按任意键,显示器显示“-”。
按GO键,显示“1000XX”
输入F000:
B160
再按EXEC键,在DVCC-8086H显示上显示器“8255-1”,同时拨动K1~K8,L1~L8会跟着亮灭。
GMsIasNXkA
8255A可编程并行口实验(二>
一、实验目的
进一步掌握8255A可编程并行口使用方法。
二、实验内容
1、实验原理
实验原理图如图5-15所示,PB4~PB7和PC0~PC7分别与发光二极管电路L1~L12相连,本实验为模拟交通灯实验。
交通灯的亮灭规律如下:
TIrRGchYzg
设有一个十字路口,1、3为南北方向,2、4为东西方向,初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后重复上述过程。
7EqZcWLZNX
图5-15
8255A的PB4~PB7对应黄灯,PC0~PC3对应红灯,PC4~PC7对应绿灯。
8255A工作于模式0,并置为输出。
由于各发光二极管为共阳极,使其点亮应使8255A相应端口清0。
lzq7IGf02E
2、实验线路连接
(1>8255CS插孔连译码输出070H-07FH插孔。
(2>L1—PC4L4—PC5L7—PC6L10—PC7
L2—PB4L5—PB5L8—PB6L11—PB7
L3—PC0L6—PC1L9—PC2L12—PC3
三、实验软件框图
四、实验软件清单
CODESEGMENT
ASSUMECS:
CODE
IOCONPTEQU0073H
IOAPTEQU0070H
IOBPTEQU0071H
IOCPTEQU0072H
IOBDATAEQU0500H
CONTPORTEQU00DFH
DATAPORTEQU00DEH
DATA1EQU0640H
START:
JMPIOLED
IOLED:
CALLFORMAT
CALLLEDDISP
MOVAX,0H
MOVDS,AX
MOVAL,82H
MOVDX,IOCONPT
OUTDX,AL
MOVDX,IOBPT
INAL,DX
MOVBYTEPTRDS:
[0501H],AL
MOVDX,IOCONPT
MOVAL,80H
OUTDX,AL
MOVDX,IOBPT
MOVAL,DS:
[0501H]
ORAL,0F0H
OUTDX,AL
MOVDX,IOCPT
MOVAL,0F0H
OUTDX,AL
CALLDELAY1
IOLED0:
MOVAL,10100101B
MOVDX,IOCPT
OUTDX,AL
CALLDELAY1
CALLDELAY1
ORAL,0F0H
OUTDX,AL
MOVCX,8H
IOLED1:
MOVDX,IOBPT
MOVAL,DS:
[0501H]
ANDAL,10101111B
OUTDX,AL
CALLDELAY2
ORAL,01010000B
OUTDX,AL
CALLDELAY2
LOOPIOLED1
MOVDX,IOCPT
MOVAL,0F0H
OUTDX,AL
CALLDELAY2
MOVAL,01011010B
OUTDX,AL
CALLDELAY1
CALLDELAY1
ORAL,0F0H
OUTDX,AL
MOVCX,8H
IOLED2:
MOVDX,IOBPT
MOVAL,DS:
[0501H]
ANDAL,01011111B
OUTDX,AL
CALLDELAY2
ORAL,10100000B
OUTDX,AL
CALLDELAY2
LOOPIOLED2
MOVDX,IOCPT
MOVAL,0F0H
OUTDX,AL
CALLDELAY2
JMPIOLED0
DELAY1:
PUSHAX
PUSHCX
MOVCX,0030H
DELY2:
CALLDELAY2
LOOPDELY2
POPCX
POPAX
RET
DELAY2:
PUSHCX
MOVCX,8000H
DELA1:
LOOPDELA1
POPCX
RET
LEDDISP:
MOVAL,90H
MOVDX,CONTPORT
OUTDX,AL
MOVBYTEPTRDS:
[0600H],00
LED1:
CMPBYTEPTRDS:
[0600H],07H
JALED2
MOVBL,DS:
[0600H]
MOVBH,0H
MOVAL,CS:
[BX+DATA1]
MOVDX,DATAPORT
OUTDX,AL
ADDBYTEPTRDS:
[0600H],01H
JNZLED1
LED2:
RET
FORMAT:
MOVBX,0
MOVWORDPTRDS:
[BX+0640H],405BH
ADDBX,2
MOVWORDPTRDS:
[BX+0640H],4040H
ADDBX,2
MOVWORDPTRDS:
[BX+0640H],6D6DH
ADDBX,2
MOVWORDPTRDS:
[BX+0640H],7F5BH
RET
CODEENDS
ENDSTART
五、实验步骤
1、按图5-15连好实验线路
2、运行实验程序
在系统显示“DVCC-86H”状态下,按任意键,系统显示命令提示符“-”。
按GO键,显示“1000XX”
输入F000:
B1B0
按EXEC键,在DVCC-8086H上显示“8255-2”。
同时L1~L12发光二极管模拟交通灯显示。
zvpgeqJ1hk
实验七8253A定时/计数器实验
一、实验目的
学习8253A可编程定时/计数器与8088CPU的接口方法;了解8253A的工作方式;掌握8253A在各种方式下的编程方法。
NrpoJac3v1
二、预备知识
1、8253A内部结构
8253A定时/计数器具有定时、计数双功能。
它具有三个相同且相互独立的16位减法计数器,分别称为计数器0、计数器1、计数器2。
每个计数器计数频率为0~2MHZ,其内部结构如图5-16所示。
由于其内部数据总线缓冲器为双向三态,故可直接接在系统数据总线上,通过CPU写入计数初值,也可由CPU读出计数当前值;其工作方式通过