接口8259A.docx

上传人:b****1 文档编号:13780460 上传时间:2023-06-17 格式:DOCX 页数:22 大小:22.99KB
下载 相关 举报
接口8259A.docx_第1页
第1页 / 共22页
接口8259A.docx_第2页
第2页 / 共22页
接口8259A.docx_第3页
第3页 / 共22页
接口8259A.docx_第4页
第4页 / 共22页
接口8259A.docx_第5页
第5页 / 共22页
接口8259A.docx_第6页
第6页 / 共22页
接口8259A.docx_第7页
第7页 / 共22页
接口8259A.docx_第8页
第8页 / 共22页
接口8259A.docx_第9页
第9页 / 共22页
接口8259A.docx_第10页
第10页 / 共22页
接口8259A.docx_第11页
第11页 / 共22页
接口8259A.docx_第12页
第12页 / 共22页
接口8259A.docx_第13页
第13页 / 共22页
接口8259A.docx_第14页
第14页 / 共22页
接口8259A.docx_第15页
第15页 / 共22页
接口8259A.docx_第16页
第16页 / 共22页
接口8259A.docx_第17页
第17页 / 共22页
接口8259A.docx_第18页
第18页 / 共22页
接口8259A.docx_第19页
第19页 / 共22页
接口8259A.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

接口8259A.docx

《接口8259A.docx》由会员分享,可在线阅读,更多相关《接口8259A.docx(22页珍藏版)》请在冰点文库上搜索。

接口8259A.docx

接口8259A

第7章中断控制器

7.18259A的引脚信号、编程结构和工作原理

一、8259A的外部信号和含义

1、引脚图(图见附加页)与引脚说明

①D7~D0:

数据线

②INT:

中断请求信号;它与CPU的INTR相连,用来向CPU发中断请求(输出)

③INTA#:

中断应答信号;(输入)

④RD#:

读信号;此信号有效时8259A的内容可以输出到数据总线上(输入)

⑤WR#:

写信号;此信号有效时8259A的可以从总线上接收数据(输入)

⑥CS#:

片选信号;(输入)

⑦A0:

端口选择信号;8259A对应2个端口,一个偶端口一个奇端口(输入)

⑧IR7~IR0:

I/O设备的中断请求信号;(输入)

⑨CAS2~CAS0:

从片选择信号;级联时主片端输出,从片输入

⑩SP#/EN#:

主片和从片的选择和驱动信号;

此引脚双向操作

输入时:

=1表示主片,=0表示从片

输出时:

由此信号启动数据总线驱动器

2、说明:

在微机中有2片8259A,主片的地址为20H和21H,从片地址为A0H和A1H。

(微机与8259A的单片连接,级联连接图见附加页)

二、8259A的编程结构和工作原理

1、编程结构(见P236图7-1)

(1)上半部分:

处理部件

中断请求寄存器IRR

中断优先级裁决器PR

当前中断服务寄存器ISR

(2)下半部分:

7个寄存器

ICW1~ICW4:

存放初始化命令字

OCW1~OCW3:

存放操作命令字

2、工作原理:

中断请求寄存器IRR的8位与IR7~IR0对应,当8259A收到中断请求信号后,将在IRR对应位置1,然后根据中断屏蔽寄存器IMR(OCW1)的内容判断该中断请求是否被屏蔽(IMR中对应位为0表示屏蔽,为1表示不屏蔽),如果未屏蔽那么把中断请求信号送入中断优先级裁决器PR,判断此信号的优先级是否高于当前正在执行的中断服务程序,如果高于当前中断则发出中断请求信号。

一旦申请成功,INTA#收到两个负脉冲,

第一个脉冲:

使IRR失效,不接收新的中断请求;ISR对应位置1;IRR相应位清0

第二个脉冲:

将ICW2的内容送数据总线,作为中断类型号;如果ICW4的中断自动结束位为1,则将ISR清0。

7.28259A的工作方式

1.设置优先级的方式

(1)全嵌套方式:

优先级0级最高7级最低,只有比当前优先级高的中断才可以实行中断嵌套。

(2)特殊全嵌套方式:

优先级0级最高7级最低,与当前优先级相同的中断也可以实行中断嵌套。

