微机第08章(定时器)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8253
OUT1 CLK
PB0
PB1
OUT2
方波
接至扬声器驱动器 (约900Hz)
22
8.2.1 定时中断和定时刷新
阅读初始化程序段,看计数器0 触发55ms定时中断的作用 将计数器1用作对DRAM定时刷 新(15us)的触发信号,考虑如 何编写初始化程序段
23
定时中断(CH0)
mov al,36h out 43h,al mov al,0 out 40h,al out 40h,al
speakon
PC机上8255地址:60h-63h
30
扬声器控制
关扬声器子程序
speakon proc push ax in al,61h and al,0fch out 61h,al pop ax ret endp ;无入口参数
;D1D0=PB1PB0=00B, ;其他位不变
speakon
PC机上8255地址:60h-63h
in al,61h out 61h,al
;读8255 B口 ;写8255 B口
28
频率设置子程序(CH2)
speaker proc push ax mov al,0b6h out 43h,al pop ax out 42h,al mov al,ah out 42h,al ret endp
;入口参数(发声频率) ;方式3 ;写入控制字
34
日时钟
;延时5秒开始 mov ah,0 int 1ah add dx,90 mov bx,dx int 1ah cmp bx,dx jne repeat ……
repeat:
;子功能号 ;BIOS中断 ;再加5秒(5×18=90) ;期望值送bx ;再读日时钟 ;与期望值比较 ;不等,则循环 ;相等,延时结束
⑤
⑥
④ ⑥② ⑤① 计 数 计设 计设 值 数定 数定 送 结计 过工 入 束数 程作 计 初 方 数 值 式 器
GATE:开关作用
11
方式1 可编程单稳脉冲
①
写入方式1 -WR CLK GATE
②
写入4
④
⑤
⑥
④ ⑥ ② ⑤ ① 计 ③ 数 计 设 计 设 值 数硬 数定 送定 结件 过计 入工 束启 程数 计作 动 初 数方 值 器式
对8位数据线,读取16位的计数值,需要分两次 进行 由于计数在不断进行,故应将当前计数值先行锁 存,然后再读取:
向控制字I/O地址写入锁存命令 从计数器I/O地址读取被锁存的计数值 只读低8位 只读高8位 先低后高
3 种读取方式:
读取计数值时要注意格式和数制
21
8.2 8253在IBM PC系列机上的应用
;写入低8位计数值 ;写入高8位计数值
speaker
PC机上8253地址:40h-43h
29
扬声器控制
开扬声器子程序
speakon proc push ax in al,61h or al,03h out 61h,al pop ax ret endp ;无入口参数
;D1D0=PB1PB0=11B, ;其他位不变
-IOR — RD -IOW — WR A0 — A0 A1 — A1 -T/C CS — CS D0~D7 1.19318MHz +5V D0~D7 CLK0 CLK1 CLK2 GATE0 GATE1 GATE2 方波
OUT0
+5V
IRQ0 (55ms) 连续负脉冲 D Q DRQ0接至DMA控制器 (15us) DACK0 BRD
PC/AT以后的PC机新增加的定时中断资源
33
8.2.3 可编程硬件延时
日时钟中断(INT 1AH)——每隔55ms中断 一次不变的特点,可以利用它编写一段不随系 统时钟频率变化的固定延时程序。由于日时钟 中断的时间单位是55ms,所以无法实现更短 时间的延时
实时时钟中断(INT 15H)——它的定时单位 约为1ms(976 s=1/1024s)
31
扬声器控制
主程序
;数据段 dw 1193180/600 ;代码段 mov ax,freq call speaker call speakon mov ah,1 int 21h call speakoff
freq
;600为发声频率(音调)
;设置扬声器音调 ;打开扬声器声音 ;等待按键 ;关闭扬声器声音
可编程硬件延时 35
实时时钟
;延时2ms开始 mov cx,0 ;入口参数cx.dx单位us ;实际以976us为单位,否则将失败 mov dx,1952 ;延时1952us=976s×2 ;应为976的整数倍 mov ah,86h ;86h为子功能号 int 15h ;返回时,定时时间到
OUT
GATE:开关作用 初值N为偶数:N/2脉冲数输出高, N/2脉冲数输出低 初值N为奇数:(N+1)/2脉冲数输出高, (N-1)/2脉冲数输出低
14
方式4 软件触发选通信号
写入 方式4 -WR 写入 4 写入 3
CLK GATE
4 3 2 1 0 OUT 3 2 1 0
GATE:开关作用
25
计数器1:定时刷新DRAM
需要重复不断提出刷新请求
门控端常有效,可选方式2或方式3
2ms内必须刷新128次,即每15.6s刷新1次 计数初值为18 (频率为1.19318MHz/18周期为
15.09us )
26
定时刷新DRAM (CH1)
mov al,54h out 43h,al mov al,18 out 41h,al
8
计数器的3个引脚
CLK(时钟)——输入,在计数过程中,此引脚上每 输入1个时钟信号(下降沿),计数器的计数值将减1 GATE(门控)——输入,控制计数器工作:
开启/关闭计数——高电平时允许计数通道工作 触发/重触发——上升沿产生触发或重触发
OUT(计数器输出)——输出,根据设置工作方式的 不同, OUT引脚可输出单个或连续的波形信号。一般 是在计数过程结束时(计数值归0),OUT引脚信号 发生变化。
3
定时功能的实现方法
用软件实现延时——利用微处理器执行一个延 时程序段实现 用硬件实现定时
采用不可编程器件——如分频器、单稳电路、 简易定时电路; 采用可编程器件——采用可编程的定时/计数芯 片和软件硬件结合的办法构成灵活的定时电路, 可在不同的时间段内采用不同的定时策略。
4
8.1 8253/8254定时计数器
;计数器0为方式3,采用二进制计数, ;先低后高写入计数值 ;写入方式控制字 ;计数值为0 ;写入低字节计数值 ;写入高字节计数值
PC机上8253地址:40h-43h
24
8253初始化
计数器0:定时中断
工作于方式3,计数初值:0,门控端GATE常有效 输出方波频率18.206Hz=1.19318MHz/65536,周期约为 55ms。 OUT0接8259A的IRQ0端,用作中断请求信号。每秒 钟产生18.2次中断请求,即每隔55ms(54.925493ms) 申请1次中断 DOS系统利用计数器0和08号中断实现日时钟的计时功 能
;计数器1为方式2,采用二进制计数 ;只写低8位计数值 ;写入方式控制字 ;计数初值为18 ;写入计数值
PC机上8253地址:40h-43h
27
8253初始化
8.2.2 扬声器的发声及控制
计数器2 的输出频率控制PC机中扬声器的音调高低, 通过初始化设置可加以改变。
计数器2 工作于方式3(连续方波),经滤波后可得 到近似的正弦波,以此驱动扬声器发声(单音) 扬声器同时还受控于并行接口(8255芯片),必须使 8255的输出端 PB0 和 PB1 同时输出高电平,与门才开 通,扬声器才能发声,8255 B口的地址为 61H。
32
扬声器控制
8.2.3 可编程硬件延时
PC/XT/AT提供的定时中断资源
采用8253/8254定时芯片 08H 号 硬 中 断 ——8253/8254 通 道 0 产 生 , 引 向 8259 的 IR0, 8253/8254 的CLK频率为1.19318MHz,每55ms 发生1次 INT 1AH——BIOS中断功能调用,以55ms为单位 INT 1CH——报时中断,被嵌在08H号中断服务中 采 用 146818 定 时 芯 片 并 配 有 后 备 电 池 , 提 供 周 期 中 断 (976us)和报警中断两个输出. 70H号硬中断——146818周期中断输出引向8259(2)的 IR9,该中断被称为实时时钟中断,每976us=1/1024s发 生1次 INT 1AH——扩充了操作实时时钟的功能 (子功能号2~7) INT 15H——BIOS中断功能调用,以976us为单位
0
17
8.1.3 8253/8254的编程
8253加电后的工作方式不确定,必须经初始 化编程后,才能正常工作 初始化编程:
先写入控制字 再写入计数初值 一般先将计数值锁存在通道内的锁存器中 然后可分两次读取16位的计数值
工作后,可随时读取计数值:
8254 新增的读回命令
18
1 写入方式控制字
11控制字寄存器存放工作方式选择控制字计数器读写格式工作方式数制d7d6d5d4d3d2d1d000计数器001计数器110计数器211非法00计数器001计数器110计数器211非法00计数器锁存命令01只读写低字节10只读写高字节11先读写低字节后读写高字节00计数器锁存命令01只读写低字节10只读写高字节11先读写低字节后读写高字节000方式0001方式1010方式2011方式3100方式4101方式5000方式0001方式1010方式2011方式3100方式4101方式5十进制bcd控制字写入控制字io地址a1a011控制字写入控制字io地址a1a0111281382538254的工作方式硬件触发选通13方式0计数结束中断gateoutclk写入4写入方式0wrgate
D7 D6 D5 D4 D3 D2
工作方式
D1来自百度文库
D0
数制
计数器
读写格式
00 000 方式0 计数器0 00 计数器锁存命令 0 二进制 01 001 方式1 计数器1 01 只读写低字节 1 十进制(BCD) 010 方式2 10 计数器2 10 只读写高字节 11 011 方式3 非法 11 先读写低字节 100 方式4 后读写高字节 101 方式5
6
计数器(通道)内部结构示意图
预置寄存器
CLK GATE
减1计数器
OUT
输出锁存器
7
计数器工作描述
预置寄存器——用于存放计数初值,注意:
可采用二进制或十进制(BCD码) 计数初值为0时,计数值最大(65536/10000) 计数初值为1时,计数值最小(1/1)
减法计数器——CLK引脚每收到一个脉冲,减 法计数器将减1。注意,预置寄存器中的预置 值不会改变。 输出锁存器——用于锁定当前的计数值,这样 CPU在读取时,该值将不再变化
3个独立的计数器通道,每个计数通道16位,可 进行:
定时——对引脚上输入的周期性时钟信号进行计数 计数——对引脚上输入的非周期性脉冲信号进行计数
每个计数器有 6 种工作方式 可按二进制或十进制(BCD码)进行计数 8254是8253的改进型二者差别很小
5
8.1.1 8253/8254的内部结构和引脚
控制字写入控制字I/O地址(A1A0=11)
19
2 写入计数初值
选择二进制时
计数范围:1H~10000H 初值写入0时计数最大(65536/10000H) 计数范围:1~10000 初值写入0时计数最大(10000)
选择十进制(BCD码)时
计数值写入计数器各自的 I/O地址
20
3 读取计数值
9
8.1.2 8253/8254的工作方式
方式0 —— 计数结束中断
方式1 —— 可编程单稳
方式2 —— 连续负脉冲发生器
方式3 —— 连续方波发生器
方式4 —— 软件触发选通 方式5 —— 硬件触发选通
10
方式0 计数结束中断
① ② ④
写入方式0 写入4 -WR CLK GATE 4 OUT 3 2 1 0
第 8 章
定时计数控制器
1
第8章 定时计数控制器
教学重点
8253 的引脚和 6 种工作方式 8253 的编程 8253 在IBM PC系列机上的应用
2
定时器和计数器
定时控制在微机系统中极为重要
定时器由数字电路中的计数电路构成,通过记 录高精度晶振脉冲信号的个数,输出准确的时 间间隔 计数电路如果记录外设提供的具有一定随机性 的脉冲信号时,它主要反映脉冲的个数(进而 获知外设的某种状态),常又称为计数器
15
方式5 硬件触发选通信号
写入 方式5 -WR CLK GATE 4 3 2 1 0 3 2 1 3 2 1 0 写入 4 写入 3
OUT
GATE:触发作用
触发 重触发:装计数值
16
各种工作方式的输出波形
方式 0 方式 1 方式 2 方式 3 方式 4 方式 5
N N N N/2 N 0 1 N N 0 1 0/N 0/N N/2 N 0 1 0 0 0 1 0 1
③
OUT
4
3
2
1
0
GATE:触发作用
12
方式2 频率发生器(分频器)
写入 方式2 -WR CLK GATE 4 3 2 1 4 1 0 3 2 1 0 写 入 4
4 3
0
2 1
0 4 3 2
OUT
GATE:开关作用
13
方式3 方波发生器
写入 方式3 -WR CLK GATE 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 写入 4