第八章中断技术,DMA控制器及定时器 /计数器主要内容中断的基本原理中断的实现方法中断控制器 8259A
DMA控制器 8237
计数器 /定时器 8253
中断的基本原理所谓中断,就是指当 CPU正在执行程序时,外设 (或其它中断源 )向 CPU
发出请求,CPU暂停当前程序的执行,
转向该外设服务 (或称中断服务 )程序,当中断服务程序运行结束后,
返回原程序继续执行的过程。
中断的基本原理中断过程包括:中断请求,中断判优,中断响应,中断处理,中断返回五个过程。
中断优先权
软件查询法是在 CPU响应中断后,用软件查询以确定是哪些外设申请中断,并判断它们的优先权中断的基本原理
硬件优先权排队电路
中断优先权排队电路可用硬件编码器和比较器组成的优先权排队电路中断的基本原理
硬件优先权排队电路
链式优先权排队电路也称雏菊花链将所有的中断源排成一个链。各中断源在链中的前后顺序是根据中断源优先级别的高低来排列。排在链前面的优先级最高。
中断的基本原理中断响应
中断响应的条件:
有中断请求信号
中断请求没有被屏蔽
中断是开放的
CPU在现行指令执行结束时响应中断中断的基本原理
中断响应
关中断
保存断点
保护现场
给出中断服务程序入口地址,并转入该服务程序
恢复现场
从中断返回
8086
8088
中断系统
8086/8088的中断源
8086/8088系统的中断源分为外部中断
(中断源来自 CPU外部)和内部中断(来自 CPU内部的中断)
内部中断
除法溢出中断 ――0 号中断
单步中断 ――1 号中断
INT指令中断
溢出中断 ――4 号中断
8086
8088
中断系统
外部中断
非屏蔽中断非屏蔽中断的优先权高于可屏蔽中断。其中断请求信号是发生在 NMI上的电压跳变(边沿触发)。
可屏蔽中断出现在 INTR线上的请求信号是电平触发的。
只有当中断允许标志位 IF为 1时,CPU才能响应
INTR的中断请求。如果 IF为 0,即使 INTR端有中断请求信号 CPU也不会响应。这种情况称为中断屏蔽 。
8086
8088
中断系统中断向量表
8086/8088系统支持最多 256个中断,对应每一个中断,都有一个中断服务程序,
该中断服务程序的入口地址称为中断向量。每个中断向量占用 4个字节,前两个字节为服务程序的 IP( 偏移量),后两个字节为服务程序的 CS( 段地址)。
8259A
中断控制器
8259A的结构及逻辑功能
功能
管理和控制 80x86的外部中断请求
实现中断判优
提供中断向量
屏蔽中断输入
使用单片 8259A可以管理 8级中断,采用级联方式,最多可管理 64级中断
8259A
中断控制器
结构
8259A
中断控制器
结构
中断请求寄存器 IRR
优先级分析器
中断服务寄存器 ISR
中断屏蔽寄存器 IMR
数据总线缓冲器
读 /写逻辑
级联缓冲器
8259A
中断控制器
8259A的引脚
8259A
中断控制器中断响应过程
( 1)外部设备在中断请求输入线( IR7~
IR0) 上发了中断请求,使中断请求寄存器 IRR的相应位置位。
( 2) IRR的内容与 IMR的内容相,与,,结果送给优先级分析器 。 中断优先级分析器把优先级最高的中断请求送到控制电路 。
( 3)控制电路将接收到的中断请求向 CPU
输出 INT信号。
8259A
中断控制器中断响应过程
( 4) 若 CPU是处在开中断状态,则在当前指令执行完以后,接收到 INT信号,输出一个中断响应脉冲,进入第一个中断响应周期 。
( 5) 8259A的脚上收到脉冲信号,就将最高优先级所对应的 IRR位清除,并将对应的 ISR位置位 。
( 6) CPU启动第二个中断响应周期,输出另一个脉冲,在这个周期 8259A向数据总线输出一个中断向量码 。
( 7) CPU读取该中断向量码,把它乘以 4,得到中断服务程序入口地址,转入该中断服务程序。
这样一个中断响应周期就完成了。
8259A
中断控制器
8259A的编程
8259A的初始化编程由 CPU向 8259A写初始化命令字 ICW
初始化命令字 ICW的格式及功能如下
1,ICW1
2,ICW2
D7 D6 D5 D4 D3 D2 D1 D0
X X X 1 LTIM ADI SNGL IC4
D7 D6 D5 D4 D3 D2 D1 D0
T7 T6 T5 T4 T3 X X X
8259A
中断控制器
3,ICW3
4,ICW4
D7 D6 D5 D4 D3 D2 D1 D0
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 SFNM BUF M/S AEOI μ PM
8259A
中断控制器
8259A的工作方式编程
1,OCW1是中断屏蔽命令字,D7~ D0分别控制对应的 IRQ7~ IRQ0上的中断请求被屏蔽还是开放。,1” 是屏蔽,,0” 是开放。
2,OCW2是用来设置中断优先级循环方式和发送 EOI命令。通过偶地址写 OCW2且命令字的
D4D3位都是,0”,标志着是对 OCW2设置,若
D4D3位是 01则是 OCW3,D4为 1则是 ICW1。
D7 D6 D5 D4 D3 D2 D1 D0
R SL EOI 0 0 L2 L1 L0
D7 D6 D5 D4 D3 D2 D1 D0
M7 M6 M5 M4 M3 M2 M1 M0
8259A
中断控制器
3,OCW3用于控制读中断状态、查询及屏蔽方式,此时要求 8259A的引脚
A0为 0即偶地址。
例:设 8259A初始化后屏蔽 IR2,设置特殊屏蔽方式,允许开放优先级低的中断。设端口地址为 20H和 21H。
D7 D6 D5 D4 D3 D2 D1 D0
X ESMM SMM 0 1 P RR RIS
8259A
中断控制器
8259A的操作方式
查询方式
中断屏蔽
缓冲模式
中断嵌套模式
中断优先权旋转
中断结束命令
读 8259A状态
8259A的级联可编程
DMA
控制器
8237A
利用 DMA方式传送数据时,数据的传送过程完全由硬件控制,这种电路称为 DMA控制器( DMAC)。 需要数据传送时,DMAC向 CPU提出申请,CPU
让出总线控制权,由 DMAC直接控制地址总线、数据总线和控制总线,
让存储器与高速的外部设备直接交换数据,CPU不再干预,这样大大减少了中间过程,提高了数据传送速度 。
可编程
DMA
控制器
8237A
8237A的结构和功能
引脚信号可编程
DMA
控制器
8237A
内部结构
8237A有 4个独立的 DMA通道,24个内部寄存器。
可编程
DMA
控制器
8237A
内部寄存器
基址寄存器和当前地址寄存器
基字节计数寄存器和当前字节计数寄存器
暂时地址寄存器
状态寄存器
命令寄存器
暂存寄存器
方式寄存器
屏蔽寄存器
请求寄存器
8237A的先/后触发器此触发器保证 16位寄存器的读写操作,以先低字节后高字节的顺序操作。
可编程
DMA
控制器
8237A
8237A的工作方式
单字节传送方式
DMA传送时,仅传送一个字节 。
块传送方式块传送方式由一个 DMA请求启动传送整个一个数据块,
在整个数据传送期间,系统总线一直被 DMAC所控制,
每传送一个数据,计数寄存器的值减 1。
请求传送方式在请求传送方式下 8237A被编程为连续传送,直至遇到 T/C或外部来的 为止,或者直到 DREQ不再有效为止。
级联方式多个 8237A进行级联时,将其中一个 DMAC作为主片,
其他作为从片。
EOP
可编程
DMA
控制器
8237A
8237A初始化编程
设置方式寄存器
PC机 BIOS在初始化时,将方式寄存器初始化为单字节传送方式、地址递增、通道 0为读传送、自动预置
(方式字为 58H),通道 1,2,3为校验传送、禁止自动预置,其方式字为 41H,42H,43H。
设置命令寄存器初始化必须设置命令寄存器,以确定其工作时序、
优先级方式,DREQ和 DACK的有效电平及是否允许工作等。
清除先/后触发器先 /后触发器是一个指针,当它为 0时,对低字节进行操作,当它为 1时,对高字节进行操作。
可编程
DMA
控制器
8237A
设置地址和字节计数器
8237A每个通道有四个 16位的寄存器。这四个寄存器是基地址寄存器和当前地址寄存器以及基本字节计数寄存器和当前字节计数寄存器。
清除屏蔽寄存器屏蔽寄存器是一个 4位寄存器,每一位代表一个通道。
当它为 1时,向该通道的 DMA请求被禁止;为 0时,则允许。
可编程定时器计数器
8253
8253的结构和功能
8253采用 N沟道 MOS工艺制成,有三个独立的 16
位计数器,只需要一组+ 5V电源。
8253的内部结构可编程
DMA
控制器
8237A
8253的内部结构
数据总线缓冲器它是 8位双向三态缓冲器,可直接连接到数据总线上 。
初始化编程时,CPU写入 8253的方式控制字和计数初值,CPU从计数器中读取的当前计数值都经这里传送 。
读 /写控制逻辑产生相应的控制信号,来选择读 /写操作的端口及控制数据的传送方向。
计数器 0,1,2
三个计数器的内部结构相同,但相互独立。计数器从时钟输入端接收时钟脉冲或事件计数脉冲。
控制字寄存器控制字寄存器是 8位的,只能写不能读 。 写入的内容包括计数器的工作方式或计数器的初值可编程定时器计数器
8253
8253的引脚信号
8253的功能
定时
计数可编程定时器计数器
8253
8253的方式控制字
( 1) SC1,SC0,用于选择计数器
SC1 SC0 选择的计数器
0 0 计数器 0
0 1 计数器 1
1 0 计数器 2
( 2) RW1,RW0,读 /写控制位
RW1 RW0 操作
0 0 计数器锁存
0 1 读 /写低字节
1 0 读 /写高字节
1 1 先读 /写低字节,后读 /写高字节
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC2 RW1 RW0 M2 M1 M0 BCD
可编程定时器计数器
8253
( 3) M2,M1,M0,方式选择位
M2 M1 M0 方式选择
0 0 0 方式 0
0 0 1 方式 1
0 1 0 方式 2
0 1 1 方式 3
1 0 0 方式 4
1 0 1 方式 5
( 4) BCD,选择计数格式 。 BCD=1,十进制计数 。 BCD=0,
二进制计数 。
可编程定时器计数器
8253
8253的工作方式
方式 0—— 计数结束产生中断在这种方式下,写入控制字之后,输出端 OUT
为低电平作为初始电平,并且在计数值到达 0
之前一直保持低电平。当计数到达 0时,输出端 OUT为高电平,并且一直保持高电平,除非写入新的计数值。
可编程定时器计数器
8253
方式 1— 可重复触发的单稳态触发器写入控制字之后,输出端 OUT以高电平作为起始电平,计数初值送到初值寄存器后,再经过一个时钟周期,便送到计数执行部件。另一方面,门控信号 GATE上升沿到来时,边沿触发器触发,下一个时钟脉冲时,输出端 OUT变为低电平,并在计数到达 0以前一直保持低电平。
可编程定时器计数器
8253
方式 2一分频器写入控制字之后,输出端 OUT变为高电平作为初始状态,当计数初值写入初值寄存器后,下一个时钟脉冲时,计数器初值被写到计数执行部件,然后计数执行部件作减 1计数。减到 1
(不是减到 0)时,输出 OUT变为低电平。
可编程定时器计数器
8253
方式 3— 方波发生器写入控制字之后,输出端 OUT出现高电平作为起始电平。
计数初值送到初值寄存器后,下一个时钟脉冲到来时,
计数执行部件获得初始计数值,并开始作减 1计数。当计数计到一半时,输出变为低电平,计数器继续作减 1
计数,计数到终值时,输出变为高电平,从而完成一个周期。之后,马上自动进入下一个周期。由此不断进行下去,产生周期为 N个时钟脉冲宽度的输出。
可编程定时器计数器
8253
方式 4-软件触发的选通写入控制字之后,输出端 OUT变为高电平作为初始电平,计数初值送到初值寄存器,再经过一个时钟周期,
计数执行部件获得计数初值,并开始计数。当计数器减到 0的时候,输出端 OUT变为低电平,此低电平持续一个时钟周期,然后又自动变为高电平并一直维持高电平。一般将此负脉冲作为选通信号。当计数值 N被送到计数初值寄存器后,在下一个时钟周期,计数初值被送到计数执部件,之后,计数执行部件作减 1计数,
又经过 N个时钟周期后,才输出一个负脉冲作为选通脉冲。
可编程定时器计数器
8253
硬件触发的选通写入控制字之后,输出端 OUT出现高电平作为起始电平。
写入计数值之后,必须有门控信号 GATE的上升沿到来,
才在下一个时钟周期将计数初值送到计数执行部件。
此后,计数执行部件作减 1计数,计数到达 0的时候,
输出端出现一个宽度为 1个时钟周期的负脉冲,然后又自动变为高电平,并将持续不变。此输出负脉冲可以用作选通脉冲,它是通过硬件电路产生的门控信号上升沿触发后得到的,所以叫硬件触发的选通脉冲。
可编程定时器计数器
8253
8253的初始化编程系统初始化时,由 BIOS对 8253进行初始化,
并进行检查,程序如下:
1.对计数器 0的初始化
CLI ;关中断
MOV AL,36H ; 选择计数器 0,双字节,方式 3,二进制计数的控制字
OUT 43H,AL ;送控制字寄存器
MOV AL,0 ; 置初值为 0
OUT 40H,AL ; 把低字节 ( LSB) 送到定时器 ( 计数器 )
寄存器
OUT 40H,AL ; 把高字节 ( MSB) 送到定时器 ( 计数器 )
寄存器可编程定时器计数器
8253
8253的初始化编程
2,对计数器 1的初始化
MOV AL,54H ; 选择计数器 1,写低字节,方式 2,M进制计数的控制字
OUT 43H,AL ; 送控制字寄存器
MOV AL,18 ; 赋值给低字节
OUT 41H,AL ; 送计数器 1
可编程定时器计数器
8253
8253的初始化编程
3,对计数器 2的初始化
MOV AL,10110110 ; 选择计数器 2,以双字节写,方式 3,二进制计数的控制字
OUT 43H,AL ; 送控制字寄存器
MOV AX,533H ; 确定 1000HZ的除数
OUT 42H,AL ; 把低字节 ( LSB) 送到定时器 ( 计数器 ) 2寄存器
MOV AL,AH ;
OUT 42H,AL ; 把高字节 ( MSB) 送到定时器 ( 计数器 ) 2寄存器
DMA控制器 8237
计数器 /定时器 8253
中断的基本原理所谓中断,就是指当 CPU正在执行程序时,外设 (或其它中断源 )向 CPU
发出请求,CPU暂停当前程序的执行,
转向该外设服务 (或称中断服务 )程序,当中断服务程序运行结束后,
返回原程序继续执行的过程。
中断的基本原理中断过程包括:中断请求,中断判优,中断响应,中断处理,中断返回五个过程。
中断优先权
软件查询法是在 CPU响应中断后,用软件查询以确定是哪些外设申请中断,并判断它们的优先权中断的基本原理
硬件优先权排队电路
中断优先权排队电路可用硬件编码器和比较器组成的优先权排队电路中断的基本原理
硬件优先权排队电路
链式优先权排队电路也称雏菊花链将所有的中断源排成一个链。各中断源在链中的前后顺序是根据中断源优先级别的高低来排列。排在链前面的优先级最高。
中断的基本原理中断响应
中断响应的条件:
有中断请求信号
中断请求没有被屏蔽
中断是开放的
CPU在现行指令执行结束时响应中断中断的基本原理
中断响应
关中断
保存断点
保护现场
给出中断服务程序入口地址,并转入该服务程序
恢复现场
从中断返回
8086
8088
中断系统
8086/8088的中断源
8086/8088系统的中断源分为外部中断
(中断源来自 CPU外部)和内部中断(来自 CPU内部的中断)
内部中断
除法溢出中断 ――0 号中断
单步中断 ――1 号中断
INT指令中断
溢出中断 ――4 号中断
8086
8088
中断系统
外部中断
非屏蔽中断非屏蔽中断的优先权高于可屏蔽中断。其中断请求信号是发生在 NMI上的电压跳变(边沿触发)。
可屏蔽中断出现在 INTR线上的请求信号是电平触发的。
只有当中断允许标志位 IF为 1时,CPU才能响应
INTR的中断请求。如果 IF为 0,即使 INTR端有中断请求信号 CPU也不会响应。这种情况称为中断屏蔽 。
8086
8088
中断系统中断向量表
8086/8088系统支持最多 256个中断,对应每一个中断,都有一个中断服务程序,
该中断服务程序的入口地址称为中断向量。每个中断向量占用 4个字节,前两个字节为服务程序的 IP( 偏移量),后两个字节为服务程序的 CS( 段地址)。
8259A
中断控制器
8259A的结构及逻辑功能
功能
管理和控制 80x86的外部中断请求
实现中断判优
提供中断向量
屏蔽中断输入
使用单片 8259A可以管理 8级中断,采用级联方式,最多可管理 64级中断
8259A
中断控制器
结构
8259A
中断控制器
结构
中断请求寄存器 IRR
优先级分析器
中断服务寄存器 ISR
中断屏蔽寄存器 IMR
数据总线缓冲器
读 /写逻辑
级联缓冲器
8259A
中断控制器
8259A的引脚
8259A
中断控制器中断响应过程
( 1)外部设备在中断请求输入线( IR7~
IR0) 上发了中断请求,使中断请求寄存器 IRR的相应位置位。
( 2) IRR的内容与 IMR的内容相,与,,结果送给优先级分析器 。 中断优先级分析器把优先级最高的中断请求送到控制电路 。
( 3)控制电路将接收到的中断请求向 CPU
输出 INT信号。
8259A
中断控制器中断响应过程
( 4) 若 CPU是处在开中断状态,则在当前指令执行完以后,接收到 INT信号,输出一个中断响应脉冲,进入第一个中断响应周期 。
( 5) 8259A的脚上收到脉冲信号,就将最高优先级所对应的 IRR位清除,并将对应的 ISR位置位 。
( 6) CPU启动第二个中断响应周期,输出另一个脉冲,在这个周期 8259A向数据总线输出一个中断向量码 。
( 7) CPU读取该中断向量码,把它乘以 4,得到中断服务程序入口地址,转入该中断服务程序。
这样一个中断响应周期就完成了。
8259A
中断控制器
8259A的编程
8259A的初始化编程由 CPU向 8259A写初始化命令字 ICW
初始化命令字 ICW的格式及功能如下
1,ICW1
2,ICW2
D7 D6 D5 D4 D3 D2 D1 D0
X X X 1 LTIM ADI SNGL IC4
D7 D6 D5 D4 D3 D2 D1 D0
T7 T6 T5 T4 T3 X X X
8259A
中断控制器
3,ICW3
4,ICW4
D7 D6 D5 D4 D3 D2 D1 D0
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 SFNM BUF M/S AEOI μ PM
8259A
中断控制器
8259A的工作方式编程
1,OCW1是中断屏蔽命令字,D7~ D0分别控制对应的 IRQ7~ IRQ0上的中断请求被屏蔽还是开放。,1” 是屏蔽,,0” 是开放。
2,OCW2是用来设置中断优先级循环方式和发送 EOI命令。通过偶地址写 OCW2且命令字的
D4D3位都是,0”,标志着是对 OCW2设置,若
D4D3位是 01则是 OCW3,D4为 1则是 ICW1。
D7 D6 D5 D4 D3 D2 D1 D0
R SL EOI 0 0 L2 L1 L0
D7 D6 D5 D4 D3 D2 D1 D0
M7 M6 M5 M4 M3 M2 M1 M0
8259A
中断控制器
3,OCW3用于控制读中断状态、查询及屏蔽方式,此时要求 8259A的引脚
A0为 0即偶地址。
例:设 8259A初始化后屏蔽 IR2,设置特殊屏蔽方式,允许开放优先级低的中断。设端口地址为 20H和 21H。
D7 D6 D5 D4 D3 D2 D1 D0
X ESMM SMM 0 1 P RR RIS
8259A
中断控制器
8259A的操作方式
查询方式
中断屏蔽
缓冲模式
中断嵌套模式
中断优先权旋转
中断结束命令
读 8259A状态
8259A的级联可编程
DMA
控制器
8237A
利用 DMA方式传送数据时,数据的传送过程完全由硬件控制,这种电路称为 DMA控制器( DMAC)。 需要数据传送时,DMAC向 CPU提出申请,CPU
让出总线控制权,由 DMAC直接控制地址总线、数据总线和控制总线,
让存储器与高速的外部设备直接交换数据,CPU不再干预,这样大大减少了中间过程,提高了数据传送速度 。
可编程
DMA
控制器
8237A
8237A的结构和功能
引脚信号可编程
DMA
控制器
8237A
内部结构
8237A有 4个独立的 DMA通道,24个内部寄存器。
可编程
DMA
控制器
8237A
内部寄存器
基址寄存器和当前地址寄存器
基字节计数寄存器和当前字节计数寄存器
暂时地址寄存器
状态寄存器
命令寄存器
暂存寄存器
方式寄存器
屏蔽寄存器
请求寄存器
8237A的先/后触发器此触发器保证 16位寄存器的读写操作,以先低字节后高字节的顺序操作。
可编程
DMA
控制器
8237A
8237A的工作方式
单字节传送方式
DMA传送时,仅传送一个字节 。
块传送方式块传送方式由一个 DMA请求启动传送整个一个数据块,
在整个数据传送期间,系统总线一直被 DMAC所控制,
每传送一个数据,计数寄存器的值减 1。
请求传送方式在请求传送方式下 8237A被编程为连续传送,直至遇到 T/C或外部来的 为止,或者直到 DREQ不再有效为止。
级联方式多个 8237A进行级联时,将其中一个 DMAC作为主片,
其他作为从片。
EOP
可编程
DMA
控制器
8237A
8237A初始化编程
设置方式寄存器
PC机 BIOS在初始化时,将方式寄存器初始化为单字节传送方式、地址递增、通道 0为读传送、自动预置
(方式字为 58H),通道 1,2,3为校验传送、禁止自动预置,其方式字为 41H,42H,43H。
设置命令寄存器初始化必须设置命令寄存器,以确定其工作时序、
优先级方式,DREQ和 DACK的有效电平及是否允许工作等。
清除先/后触发器先 /后触发器是一个指针,当它为 0时,对低字节进行操作,当它为 1时,对高字节进行操作。
可编程
DMA
控制器
8237A
设置地址和字节计数器
8237A每个通道有四个 16位的寄存器。这四个寄存器是基地址寄存器和当前地址寄存器以及基本字节计数寄存器和当前字节计数寄存器。
清除屏蔽寄存器屏蔽寄存器是一个 4位寄存器,每一位代表一个通道。
当它为 1时,向该通道的 DMA请求被禁止;为 0时,则允许。
可编程定时器计数器
8253
8253的结构和功能
8253采用 N沟道 MOS工艺制成,有三个独立的 16
位计数器,只需要一组+ 5V电源。
8253的内部结构可编程
DMA
控制器
8237A
8253的内部结构
数据总线缓冲器它是 8位双向三态缓冲器,可直接连接到数据总线上 。
初始化编程时,CPU写入 8253的方式控制字和计数初值,CPU从计数器中读取的当前计数值都经这里传送 。
读 /写控制逻辑产生相应的控制信号,来选择读 /写操作的端口及控制数据的传送方向。
计数器 0,1,2
三个计数器的内部结构相同,但相互独立。计数器从时钟输入端接收时钟脉冲或事件计数脉冲。
控制字寄存器控制字寄存器是 8位的,只能写不能读 。 写入的内容包括计数器的工作方式或计数器的初值可编程定时器计数器
8253
8253的引脚信号
8253的功能
定时
计数可编程定时器计数器
8253
8253的方式控制字
( 1) SC1,SC0,用于选择计数器
SC1 SC0 选择的计数器
0 0 计数器 0
0 1 计数器 1
1 0 计数器 2
( 2) RW1,RW0,读 /写控制位
RW1 RW0 操作
0 0 计数器锁存
0 1 读 /写低字节
1 0 读 /写高字节
1 1 先读 /写低字节,后读 /写高字节
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC2 RW1 RW0 M2 M1 M0 BCD
可编程定时器计数器
8253
( 3) M2,M1,M0,方式选择位
M2 M1 M0 方式选择
0 0 0 方式 0
0 0 1 方式 1
0 1 0 方式 2
0 1 1 方式 3
1 0 0 方式 4
1 0 1 方式 5
( 4) BCD,选择计数格式 。 BCD=1,十进制计数 。 BCD=0,
二进制计数 。
可编程定时器计数器
8253
8253的工作方式
方式 0—— 计数结束产生中断在这种方式下,写入控制字之后,输出端 OUT
为低电平作为初始电平,并且在计数值到达 0
之前一直保持低电平。当计数到达 0时,输出端 OUT为高电平,并且一直保持高电平,除非写入新的计数值。
可编程定时器计数器
8253
方式 1— 可重复触发的单稳态触发器写入控制字之后,输出端 OUT以高电平作为起始电平,计数初值送到初值寄存器后,再经过一个时钟周期,便送到计数执行部件。另一方面,门控信号 GATE上升沿到来时,边沿触发器触发,下一个时钟脉冲时,输出端 OUT变为低电平,并在计数到达 0以前一直保持低电平。
可编程定时器计数器
8253
方式 2一分频器写入控制字之后,输出端 OUT变为高电平作为初始状态,当计数初值写入初值寄存器后,下一个时钟脉冲时,计数器初值被写到计数执行部件,然后计数执行部件作减 1计数。减到 1
(不是减到 0)时,输出 OUT变为低电平。
可编程定时器计数器
8253
方式 3— 方波发生器写入控制字之后,输出端 OUT出现高电平作为起始电平。
计数初值送到初值寄存器后,下一个时钟脉冲到来时,
计数执行部件获得初始计数值,并开始作减 1计数。当计数计到一半时,输出变为低电平,计数器继续作减 1
计数,计数到终值时,输出变为高电平,从而完成一个周期。之后,马上自动进入下一个周期。由此不断进行下去,产生周期为 N个时钟脉冲宽度的输出。
可编程定时器计数器
8253
方式 4-软件触发的选通写入控制字之后,输出端 OUT变为高电平作为初始电平,计数初值送到初值寄存器,再经过一个时钟周期,
计数执行部件获得计数初值,并开始计数。当计数器减到 0的时候,输出端 OUT变为低电平,此低电平持续一个时钟周期,然后又自动变为高电平并一直维持高电平。一般将此负脉冲作为选通信号。当计数值 N被送到计数初值寄存器后,在下一个时钟周期,计数初值被送到计数执部件,之后,计数执行部件作减 1计数,
又经过 N个时钟周期后,才输出一个负脉冲作为选通脉冲。
可编程定时器计数器
8253
硬件触发的选通写入控制字之后,输出端 OUT出现高电平作为起始电平。
写入计数值之后,必须有门控信号 GATE的上升沿到来,
才在下一个时钟周期将计数初值送到计数执行部件。
此后,计数执行部件作减 1计数,计数到达 0的时候,
输出端出现一个宽度为 1个时钟周期的负脉冲,然后又自动变为高电平,并将持续不变。此输出负脉冲可以用作选通脉冲,它是通过硬件电路产生的门控信号上升沿触发后得到的,所以叫硬件触发的选通脉冲。
可编程定时器计数器
8253
8253的初始化编程系统初始化时,由 BIOS对 8253进行初始化,
并进行检查,程序如下:
1.对计数器 0的初始化
CLI ;关中断
MOV AL,36H ; 选择计数器 0,双字节,方式 3,二进制计数的控制字
OUT 43H,AL ;送控制字寄存器
MOV AL,0 ; 置初值为 0
OUT 40H,AL ; 把低字节 ( LSB) 送到定时器 ( 计数器 )
寄存器
OUT 40H,AL ; 把高字节 ( MSB) 送到定时器 ( 计数器 )
寄存器可编程定时器计数器
8253
8253的初始化编程
2,对计数器 1的初始化
MOV AL,54H ; 选择计数器 1,写低字节,方式 2,M进制计数的控制字
OUT 43H,AL ; 送控制字寄存器
MOV AL,18 ; 赋值给低字节
OUT 41H,AL ; 送计数器 1
可编程定时器计数器
8253
8253的初始化编程
3,对计数器 2的初始化
MOV AL,10110110 ; 选择计数器 2,以双字节写,方式 3,二进制计数的控制字
OUT 43H,AL ; 送控制字寄存器
MOV AX,533H ; 确定 1000HZ的除数
OUT 42H,AL ; 把低字节 ( LSB) 送到定时器 ( 计数器 ) 2寄存器
MOV AL,AH ;
OUT 42H,AL ; 把高字节 ( MSB) 送到定时器 ( 计数器 ) 2寄存器