(3)优先级自动循环方式:

优先级0级最高7级最低,响应过的中断优先级降为最低。

(4)优先级特殊循环方式:

首先编程设置最高优先级,响应过的中断优先级降为最低。

2.屏蔽中断源的方式

(1)普通屏蔽方式

(2)特殊屏蔽方式:

即通过修改屏蔽字以达到修改中断优先级的目的

(可参见计算机组成原理部分)

3.结束中断处理的方式

(1)中断自动结束方式:

只有一片8259A没有中断嵌套时使用;一旦系统进入中断,ISR的对应位自动清0。

(2)一般的中断结束方式:

考虑有中断嵌套时使用

(3)特殊的中断结束方式:

用当前中断服务寄存器ISR不能确定哪个中断是最后一个相应的,采用这种方式。

4.连接系统总线的方式

(1)缓冲方式:

在多片级联的系统中,8259A通过总线驱动器连接数据总线

(2)非缓冲方式:

8259A直接连接数据总线

5.引入中断请求的方式

(1)边沿触发方式:

中断请求输入引脚(IRi)输入上升沿作中断请求信号

(2)电平触发方式:

中断请求输入引脚(IRi)输入高电平作中断请求信号

(3)中断查询方式:

中断查询方式的特点:

8259A不使用INT信号向CPU发中断请求信号

CPU内部的中断允许触发器复位

CPU要使用软件查询来确认中断源

7.38259A的初始化命令字和操作命令字

一、8259A的初始化命令字

1、ICW1的格式和含义

ICW1叫做芯片控制初始化命令字。

8位寄存器,偶地址。

图见P243

①D7~D5:

未使用

②D4:

必须为1,作为ICW1的标志

③D3:

设定中断请求信号的形式,=0边沿触发,=1电平触发

④D2:

无意义

⑤D1:

级联状态;级联时主片和从片都=0,单片8259A时=1

⑥D0:

是否使用ICW4,=1使用,=0不使用

(2)ICW2的格式和含义

ICW2设置中断类型号的初始化命令字。

8位寄存器,奇地址。

①D7~D3:

表示中断类型号的高5位,

②D2~D0:

低3位自动分配,见P244表

(3)ICW3的格式和含义

ICW3标志主片/从片的初始化命令字。

8位寄存器,奇地址。

如果是主片,格式见P244图,每一位与IRi对应,=1表示连接从片,=0表示未连接从片;如果是从片,格式见P244图

①D7~D3:

无意义

②D2~D0:

对应主片引脚

(4)ICW4的格式和含义

ICW4叫做方式控制初始化命令字。

8位寄存器,奇地址。

图见P245

①D7~D5:

为000,作为ICW4的标志

②D4:

=1特殊全嵌套方式,=0非特殊全嵌套方式

③D3:

=1缓冲方式,=0非缓冲方式

④D2:

当D3=1时,=1表示主片,=0表示从片;当D3=0时,无意义

⑤D1:

=1中断自动结束方式,=0非中断自动结束方式,要用指令结束中断

⑥D0:

=1表示8259A所在系统为非8位系统(16位的8086),=0表示8位系统(8080/8085)

二、初始化流程(流程图见P246图7-2)

对初始化流程的几点说明

①ICW1写入偶端口,ICW2~ICW4写入奇端口

②ICW1~ICW4的设置次序固定

③ICW1和ICW2须设置,ICW3和ICW4非必须

④在级联时,主片和从片各设置ICW3

对8259A设置初始化命令字的例子(设8259A的口址为80H,81H)

MOVAL,13H

OUT80H,AL;设置ICW1

;00010011:

边沿触发,1片8259A,设置ICW4

MOVAL,18H

OUT81H,AL;设置ICW2

;00011000:

中断类型号:

18H——1FH

MOVAL,0DH

OUT81H,AL;设置ICW4

;00001101:

非特殊全嵌套方式,缓冲方式,主片,用指令结束中断,在8086系统

微机

MOVAL,13H

OUT20H,AL;设置ICW1

MOVAL,08H

OUT21H,AL;设置ICW2

MOVAL,0DH

OUT81H,AL;设置ICW4

7.48259A的操作命令字

