8章-8259、8253芯片

定时/计数控制器8253

定时/计数原理

定时与计数的实质:

脉冲进行计数

定时器:

有计数电路构成,通过记录高精度晶振脉冲信号的个数输出准确的时间间隔

计数器:

计数电路如果记录外设提供具有一定随机性的脉冲信号,它主要反应脉冲的个数 

采用减一计数的倒计数原理,每过一个CLK周期计算机减一

软件延迟:

软件延时:

8253的内部结构和引脚

要求:

数据总线缓冲器

控制字寄存器

引脚

与处理器接口

CS、RD、WR、A1和A0组合起来所产生的选择与操作功能:

计数器内部结构

写入计数器的初始值保存在计数初值寄存器中

由CLK脉冲的一个上升沿和一个下降沿将其装入减1计数器

输出寄存器的值跟随减一计数器变化,仅当写入锁存控制字

在计数过程中,CPU随时可以用指令读取任一计数器的当前计数值,这一操作对计数器没有影响

计数器的输入CLK与输出OUT,记门控信号GATE之间的关系,取决于计数器的工作方式

8253的工作方式

有六种工作方式

工作方式:

工作方式0:计数结束中断方式

工作特点:
1、2、3

方式1:可编程单稳负脉冲

工作特点:
1、2、3

方式2:频率发生器(分频器)

工作特点:1、2、3

方式3:方波发生器

工作特点:
1、2

方式4:软件触发选通信号

工作特点:
1、2

方式5:硬件触发选通信号

工作方式特点

方式1-5的输出波形

8253的编程

方式控制字

D0-D7

7      6            5      4         3      2       0     1

选择计数器   数据读写      方式          二进制还是十进制

计数值(初值)N

有二进制和BCD(四位是一位十进制数)

频率  HZ      KHZ       MHZ

       1S=1000MS=1000000US

练习

计数器0工作在方式1,按BCD吗计算初值3000

模板:

MOV        AL,_ _11_ _ _ _B

MOV        DX,_ _

OUT        DX,AL                ;方式字——>控制端口

MOV        AX,——

MOV        DX,——

OUT        DX,AL

MOV        AL,AH

OUT        DX,AL

中断控制器8259A

8259A内部结构

28个引脚

中断级联

内部寄存器

中断请求寄存器IRR

中断服务寄存器ISR

中断屏蔽寄存器IMR

与处理器接口(偶地址,奇地址)

直连8086芯片:是非缓冲

响应时序

8259A的工作方式

普通全嵌套方式

特殊全嵌套方式

优先权自动循环方式

优先权特殊循环方式

结束中断处理方法

ISR=0

自动中断结束方式:

一般中断结束方式:

特殊中断结束方式:

屏蔽中断源方式

中断请求方式

边沿触发方式

电平触发方式

中断查询方式

数据线连接方式

缓冲方式

非缓冲方式

8259A的编程

8259A芯片的初始化流程

初始化命令字ICW

ICW1:

ICW2:

ICW3:

ICW4:

2.操作命令字OCW

OCW1:中断屏蔽操作控制字

OCW2:优先级循环和中断结束命令字

OCW3:设置特殊屏蔽方式命令字

D7-D5组合命令编码

  • 13
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
8259是一种可编程中断控制器,它可以处理多个设备的中断请求。在计算机系统中,中断是一种非常重要的机制,可以使CPU不必等待一些外设的操作完成,从而提高了系统的效率。 8259最常见的应用是在IBM PC和兼容机中,它可以管理PC中的各种设备,如键盘、鼠标、硬盘、打印机等等。在8259中,有8个中断请求线(IRQ0-IRQ7),可以连接到不同的设备上。当设备需要CPU的处理时,会向8259发送一个中断请求信号,8259会将这个请求转发给CPU,CPU会暂停当前正在执行的程序,转而去处理中断程序。当中断程序执行完毕后,CPU会回到原来的程序继续执行。 在本实验中,我们将学习如何使用汇编语言编写8259的初始化程序,使其可以正确地处理中断请求。 首先,我们需要了解8259的一些基本概念和寄存器。 8259有两个级联的芯片,一个是主芯片(master),另一个是从芯片(slave)。主芯片的IRQ0-IRQ7可以连接到不同的设备上,而从芯片只能连接到主芯片的某一个IRQ上。当从芯片需要处理中断请求时,它会向主芯片发送一个中断请求信号,由主芯片将这个请求转发给CPU。 8259有两个重要的寄存器,一个是控制寄存器(ICW),另一个是中断屏蔽寄存器(IMR)。 控制寄存器(ICW)分为4个字节,分别是ICW1、ICW2、ICW3、ICW4。ICW1用于设置8259的工作方式,ICW2用于设置中断向量号,ICW3用于设置级联方式,ICW4用于设置一些特殊功能。在初始化8259时,需要写入这些寄存器的值,以完成8259的设置。 中断屏蔽寄存器(IMR)用于控制8259对中断请求的响应。当某个设备需要中断处理时,它会向8259发送一个中断请求信号,如果该设备所在的IRQ对应的IMR位被设置为1,则8259会忽略该请求。只有当该位被清零后,8259才会将请求转发给CPU。 下面是一个简单的8259初始化程序,可以将主芯片的IRQ0-IRQ7全部开启,并设置中断向量号为0x20-0x27。该程序的实现过程如下: 1. 关闭中断,以免在初始化过程中被其他中断打断。 2. 向8259的控制寄存器写入ICW1,设置8259的工作方式为初始化。 3. 向8259的控制寄存器写入ICW2,设置中断向量号为0x20-0x27。 4. 向8259的控制寄存器写入ICW3,设置主芯片的从芯片连接方式。 5. 向8259的控制寄存器写入ICW4,设置一些特殊功能。 6. 向8259的中断屏蔽寄存器写入初始值,使得所有中断请求都能被响应。 7. 打开中断,使得CPU能够响应中断请求。 下面是该程序的具体实现过程: ``` ; 8259初始化程序 ; 将主芯片的IRQ0-IRQ7全部打开 ; 中断向量号为0x20-0x27 section .text global init_8259 init_8259: cli ; 关闭中断 ; 初始化8259 mov al, 0x11 ; ICW1:初始化,边沿触发,级联8259 out 0x20, al mov al, 0x20 ; ICW2:中断向量号从0x20开始 out 0x21, al mov al, 0x04 ; ICW3:连接从芯片到IRQ2 out 0x21, al mov al, 0x01 ; ICW4:8086模式,正常EOI out 0x21, al ; 设置IMR,打开所有中断 mov al, 0x00 ; IMR初始化为0,使得所有中断请求都能被响应 out 0x21, al sti ; 打开中断 ret ``` 在上述程序中,我们使用了汇编语言的in/out指令向8259的寄存器中写入数据,从而完成了8259的初始化设置。 该程序的主要作用是将8259初始化为可用状态,以便处理各种设备的中断请求。在实际应用中,我们可以将该程序作为系统启动时的一部分,以保证系统能够正确地响应各种中断请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值