8253举例解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
10秒定时输出 通道1 通道2
8253通道的级联
14
设计数器初值N1=500=1F4H,N2=20000=4E20H,使 用方式2,二进制计数,则通道1、2的初始化程序如下:
MOV DX,323H MOV AL,74H OUT DX,AL MOV DX,321H ;01110100B,通道1,写入16位初值,方式2, ;二进制计数 ;写入通道1方式字
INT +5V 2.5MHZ 8255PA0 OUT0 GATE0
例:使1号计数器T1,工作在0方式,采用十六位二进制, 计数初值的高低字节分别为BYTEH和BYTEL,其初始化程 序为: mov dx,307h ;设置方式控制字 mov al,01110000B;1号计数器锁存命令 out dx,al mov dx,305h mov al,BYTEL
out dx,al
8
初始化程序段如下:
MOV AL,34H ;通道0,16位计数,方式2,二进制计数
OUT 13H,AL
MOV AL, 0E8H OUT 10H,AL
;写入方式控制字到控制字寄存器
; 计数初值低8位 ;写入计数初值低8位到通道0
MOV AL, 03H
OUT 10H,AL
; 计数初值高8位
;写入计数初值高8位到通道0
MOV DX,322H MOV AL, 20H OUT DX,AL MOV AL,4EH
;写入通道2初值20000的低8位
OUT DX,AL
;写入通道2初值20000的高8位
16
8253应用实例
例 用8253监视一个生产流水线,每通过50个工件,扬声器 响5秒钟,频率为2000HZ。
+5V
•硬件连接
mov dx, 305h
in al, dx cmp al, 0ffh jne l hlt
8253工作方式小结
1.与频率发生器有关的工作方式 方式2——提供负脉冲 方式3——提供方波 2.与计数器有关的工作方式 软件启动方式(GATE始终保持高电平) 方式0、方式4 硬件启动方式(GATE发生跳变时,触发计数器) 方式1、方式5
10
A0 A1 外部事件产生
A3~A9
译码 电路
8253用于外部事件的计数
11
根据要求,可以选择方式0来实现,计数初值N=100。 8253初始化程序段如下:
MOV DX,203H MOV AL,10H OUT DX,AL MOV DX,200H MOV AL,64H OUT DX,AL ;设置计数器通道0的地址 ;计数初值为100 ;设置方式控制字地址 ;设定通道0为工作方式0,二进制计数,只写入 ;低字节计数值
mov al,10110110B
读当前计数值
在事件计数器的应用中,需要读出计数过程中的当前计数值 ,以便根据这个值做计数判断。具体做法是,先发一条锁存命 令,将减1 计数器锁存至输出锁存器中,再执行读操作,读出 锁存器中的内容。 mov dx, 307h ;设置方式控制字
L: mov al, 01000000B;1号计数器锁存命令 out dx, al
5
CPU总线 中断请求信号
OUT0来自百度文库
8253用于定时中断
6
(1) 选择工作方式
由于系统每隔100ms定时中断一次,则采样频率 为10Hz,可选用方式2来实现。当8253定时器工作在 方式2时,在写入控制字与计数初值后,定时器就启 动工作,每到100ms时间,即计数器减到1时,输出 端OUT0输出一个CLK周期的低电平,向CPU申请中
12
3. 8253计数通道的级联应用
例3
已知某8253占用I/O空间地址为320H~323H, 如下图所示,输入其 CKL1 端的脉冲频率为 1MHz, 要求用8253连续产生10秒的定时信号。 分析:8253的一个通道的最大计数范围为65536,本例 中要求输出10秒定时信号,则计数初值N=10/10-6=107, 超过了8253一个通道的最大计数值,此时可以使用2个 8253通道级连方式来实现。若级连前2个通道的初值为 N1和N2,则级连后作为一个整体的计数值为N=N1×N2。
9
2. 8253计数功能的应用
例2
通 过 PC 机 系 统 总 线 在 外 部 扩 展 一 个
8253,利用其通道0记录外部事件的发生次 数,每输入一个高脉冲表示事件发生 1次。
当事件发生100次后就向CPU提出中断请求
(边沿触发),假设8253片选信号的I/O地
址范围为200H~203H,如下图。
断,CPU在中断服务程序中完成数据采集,同时按
原设定值重新开始计数,实现了计数值的自动重装。
7
(2) 确定计数初值
已知 fCLK0=10kHz,则TCLK0=0.1ms,所以, 计数初值
N=TOUT0/TCLK0=100ms/0.1ms=1000=03E8H
(3) 初始化编程
根据以上要求,可确定8253通道0的方式 控制字为00110100B,即34H。
MOV AL, 0F4H
OUT DX,AL MOV AL,01H OUT DX,AL ;写入初值500的高8位入通道1 ;写入初值500的低8位入通道1
15
MOV DX,323H MOV AL,0B4H ;10110100B,通道2,写入16位初值,方式2, ;二进制计数 ;写入通道2方式字
OUT DX,AL
mov al,BYTEH out dx,al
1
编程命令
例1:选择2号计数器,工作在3方式,计数初值为 533H,采用二进制计数,其初始化程序为:
mov dx,307h out dx,al mov dx,306h mov ax,533h out dx,al mov al,ah out dx,al
;设置方式控制字 方波发生器 ;设置计数初值 ;计数初值为533H ;先送低字节 ;后送高字节
4
总结性应用举例
1. 8253定时功能的应用
在计算机应用中,经常会遇到隔一定时间重复某一 个动作的应用。
例1
设某应用系统中,系统提供一个频率为10kHz的时 钟信号,要求每隔100ms采集一次数据。
在系统中,采用8253定时器的通道0来实现这一 要求。将8253芯片的CLK0接到系统的10kHz时钟上, OUT0输出接到CPU的中断请求线上,8253的端口地 址为10H~13H,如下图所示。
10秒定时输出 通道1 通道2
8253通道的级联
14
设计数器初值N1=500=1F4H,N2=20000=4E20H,使 用方式2,二进制计数,则通道1、2的初始化程序如下:
MOV DX,323H MOV AL,74H OUT DX,AL MOV DX,321H ;01110100B,通道1,写入16位初值,方式2, ;二进制计数 ;写入通道1方式字
INT +5V 2.5MHZ 8255PA0 OUT0 GATE0
例:使1号计数器T1,工作在0方式,采用十六位二进制, 计数初值的高低字节分别为BYTEH和BYTEL,其初始化程 序为: mov dx,307h ;设置方式控制字 mov al,01110000B;1号计数器锁存命令 out dx,al mov dx,305h mov al,BYTEL
out dx,al
8
初始化程序段如下:
MOV AL,34H ;通道0,16位计数,方式2,二进制计数
OUT 13H,AL
MOV AL, 0E8H OUT 10H,AL
;写入方式控制字到控制字寄存器
; 计数初值低8位 ;写入计数初值低8位到通道0
MOV AL, 03H
OUT 10H,AL
; 计数初值高8位
;写入计数初值高8位到通道0
MOV DX,322H MOV AL, 20H OUT DX,AL MOV AL,4EH
;写入通道2初值20000的低8位
OUT DX,AL
;写入通道2初值20000的高8位
16
8253应用实例
例 用8253监视一个生产流水线,每通过50个工件,扬声器 响5秒钟,频率为2000HZ。
+5V
•硬件连接
mov dx, 305h
in al, dx cmp al, 0ffh jne l hlt
8253工作方式小结
1.与频率发生器有关的工作方式 方式2——提供负脉冲 方式3——提供方波 2.与计数器有关的工作方式 软件启动方式(GATE始终保持高电平) 方式0、方式4 硬件启动方式(GATE发生跳变时,触发计数器) 方式1、方式5
10
A0 A1 外部事件产生
A3~A9
译码 电路
8253用于外部事件的计数
11
根据要求,可以选择方式0来实现,计数初值N=100。 8253初始化程序段如下:
MOV DX,203H MOV AL,10H OUT DX,AL MOV DX,200H MOV AL,64H OUT DX,AL ;设置计数器通道0的地址 ;计数初值为100 ;设置方式控制字地址 ;设定通道0为工作方式0,二进制计数,只写入 ;低字节计数值
mov al,10110110B
读当前计数值
在事件计数器的应用中,需要读出计数过程中的当前计数值 ,以便根据这个值做计数判断。具体做法是,先发一条锁存命 令,将减1 计数器锁存至输出锁存器中,再执行读操作,读出 锁存器中的内容。 mov dx, 307h ;设置方式控制字
L: mov al, 01000000B;1号计数器锁存命令 out dx, al
5
CPU总线 中断请求信号
OUT0来自百度文库
8253用于定时中断
6
(1) 选择工作方式
由于系统每隔100ms定时中断一次,则采样频率 为10Hz,可选用方式2来实现。当8253定时器工作在 方式2时,在写入控制字与计数初值后,定时器就启 动工作,每到100ms时间,即计数器减到1时,输出 端OUT0输出一个CLK周期的低电平,向CPU申请中
12
3. 8253计数通道的级联应用
例3
已知某8253占用I/O空间地址为320H~323H, 如下图所示,输入其 CKL1 端的脉冲频率为 1MHz, 要求用8253连续产生10秒的定时信号。 分析:8253的一个通道的最大计数范围为65536,本例 中要求输出10秒定时信号,则计数初值N=10/10-6=107, 超过了8253一个通道的最大计数值,此时可以使用2个 8253通道级连方式来实现。若级连前2个通道的初值为 N1和N2,则级连后作为一个整体的计数值为N=N1×N2。
9
2. 8253计数功能的应用
例2
通 过 PC 机 系 统 总 线 在 外 部 扩 展 一 个
8253,利用其通道0记录外部事件的发生次 数,每输入一个高脉冲表示事件发生 1次。
当事件发生100次后就向CPU提出中断请求
(边沿触发),假设8253片选信号的I/O地
址范围为200H~203H,如下图。
断,CPU在中断服务程序中完成数据采集,同时按
原设定值重新开始计数,实现了计数值的自动重装。
7
(2) 确定计数初值
已知 fCLK0=10kHz,则TCLK0=0.1ms,所以, 计数初值
N=TOUT0/TCLK0=100ms/0.1ms=1000=03E8H
(3) 初始化编程
根据以上要求,可确定8253通道0的方式 控制字为00110100B,即34H。
MOV AL, 0F4H
OUT DX,AL MOV AL,01H OUT DX,AL ;写入初值500的高8位入通道1 ;写入初值500的低8位入通道1
15
MOV DX,323H MOV AL,0B4H ;10110100B,通道2,写入16位初值,方式2, ;二进制计数 ;写入通道2方式字
OUT DX,AL
mov al,BYTEH out dx,al
1
编程命令
例1:选择2号计数器,工作在3方式,计数初值为 533H,采用二进制计数,其初始化程序为:
mov dx,307h out dx,al mov dx,306h mov ax,533h out dx,al mov al,ah out dx,al
;设置方式控制字 方波发生器 ;设置计数初值 ;计数初值为533H ;先送低字节 ;后送高字节
4
总结性应用举例
1. 8253定时功能的应用
在计算机应用中,经常会遇到隔一定时间重复某一 个动作的应用。
例1
设某应用系统中,系统提供一个频率为10kHz的时 钟信号,要求每隔100ms采集一次数据。
在系统中,采用8253定时器的通道0来实现这一 要求。将8253芯片的CLK0接到系统的10kHz时钟上, OUT0输出接到CPU的中断请求线上,8253的端口地 址为10H~13H,如下图所示。