(1)OCW1的格式和含义

OCW1叫做中断屏蔽操作命令字。

8位寄存器,奇地址。

图见P247

Di对应IRi,=1表示中断被屏蔽,=0表示中断被打开

(2)OCW2的格式和含义

OCW2用来设置优先级循环方式和中断结束方式的操作命令字。

8位寄存器,奇地址。

图见P247

①D7:

=1优先级循环方式,=0非优先级循环方式

②D6:

=1表示D2~D0有效(应用在优先级特殊循环方式中),=0D2~D0无效IR0优先级最高

③D5:

=1表示用OCW2作中断结束命令,令ISR复位,=0不用

D7~D5:

组合见P249表7-3,010组合无意义

当D7~D5=011时,特殊中断结束命令,D2~D0指出要清除当前中断服务寄存器的哪一位;

当D7~D5=110时,优先级特殊循环方式,D2~D0指出哪个中断优先级最低;

Di对应IRi,=1表示中断被屏蔽,=0表示中断被打开

(3)OCW3的格式和功能

OCW3的功能:

(1)设置和撤销特殊屏蔽方式

(2)设置中断查询方式(3)设置对内部寄存器的读出命令;偶地址。

图见P249

①D7:

②D6:

特殊的屏蔽模式允许位

③D5:

特殊的屏蔽模式允许位

D6D5:

=0X无意义,

=11只要IF=1系统可以响应任何未被屏蔽的中断请求,好像优先级失效

=10恢复优先级

④D4:

⑤D3:

⑥D2:

查询方式位,=1为中断查询方式

D2D1D0:

=1XX中断查询方式

=010读出IRR

=011读出ISR

=00X无操作

例如

MOVAL,0AH

OUT20H,AL

INAL,20H

;此时AL中为IRR

7.5看看再写

 

7.6多片8259A组成的主从式中断系统

以下是linux中的操作

主片

moval,0x11

out0x20,al

;边沿触发,级联,设置ICW4

moval,0x20

out0x21,al

;中断类型号:

20H——27H

moval,0x04

out0x21,al

IR2有从片

moval,0x01

out0x21,al

;非特殊全嵌套方式,非缓冲方式,非中断自动结束方式,16位系统

moval,0xff

out0x21,al

;屏蔽所有主片中断

从片

moval,0x11

out0xa0,al

;边沿触发,级联,设置ICW4

moval,0x28

out0xal,al

;中断类型号:

28H——2FH

moval,0x02

out0xal,al

从片连在主片IR2上

moval,0x01

out0xal,al

;非特殊全嵌套方式,非缓冲方式,非中断自动结束方式,16位系统

moval,0xff

out0xal,al

;屏蔽所有从片中断

 

设计一个中断处理程序。

要求中断请求信号以跳变方式由IR2引入(可为任一定时脉冲信号),当CPU响应IR2请求时,输出字符串“8259AINTERRUPT!

”,中断10次,程序退出(设8259A的端口地址为20H和21H,中断类型号为40H)。

  中断处理程序如下:

DATA   SEGMENT

  MESS   DB'8259A?

INTERRUPT!

