1
课前提问
CPU与外设交换信息的方式有几种?
2
课前提问
CPU与外设交换信息的方式有几种?
无条件
查询
中断
DMA
第 9章可编程定时 /计数控制器
8253原理及应用教学重点
8253的引脚和 6种工作方式
8253的编程
8253在 IBM PC系列机上的应用
4
定时器和计数器定时控制在微机系统中极为重要
定时器 由数字电路中的计数电路构成,
通过记录高精度晶振脉冲信号的个数,
输出准确的时间间隔
计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数 ( 进而获知外设的某种状态 ),
常又称为 计数器
5
定时功能的实现方法
软件延时 —— 利用微处理器执行一个延时程序段实现
不可编程的硬件定时 —— 采用分频器,
单稳电路或简易定时电路控制定时时间
可编程的硬件定时 —— 软件硬件相结合,
用可编程定时器芯片构成一个方便灵活的定时电路
6
4.3 8253/8254定时计数器
3个独立的 16位计数器通道
每个计数器有 6种工作方式
按二进制或十进制 ( BCD码 ) 计数
8254是 8253的改进型 (工作频率增加)
7
4.3.1 8253/8254的内部结构和引脚
8
计数器结构示意图预置寄存器
GATE
CLK OUT
减 1计数器输出锁存器计数初值存于 预置寄存器 ;
在计数过程中,
减法计数器 的值不断递减,
而预置寄存器中的预置不变。
输出锁存器 用于写入锁存命令时,
锁定当前计数值
9
计数器的 3个引脚
CLK时钟输入信号 —— 在计数过程中,
此引脚上每输入一个时钟信号 ( 下降沿 ),计数器的计数值减 1
GATE门控输入信号 —— 控制计数器工作,可分成电平控制和上升沿控制两种类型
OUT计数器输出信号 —— 当一次计数过程结束 ( 计数值减为 0),OUT引脚上将产生一个输出信号
10
4.3.2 8253/8254的工作方式
11
方式 0 计数结束中断
① ② ⑤④ ⑥
GATE
OUT
CLK
03 124
4方式 0WR
①
设定工作方式
②
设定计数初值
④
计数值送入计数器
⑤
计数过程
⑥
计数结束
12
五,8253-PIT的工作方式
* CW写入,OUT=0;
* 写入时常 LSB,通道开始计数;
* 计数到零,OUT=1;
* 计数器只计数一遍;
* OUT是 N+1个 CLK后变高;
* 计数过程中,GATE=0,
计数暂停;
* 计数过程中可改变计数值;
* 8253无中断控制,可用
OUT信号作为中断请求。
1,方式 0
4 3 2 1 0 FF
O U T
G A T E = 1
C L K
WR
C W = 1 0 L S B = 4
3 2 2 2 0 FF
O U T
G A T E
C L K
WR
C W =1 0 L S B =3
1 置时常
13
方式 1 可编程单稳脉冲
① ② ⑤④ ⑥ ①
设定工作方式
②
设定计数初值③
③
硬件启动
④
计数值送入计数器
⑤
计数过程
⑥
计数结束
GATE
OUT
CLK
03 124
4方式 1
WR
14
方式 1(可编程单稳 )
* 写入控制字 OUT=1,写入常数不计数;
* GATE启动计数,OUT=0;
* 计数到,OUT=1。
*单拍脉冲宽度为 N;
*由 GATE重新启动;
*计数中,可重新启动;
*计数中,可改变计数值,
再次启动有效。
二,8253- P I T 的工作方式
3 2 30 FF
O U T
G A T E
C L K
WR
C W = 1 2 L S B = 3
1二,825 3- P IT 的工作方式
3 2 3
0
O U T
G A T E
C L K
WR
C W =1 2 L S B =3
1 2 1
15
方式 2 频率发生器(分频器)
03 124
GATE
OUT
CLK
4方式 2
03 124
03 124
03 124
WR
16
3 2
O U T
G A T E
C L K
WR
C W = 1 4 L S B = 3
3 2 1 32
方式 2(速率发生器)
* 写入控制字 OUT=1;
* 写入常数立即对 CLK计数;
* 计数到 1,OUT=0;
* 一个 CLK周期后,OUT=1,
重新计数。
* 通道连续工作不需重置时常;
* 计数过程中,GATE=0,
计数暂停,GATE变高后重新计数;
* 计数过程中可改变计数值;
新的计数值在下一次有效。
3 2 1
O U T
G A T E = 1
C L K
WR
C W = 1 4 L S B = 3
3 2 1 3
17
方式 3 方波发生器
03 124
GATE
OUT
CLK
4方式 3
03 124
03 124
03 124
WR
18
5 4 2
O U T
G A T E = 1
C L K
WR
C W = 1 6 L S B = 5
25 45 2 5 2
方式 3(方波速率发生器)
* 与方式 2的区别在于:输出为周期是 N个 CLK脉冲的方波。
* 若计数值为偶数,每个 CLK
使计数值减 2,计到 0,OUT改变状态,重装计数值开始新的计数。
*若计数值为奇数,第一个脉冲先减 1,以后,每个 CLK使计数值减 2,计到 0 时,OUT改变状态,重装计数值后,第一个脉冲减 3,以后,每个
CLK使计数值减 2,计到 0时,OUT改变状态。
*GATE信号控制计数过程;
*计数过程中写入新的计数值将在半周期结束时装入计数器。
4 2 4
O U T
G A T E = 1
C L K
WR
C W = 1 6 L S B = 4
2 4 2 4 2
19
方式 4 软件触发选通信号
GATE
OUT
CLK
03 124
4方式 4
22 33
3
1 0
WR
20
方式 4(软件触发选通)
3 2 1
O U T
G A T E = 1
C L K
WR
C W = 1 8 L S B = 3
0 FF FE FD
3 2 1
O U T
G A T E = 1
C L K
WR
C W = 1 8 L S B = 3
01 FF2
L S B = 2
* 写入控制字 OUT=1;
* 写入常数立即对 CLK计数;
* 计数到 0,OUT=0;
* 一个 CLK周期后,OUT=1,
计数器停止计数。
* 计数器只计数一遍;
* OUT是 N+1个 CLK后变低;
* 计数过程中,GATE=0,计数暂停;
* 若在计数过程中,改变计数值,
则按新的计数值重新开始计数。
21
方式 5 硬件触发选通信号
GATE
OUT
CLK
03 124
4方式 5
22 33
3
1 1 0
WR
22
方式 5(硬件触发选通)
3 2 1
O U T
G A T E
C L K
WR
C W =1 A L S B = 3
0 FF 3
3 2 1
O U T
G A T E
C L K
WR
C W = 1 A L S B = 3
0
FF3 2
* 写入控制字 OUT=1;
* 写入常数后,由 GATE的上升沿启动计数;
* 计数到 0,OUT=0;
* 一个 CLK周期后,OUT=1,
计数器停止计数。
* 计数器只计数一次;
* OUT是 N+1个 CLK后变低;
* 在 计数过程中出现的 GATE脉冲,将使 计数器重新开始计数,
对输出状态没有影响;
* 若在计数过程中改变计数值,
只要没有 GATE信号触发,不影响计数过程。有新的 GATE信号触发则按新的计数值开始计数。
23
计数值 N与输入 CLK 和输出 OUT的关系方式 功能 N与 CLK 和 OUT的关系
0 计完最后一个数中断 写入 N后,过 N+1个 CLK输出变高
1 硬件再触发单拍脉冲 宽度为 N-1个 CLK的正脉冲
2 速率发生器 每 N个 CLK,输出 N-1个 CLK高,1个
CLK低
3 方波速率发生器 N为偶数:输出为 N/2个 CLK高,
N/2个 CLK低的方波; N为奇数:输出为 (N+1)/2个 CLK高,(N-1)/2个
CLK低的方波
4 软件触发选通 写入 N后过 N+1个 CLK,输出一个
CLK宽度的负脉冲
5 硬件触发选通 门控触发后过 N+1个 CLK,输出一个
CLK宽度的负脉冲各种工作方式的输出波形方式 0
方式 1
方式 2
方式 3
方式 4
方式 5
0
N 0 N 0
N 0/N1 1 0
N N/2N/2 0/N 0
N 0 1
N 0 1 N 0 1
25
8253几种工作方式的比较二,启动计数和重复计数的条件所有工作方式都必须设置计数值才能够开始工作,但不是所有的方式一经设置计数值就马上开始计数,需要有一定的条件才能工作 。 有些方式一经启动,计数器就永无休止的工作下去,而有些方式只能计数一次 。 如果要重复计数同样需要某些条件,这些条件如表 10-3所示
26
表 10-3 启动计数和重复计数的条件方 式 功 能 启动条件 重复条件
0 计完最后一个数中断 写计数值 写计数值
1 硬件再触发单拍脉冲 外部触发 外部触发
2 速率发生器 写计数值 自动
3 方波速率发生器 写计数值 自动
4 软件触发选通 写计数值 写计数值
5 硬件触发选通 外部触发 外部触发
31
4.3.3 8253/8254的编程
8253加电后的工作方式不确定
8253必须初始化编程,才能正常工作
写入控制字
写入计数初值
读取计数值
8254新增读回命令
D7 D6 D5 D4 D3 D2 D1 D0
32
1 写入方式控制字计数器 读写格式 工作方式 数制
D7 D6 D5 D4 D3 D2 D1 D0
00 计数器 0
01 计数器 1
10 计数器 2
11 非法
00 计数器锁存命令
01 只读写低字节
10 只读写高字节
11 先读写低字节后读写高字节
000 方式 0
001 方式 1
010 方式 2
011 方式 3
100 方式 4
101 方式 5
0 二进制
1 十进制控制字写入控制字 I/O地址( A
1A0= 11)
33
8253的控制字格式
34
2 写入计数值
选择二进制时
计数值范围,0000H~ FFFFH
0000H是最大值,代表 65536
选择十进制 ( BCD码 )
计数值范围,0000~ 9999
0000代表最大值 10000
计数值写入计数器各自的 I/O地址
35
8253/8254的 I/O地址
0 1 0 0 0
0 1 0 0 1
0 1 0 1 0
0 1 0 1 1
0 0 1 0 0
0 0 1 0 1
0 0 1 1 0
功 能对计数器 0设置计数初值
CS RD A1 A0WR
对计数器 1设置计数初值对计数器 2设置计数初值设置控制字从计数器 0读出计数值从计数器 1读出计数值从计数器 2读出计数值
36
8253的控制字例 【 1】 选用 计数器 0计数,计数值为 1000,用十进制 ( BCD)
方式计数,用方式 3计数,假设系统安排 8253计数器 0、
1,2和控制端口的地址分别为,220H,221H,222H和
223H,试对计数器 0编程初始化
MOV DX,223H
MOV AL,00110111H ;二进制方式计数
OUT DX,AL ;送计数方式控制字
MOV DX,220H
MOV AX,1000 ;十进制数 1000送给 AX
OUT DX,AL ;先送低 8位
MOV AL,AH
OUT DX,AL ;后送高 8位
37
3 读取计数值
对 8位数据线,读取 16位计数值需分两次
计数在不断进行,应该将当前计数值先行锁存,然后读取:
向控制字 I/O地址:给 8253写入锁存命令
从计数器 I/O地址:读取锁存的计数值读取计数值,要注意读写格式和计数数制
38
8254的控制字格式
39
例:要求计数器 0工作于方式 3,输出方波的频率为 2KHz,计数脉冲的频率为 2.5MHz,采用 BCD计数,试写出初始化程序段。
2,常数计算,TC = 2.5MHz/2KHz=1250
MOV AL,37H
OUT 83H,AL
MOV AL,50H
OUT 80H,AL
MOV AL,12H
OUT 80H,AL
1,8253的端口地址为,80H,81H,82H,83H。
00 01111 13,8253的方式控制字为:
4,初始化程序段:
41
计数器 0:定时中断
计数器 0,方式 3,计数值,65536,输出频率为 1.19318MHz÷ 65536= 18.206Hz的方波
门控为常启状态,这个方波信号不断产生
OUT0端接 8259A的 IRQ0,用作中断请求信号
每秒产生 18.206次中断请求,或说每隔 55ms
( 54.925493ms) 申请一次中断
DOS系统利用计数器 0的这个特点,通过 08号中断服务程序实现了日时钟计时功能
42
计数器 1:定时刷新
需要重复不断提出刷新请求门控总为高,选择方式 2或 3
2ms内刷新 128次,即 15.6?s刷新一次时钟 CLK频率为 1.19318MHz,求计数器 1的初始值是多少?
43
刷新周期,tn=2ms/128= 15.6?s
刷新频率,fn=1/tn=1/15.6us
初始值,N=fc/fn= 1.19318M/( 1/15.6us)
=18.613
取整数 18
44
计数器 1:定时刷新
需要重复不断提出刷新请求门控总为高,选择方式 2或 3
2ms内刷新 128次,即 15.6?s刷新一次计数初值为 18
定时刷新
moval,54h;计数器 1为方式 2,采用二进制计数,只写低 8位计数值
out 43h,al ;写入方式控制字
moval,18 ;计数初值为 18
out 41h,al ;写入计数值
8253初始化
46
4.3.8 扩充定时计数器的应用
例题 4.2
利用扩充定时计数器对外部事件的计数
47
方式 0 计数结束中断
① ② ⑤④ ⑥
GATE
OUT
CLK
03 124
4方式 0WR
①
设定工作方式
②
设定计数初值
④
计数值送入计数器
⑤
计数过程
⑥
计数结束
48
例 4.2
A0
A1
—
—
— A0
— A1 外部事件产生源
8253
OUT0
GATE0
CLK0
200~ 207H
IRQ
D0~ D7 D0~ D7
译码电路AENA3~ A9
+5V
CS
IOR
IOW
RD
WR
初始化程序段
movdx,203h ;设置方式控制字
moval,10h
out dx,al
movdx,200h ;设置计数初值
moval,64h ;计数初值为 100
out dx,al
例 8.2
50
作业,P326 例 9.3
题目修改:通道 1产生 0.5HZ的方波,通道 0
的输入频率为 4MHZ
第 4章 总结 (二)
1,掌握 8254引脚,尤其是 CLK,OUT、
GATE引脚的功能
2,掌握 8254的六种工作方式,编程和在 IBM PC系列机上的应用
课前提问
CPU与外设交换信息的方式有几种?
2
课前提问
CPU与外设交换信息的方式有几种?
无条件
查询
中断
DMA
第 9章可编程定时 /计数控制器
8253原理及应用教学重点
8253的引脚和 6种工作方式
8253的编程
8253在 IBM PC系列机上的应用
4
定时器和计数器定时控制在微机系统中极为重要
定时器 由数字电路中的计数电路构成,
通过记录高精度晶振脉冲信号的个数,
输出准确的时间间隔
计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数 ( 进而获知外设的某种状态 ),
常又称为 计数器
5
定时功能的实现方法
软件延时 —— 利用微处理器执行一个延时程序段实现
不可编程的硬件定时 —— 采用分频器,
单稳电路或简易定时电路控制定时时间
可编程的硬件定时 —— 软件硬件相结合,
用可编程定时器芯片构成一个方便灵活的定时电路
6
4.3 8253/8254定时计数器
3个独立的 16位计数器通道
每个计数器有 6种工作方式
按二进制或十进制 ( BCD码 ) 计数
8254是 8253的改进型 (工作频率增加)
7
4.3.1 8253/8254的内部结构和引脚
8
计数器结构示意图预置寄存器
GATE
CLK OUT
减 1计数器输出锁存器计数初值存于 预置寄存器 ;
在计数过程中,
减法计数器 的值不断递减,
而预置寄存器中的预置不变。
输出锁存器 用于写入锁存命令时,
锁定当前计数值
9
计数器的 3个引脚
CLK时钟输入信号 —— 在计数过程中,
此引脚上每输入一个时钟信号 ( 下降沿 ),计数器的计数值减 1
GATE门控输入信号 —— 控制计数器工作,可分成电平控制和上升沿控制两种类型
OUT计数器输出信号 —— 当一次计数过程结束 ( 计数值减为 0),OUT引脚上将产生一个输出信号
10
4.3.2 8253/8254的工作方式
11
方式 0 计数结束中断
① ② ⑤④ ⑥
GATE
OUT
CLK
03 124
4方式 0WR
①
设定工作方式
②
设定计数初值
④
计数值送入计数器
⑤
计数过程
⑥
计数结束
12
五,8253-PIT的工作方式
* CW写入,OUT=0;
* 写入时常 LSB,通道开始计数;
* 计数到零,OUT=1;
* 计数器只计数一遍;
* OUT是 N+1个 CLK后变高;
* 计数过程中,GATE=0,
计数暂停;
* 计数过程中可改变计数值;
* 8253无中断控制,可用
OUT信号作为中断请求。
1,方式 0
4 3 2 1 0 FF
O U T
G A T E = 1
C L K
WR
C W = 1 0 L S B = 4
3 2 2 2 0 FF
O U T
G A T E
C L K
WR
C W =1 0 L S B =3
1 置时常
13
方式 1 可编程单稳脉冲
① ② ⑤④ ⑥ ①
设定工作方式
②
设定计数初值③
③
硬件启动
④
计数值送入计数器
⑤
计数过程
⑥
计数结束
GATE
OUT
CLK
03 124
4方式 1
WR
14
方式 1(可编程单稳 )
* 写入控制字 OUT=1,写入常数不计数;
* GATE启动计数,OUT=0;
* 计数到,OUT=1。
*单拍脉冲宽度为 N;
*由 GATE重新启动;
*计数中,可重新启动;
*计数中,可改变计数值,
再次启动有效。
二,8253- P I T 的工作方式
3 2 30 FF
O U T
G A T E
C L K
WR
C W = 1 2 L S B = 3
1二,825 3- P IT 的工作方式
3 2 3
0
O U T
G A T E
C L K
WR
C W =1 2 L S B =3
1 2 1
15
方式 2 频率发生器(分频器)
03 124
GATE
OUT
CLK
4方式 2
03 124
03 124
03 124
WR
16
3 2
O U T
G A T E
C L K
WR
C W = 1 4 L S B = 3
3 2 1 32
方式 2(速率发生器)
* 写入控制字 OUT=1;
* 写入常数立即对 CLK计数;
* 计数到 1,OUT=0;
* 一个 CLK周期后,OUT=1,
重新计数。
* 通道连续工作不需重置时常;
* 计数过程中,GATE=0,
计数暂停,GATE变高后重新计数;
* 计数过程中可改变计数值;
新的计数值在下一次有效。
3 2 1
O U T
G A T E = 1
C L K
WR
C W = 1 4 L S B = 3
3 2 1 3
17
方式 3 方波发生器
03 124
GATE
OUT
CLK
4方式 3
03 124
03 124
03 124
WR
18
5 4 2
O U T
G A T E = 1
C L K
WR
C W = 1 6 L S B = 5
25 45 2 5 2
方式 3(方波速率发生器)
* 与方式 2的区别在于:输出为周期是 N个 CLK脉冲的方波。
* 若计数值为偶数,每个 CLK
使计数值减 2,计到 0,OUT改变状态,重装计数值开始新的计数。
*若计数值为奇数,第一个脉冲先减 1,以后,每个 CLK使计数值减 2,计到 0 时,OUT改变状态,重装计数值后,第一个脉冲减 3,以后,每个
CLK使计数值减 2,计到 0时,OUT改变状态。
*GATE信号控制计数过程;
*计数过程中写入新的计数值将在半周期结束时装入计数器。
4 2 4
O U T
G A T E = 1
C L K
WR
C W = 1 6 L S B = 4
2 4 2 4 2
19
方式 4 软件触发选通信号
GATE
OUT
CLK
03 124
4方式 4
22 33
3
1 0
WR
20
方式 4(软件触发选通)
3 2 1
O U T
G A T E = 1
C L K
WR
C W = 1 8 L S B = 3
0 FF FE FD
3 2 1
O U T
G A T E = 1
C L K
WR
C W = 1 8 L S B = 3
01 FF2
L S B = 2
* 写入控制字 OUT=1;
* 写入常数立即对 CLK计数;
* 计数到 0,OUT=0;
* 一个 CLK周期后,OUT=1,
计数器停止计数。
* 计数器只计数一遍;
* OUT是 N+1个 CLK后变低;
* 计数过程中,GATE=0,计数暂停;
* 若在计数过程中,改变计数值,
则按新的计数值重新开始计数。
21
方式 5 硬件触发选通信号
GATE
OUT
CLK
03 124
4方式 5
22 33
3
1 1 0
WR
22
方式 5(硬件触发选通)
3 2 1
O U T
G A T E
C L K
WR
C W =1 A L S B = 3
0 FF 3
3 2 1
O U T
G A T E
C L K
WR
C W = 1 A L S B = 3
0
FF3 2
* 写入控制字 OUT=1;
* 写入常数后,由 GATE的上升沿启动计数;
* 计数到 0,OUT=0;
* 一个 CLK周期后,OUT=1,
计数器停止计数。
* 计数器只计数一次;
* OUT是 N+1个 CLK后变低;
* 在 计数过程中出现的 GATE脉冲,将使 计数器重新开始计数,
对输出状态没有影响;
* 若在计数过程中改变计数值,
只要没有 GATE信号触发,不影响计数过程。有新的 GATE信号触发则按新的计数值开始计数。
23
计数值 N与输入 CLK 和输出 OUT的关系方式 功能 N与 CLK 和 OUT的关系
0 计完最后一个数中断 写入 N后,过 N+1个 CLK输出变高
1 硬件再触发单拍脉冲 宽度为 N-1个 CLK的正脉冲
2 速率发生器 每 N个 CLK,输出 N-1个 CLK高,1个
CLK低
3 方波速率发生器 N为偶数:输出为 N/2个 CLK高,
N/2个 CLK低的方波; N为奇数:输出为 (N+1)/2个 CLK高,(N-1)/2个
CLK低的方波
4 软件触发选通 写入 N后过 N+1个 CLK,输出一个
CLK宽度的负脉冲
5 硬件触发选通 门控触发后过 N+1个 CLK,输出一个
CLK宽度的负脉冲各种工作方式的输出波形方式 0
方式 1
方式 2
方式 3
方式 4
方式 5
0
N 0 N 0
N 0/N1 1 0
N N/2N/2 0/N 0
N 0 1
N 0 1 N 0 1
25
8253几种工作方式的比较二,启动计数和重复计数的条件所有工作方式都必须设置计数值才能够开始工作,但不是所有的方式一经设置计数值就马上开始计数,需要有一定的条件才能工作 。 有些方式一经启动,计数器就永无休止的工作下去,而有些方式只能计数一次 。 如果要重复计数同样需要某些条件,这些条件如表 10-3所示
26
表 10-3 启动计数和重复计数的条件方 式 功 能 启动条件 重复条件
0 计完最后一个数中断 写计数值 写计数值
1 硬件再触发单拍脉冲 外部触发 外部触发
2 速率发生器 写计数值 自动
3 方波速率发生器 写计数值 自动
4 软件触发选通 写计数值 写计数值
5 硬件触发选通 外部触发 外部触发
31
4.3.3 8253/8254的编程
8253加电后的工作方式不确定
8253必须初始化编程,才能正常工作
写入控制字
写入计数初值
读取计数值
8254新增读回命令
D7 D6 D5 D4 D3 D2 D1 D0
32
1 写入方式控制字计数器 读写格式 工作方式 数制
D7 D6 D5 D4 D3 D2 D1 D0
00 计数器 0
01 计数器 1
10 计数器 2
11 非法
00 计数器锁存命令
01 只读写低字节
10 只读写高字节
11 先读写低字节后读写高字节
000 方式 0
001 方式 1
010 方式 2
011 方式 3
100 方式 4
101 方式 5
0 二进制
1 十进制控制字写入控制字 I/O地址( A
1A0= 11)
33
8253的控制字格式
34
2 写入计数值
选择二进制时
计数值范围,0000H~ FFFFH
0000H是最大值,代表 65536
选择十进制 ( BCD码 )
计数值范围,0000~ 9999
0000代表最大值 10000
计数值写入计数器各自的 I/O地址
35
8253/8254的 I/O地址
0 1 0 0 0
0 1 0 0 1
0 1 0 1 0
0 1 0 1 1
0 0 1 0 0
0 0 1 0 1
0 0 1 1 0
功 能对计数器 0设置计数初值
CS RD A1 A0WR
对计数器 1设置计数初值对计数器 2设置计数初值设置控制字从计数器 0读出计数值从计数器 1读出计数值从计数器 2读出计数值
36
8253的控制字例 【 1】 选用 计数器 0计数,计数值为 1000,用十进制 ( BCD)
方式计数,用方式 3计数,假设系统安排 8253计数器 0、
1,2和控制端口的地址分别为,220H,221H,222H和
223H,试对计数器 0编程初始化
MOV DX,223H
MOV AL,00110111H ;二进制方式计数
OUT DX,AL ;送计数方式控制字
MOV DX,220H
MOV AX,1000 ;十进制数 1000送给 AX
OUT DX,AL ;先送低 8位
MOV AL,AH
OUT DX,AL ;后送高 8位
37
3 读取计数值
对 8位数据线,读取 16位计数值需分两次
计数在不断进行,应该将当前计数值先行锁存,然后读取:
向控制字 I/O地址:给 8253写入锁存命令
从计数器 I/O地址:读取锁存的计数值读取计数值,要注意读写格式和计数数制
38
8254的控制字格式
39
例:要求计数器 0工作于方式 3,输出方波的频率为 2KHz,计数脉冲的频率为 2.5MHz,采用 BCD计数,试写出初始化程序段。
2,常数计算,TC = 2.5MHz/2KHz=1250
MOV AL,37H
OUT 83H,AL
MOV AL,50H
OUT 80H,AL
MOV AL,12H
OUT 80H,AL
1,8253的端口地址为,80H,81H,82H,83H。
00 01111 13,8253的方式控制字为:
4,初始化程序段:
41
计数器 0:定时中断
计数器 0,方式 3,计数值,65536,输出频率为 1.19318MHz÷ 65536= 18.206Hz的方波
门控为常启状态,这个方波信号不断产生
OUT0端接 8259A的 IRQ0,用作中断请求信号
每秒产生 18.206次中断请求,或说每隔 55ms
( 54.925493ms) 申请一次中断
DOS系统利用计数器 0的这个特点,通过 08号中断服务程序实现了日时钟计时功能
42
计数器 1:定时刷新
需要重复不断提出刷新请求门控总为高,选择方式 2或 3
2ms内刷新 128次,即 15.6?s刷新一次时钟 CLK频率为 1.19318MHz,求计数器 1的初始值是多少?
43
刷新周期,tn=2ms/128= 15.6?s
刷新频率,fn=1/tn=1/15.6us
初始值,N=fc/fn= 1.19318M/( 1/15.6us)
=18.613
取整数 18
44
计数器 1:定时刷新
需要重复不断提出刷新请求门控总为高,选择方式 2或 3
2ms内刷新 128次,即 15.6?s刷新一次计数初值为 18
定时刷新
moval,54h;计数器 1为方式 2,采用二进制计数,只写低 8位计数值
out 43h,al ;写入方式控制字
moval,18 ;计数初值为 18
out 41h,al ;写入计数值
8253初始化
46
4.3.8 扩充定时计数器的应用
例题 4.2
利用扩充定时计数器对外部事件的计数
47
方式 0 计数结束中断
① ② ⑤④ ⑥
GATE
OUT
CLK
03 124
4方式 0WR
①
设定工作方式
②
设定计数初值
④
计数值送入计数器
⑤
计数过程
⑥
计数结束
48
例 4.2
A0
A1
—
—
— A0
— A1 外部事件产生源
8253
OUT0
GATE0
CLK0
200~ 207H
IRQ
D0~ D7 D0~ D7
译码电路AENA3~ A9
+5V
CS
IOR
IOW
RD
WR
初始化程序段
movdx,203h ;设置方式控制字
moval,10h
out dx,al
movdx,200h ;设置计数初值
moval,64h ;计数初值为 100
out dx,al
例 8.2
50
作业,P326 例 9.3
题目修改:通道 1产生 0.5HZ的方波,通道 0
的输入频率为 4MHZ
第 4章 总结 (二)
1,掌握 8254引脚,尤其是 CLK,OUT、
GATE引脚的功能
2,掌握 8254的六种工作方式,编程和在 IBM PC系列机上的应用