',0AH,0DH,'$'

  COUNT  DB 10         ;计数值为10

  DATA   ENDS

  STACK  SEGMENT STACK

  STA   DB 100HDUP(?

  TOP   EQU LENGTH  STA

  STACK  ENDS

  CODE  SEGMENT

  ASSUME  CS:

CODE,DS:

DATA,SS:

STACK

  MAIN:

  CLI

  MOV   AX,DATA

  NOV   DS,AX

  MOV   AX,STACK

  MOV   SS,AX

  MOV   SP,TOP

  MOV   AL,13H       ;8259A初始化

  OUT   20H,AL        ;单片,边沿触发

  MOV   AL,40H        ;中断类型号40H

  OUT   21H,AL

  MOV   AL,01H        ;非自动结束

  OUT   21H,AL

  MOV   AX,SEGINT-P     ;设置中断向量

  MOV   DS,AX        ;中断服务子程序入口段基址送DS

  MOV   DX,OFFSETINT-P  ;中断服务子程序入口偏移地址送DX

  MOV   AL,42H        ;IR2的中断类型号42H送AL

  MOV   AH,25H        ;25H功能调用

  INT   21H

  IN    AL,21H        ;读IMR

  AND   AL,0FBH        ;允许IR2请求中断

  OUT   21H,AL        ;写中断屏蔽字OCW1

  WAIT1:

  STI          ;开中断

  CMP   COUNT,0        ;判断10次中断是否结束

  JNZ   WAIT1         ;未结束,等待

  MOV   AX,4C00H       ;结束,返回DOS

  INT   21H

  INT-P  PROC       ;中断服务子程序

  PUSH  DS        ;保护现场

  PUSH  AX

  PUSH  DX

  STI               ;开中断

  MOV   DS,AX

  MOV   DX,OFFSETMESS

  MOV   AH,09H

  INT   21H

  DEC   COUNT        ;控制10次循环

  JNZ   NEXT

  IN   AL,21H        ;读IMR

  OR   AL,04H      ;屏蔽IR2请求

  OUT   21H,AL

  NEXT:

  CLI          ;关中断

  MOV   AL,20H      ;写OCW2,送中断结束命令EOI

  OUT   20H,AL

  POP   DX          ;恢复现场

  POP   AX 

  POP   DS

  IRET              ;中断返回

  INT-P  ENDP

  CODE   ENDS

  END   MAIN

091ca.asm

dsegsegmentparapublic'data'

t1cipdw?

t1ccsdw?

keyipdw?

keycsdw?

sctabdb0,1Bh,'1234567890-=',08H

db09h,'QWERTYUIOP[]',0dh

db0,'ASDFGHJKL;',60h,0,0

db0,'ZXCVBNM,./',0

db0,0,20h,13dup(0)

db'789-456+1230.',0

buffdb0

countdw0

dsegends

csegsegment

assumecs:

cseg,ds:

dseg

mainprocfar

movax,dseg

movds,ax

pushds

movax,351ch

int21h

movt1cip,bx

movt1ccs,es

movdx,offsetnew1ch

movax,segnew1ch

movds,ax

movax,251ch

int21h

popds

movax,3509h

int21h

movkeyip,bx

movkeycs,es

movdx,offsetnew09h

movax,segnew09h

movds,ax

movax,2509h

int21h

inal,21h

andal,11111100b

out21h,al

movax,dseg

movds,ax

sti

lp:

;movax,0

;int16h

moval,buff

cmpal,1bh

jnzlp

pushds

movdx,t1cip

movds,t1ccs

movax,2509h

int21h

popds

movdx,keyip

movds,keycs

movax,2509h

int21h

movah,4ch

int21h

mainendp

new09hprocfar

pushax

pushbx

sti

inal,60h

cmpal,7fh;去掉断码

jnbeexit9

movbl,al

movbh,0

moval,sctab[bx]

movbuff,al;转换为ASCII码

cmpal,1bh

jbeexit9

movbl,0

movah,0eh

int10h

exit9:

cli

moval,20h

out20h,al

popbx

popax

iret

new09hendp

new1chprocfar

pushax

pushbx

pushcx

pushdx

sti

movbh,0

movah,3

int10h;取当前光标

pushdx

movdh,0

movdl,79

movbh,0

movah,2

int10h;设置新光标,右上角

movax,count

movbl,18

divbl

cmpal,10

jbnext1c

moval,0

movcount,0

next1c:

addal,30h

movbl,0

movah,0eh

int10h;显示

inccount

popdx

movbh,0

movah,2

int10h;恢复光标位置

cli

moval,20h

out20h,al

popdx

popcx

popbx

popax

iret

new1chendp

csegends

endmain

 

复习:

1、总线周期的含义是什么?

8086/8088的基本总线周期由几个时钟组成?

如一个CPU的时钟频率为24MHz,那么,它的一个时钟周期为多少?

一个基本总线周期为多少?

如主频为15MHz呢?

答:

1.总线周期的含义是总线接口部件完成一个取指令或传送数据的完整操作所需的最少时钟周期数。

2.8086/8088的基本总线周期由4个时钟周期组成。

3.当主频为24MHz时,Tφ=1/24MHz≈41.7ns,T总=4Tφ≈167ns。

4.当主频为15MHz时,Tφ=1/15MHz≈66.7ns,T总=4Tφ≈267ns。

2?

什么叫中断向量?

它放在那里?

对应于1CH的中断向量存放在哪里?

如果1CH的中断处理子程序从5110H:

2030H开始,则中断向量应怎样存放?

答:

1.中断处理子程序的入口地址就是中断向量。

2.中断向量放在0段的0~3FFH区域的中断向量表中。

3.对应于类型号为1CH的中断向量应放在00070~00073H的4个单元中。

4.若1CH的中断向量为5110H:

2030H,则中断向量的存放方法为:

00070H存放30H,00071H存放20H(IP);00072H存放10H,00073H存放51H(CS)。

2、设一个接口的输入端口地址为0100H,而它的状态端口地址为0104H,状态口中第5位为1表示输入缓冲区中有一个字节准备好,可输入。

设计具体程序实现查询式输入。

答:

DATASEGMENT

BUFFERDB20DUP(?

);接收数据缓冲区

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

STAT:

MOVAX,DATA;对DS初始化

MOVDS,AX

MOVDI,OFFSETBUFFER

MOVDX,0104H

STATIN:

INAL,DX

TESTAL,20H;测试第5位

JZSTATIN;第5位为0继续测试

MOVDX,0100H

INAL,DX;输入数据

MOV[DI],AL

CODEENDS

ENDSTAT

4、编程将8253计数器0设置为模式1,计数初值为3000H;计数器1设置为模式2,计数初值为2010H;计数器2设置为模式4,计数初值为4030H;地址设为0070H、0072H、0074H、0076H。

答:

MOVAL,32H;设置计数器0为模式1

OUT76H,AL

MOVAX,3000H;写计数初值

OUT70H,AL

MOVAL,AH

OUT70H,AL

MOVAL,74H;设置计数器1为模式2

OUT76H,AL

MOVAX,2010H;写计数初值

OUT72H,AL

MOVAL,AH

OUT72H,AL

MOVAL,0B8H;设置计数器2为模式4

OUT76H,AL

MOVAX,4030H;写计数初值

OUT74H,AL

MOVAL,AH

OUT74H,AL

5、对8255A设置工作方式,8255A的控制口地址为00C6H。

要求端口A工作在方式1,输入;端口B工作在方式0,输出;端口C的高4位配合端口A工作;低4位为输入。

答:

MOVDX,00C6H

MOVAL,0B1H;取方式选择控制字为B1H(10110001B)或B9H

OUTDX,AL

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

3000H。

答:

模式字为:

01111011B=7BH。

控制字为:

00110101B=35H。

MOVAL,0;为发复位命令作准备

OUT42H,AL

OUT42H,AL

OUT42H,AL

MOVAL,40H;发复位命令

OUT42H,AL

MOVAL,7BH;设置模式字,异步方式,规定波特率因子为64

;7个数据位,1个停止位,偶校验

OUT42H,AL

MOVAL,35H;设置控制字,使发送器和接收器启动,并清除

;出错标志

OUT42H,AL

PUSHDS

MOVBX,2000H;DS:

BX指向输出缓冲区首址

MOVDS,BX

MOVBX,3000H;缓冲区指针初始化

MOVCX,100H;发送100H个字节

BEGIN:

INAL,42H;读取状态字,测试TxRDY是否为1

TESTAL,01H

JZBEGIN;为0表示外设还未取走字符

MOVAL,[BX];从输出缓冲区取数

OUT40H,AL;发送字符

INCBX;修改缓冲区指针

LOOPBEGIN;则再发送下一个字符

POPDS

7、试按照如下要求对8259A设置初始化命令字:

系统中有1片8259A,中断请求信号用电平触发方式,下面要用ICW4,中断类型码为60H、61H……67H,用特殊全嵌套方式,不用缓冲方式,采用中断自动结束方式。

8259A的端口地址为90H、92H。

答:

MOVAL,1BH;ICW1的命令字为00011011B=1BH

OUT90H,AL;ICW1送偶地址端口

MOVAL,60H;ICW2的命令字为60H

OUT92H,AL;ICW2送奇地址端

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2