8253举例
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mov al,10110110B
读当前计数值
在事件计数器的应用中,需要读出计数过程中的当前计数值 ,以便根据这个值做计数判断。具体做法是,先发一条锁存命 令,将减1 计数器锁存至输出锁存器中,再执行读操作,读出 锁存器中的内容。 mov dx, 307h ;设臵方式控制字
L: mov al, 01000000B;1号计数器锁存命令 out dx, al
例:使1号计数器T1,工作在0方式,采用十六位二进制, 计数初值的高低字节分别为BYTEH和BYTEL,其初始化程 序为: mov dx,307h ;设臵方式控制字 mov al,01110000B;1号计数器锁存命令 out dx,al mov dx,305h mov al,BYTEL
out dx,al
18
设8253端口地址:40H、41H、42H、43H, 8255端口A的口地址为80H。
•编程
0#计数器: 方式2;BCD计数;计数初值: 50 控制字: 15H 1#计数器: 方式3;BCD计数;计数初值: 1250 控制字: 77H •主程序: MOV AL,15H 送0 #计数器 OUT 43H,AL 方式控制字 送0 #计数器 计数初值 开中断 等待中断 MOV AL,50H OUT 40H,AL STI LOP: HLT JMP LOP
D0~D7 CLK0 GATE0 RD# WR# CS# A1 A0
OUT0 CLK1 GATE1
5MHz
OUT1
CLK2
1Hz
GATE2
OUT2
21
OUT 43H,AL MOV AX, 5000D OUT 40H,AL MOV AL, AH OUT 40H,AL MOV AL,01110101B;T/C1 MOV AX, 1000D OUT 41H,AL MOV AL, AH OUT 41H,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 ;先送低字节 ;后送高字节
25
思路:用8253的计数通道1作为计数器,用于24个罐的 计数;计数通道2作为定时器,定时为4S。当计数通道 1的OUT脚出现0到1的跳变的时候,将启动计数通道2 开始定时,而计数通道2定时阶段将控制计数通道1停 止计数,只有其定时结束并停止定时阶段才可再次启 动计数通道1开始计数。 • 计数通道1工作在方式 D0~D7 CLK0 2,计数初值24 GATE0 RD • 计数通道2工作在方式 OUT0 1,计数初值8000 WR 流水线信号 CLK1 CS GATE1 A1 OUT1 A0 fCLK CLK2 GATE2 控制流水线停 OUT 和运行的信号 26 2
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
•硬件连接
•硬件连接 •控制字设置 •编程
光敏 电阻 驱 动 器
扬声器
0#计数器: 方式2;BCD计数;计数初值: 50
控制字 SC 0 1 SC 0 0 RW 0 1 RW 1 0 M 02 M 11 M 0 0 BCD 1 15H 1#计数器: 方式3;BCD计数;计数初值: 2.5×106/2000 =1250 控制字 77H SC 01 SC 1 0 RW 1 1 RW 1 0 M 02 M 11 M 10 BCD 1
2.占空比4:9的方波发生器
8253的CLK0的时钟频率是8KHz,问 1)T/C0最大定时时间是多少? 2)要求8253端口地址为90H、92H、94H和96H,请使 用74LS138译码器加简单门电路完成地址连线。 3)现在要求使用该8253产生周期为9秒,占空比为4:9 的方波,请在上面的电路图中完成电路,并编写初始 化程序。 答: 1)TCLK0=1/fCLK0=1/8000=0.125ms 最大定时时间=65536×0.25ms=8.192秒 或:fCLK0/fOUT=65536=>Tmax=1/fOUT=65536/ fclk0 =65536/8000=8.192秒
AL,01H 80H,AL AL,77H 43H,AL AL,50H 41H,AL AL,12H 41H,AL DL5S AL,00H 80H,AL
实例b
20
8253应用举例
1.分频器设计
用8253(地址40H~43H)将5MHz的脉冲变为1Hz的脉冲。 初值=fCLK/fOUT=5×106>65536,怎么办? 需要2个T/C级联,T/C0采用方式3产生连续分频方波, 做T/C1的CLK,T/C1 采用方式2产生1Hz脉冲。两个 T/C的GATE统一控制。 MOV AL,00110111B;T/C0
22
2)
D7~D0 IOW IOR A1 A2 D7~D0 CLK0 WR# GATE0 RD# OUT0 A0 CLK1 A1 GATE1 OUT1 8253 CS# CLK0 GATE0 OUT0
8KHz
1Hz 5V 占空比 4:9,周 期9秒 的方波
A5 A4 A3
A7
C B A
Y2#
A8 A9 A6 A0
断,CPU在中断服务程序中完成数据采集,同时按
原设定值重新开始计数,实现了计数值的自动重装。
7
(2) 确定计数初值
已知 fCLK0=10kHz,则TCLK0=0.1ms,所以, 计数初值
N=TOUT0/TCLK0=100ms/0.1ms=1000=03E8H
(3) 初始化编程
根据以上要求,可确定8253通道0的方式 控制字为00110100B,即34H。
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方式字
19
设8253端口地址:40H、41H、42H、43H, 8255端口A的口地址为80H。
•编程 •中断服务程序:
送1 #计数器 方式控制字
送1 #计数器 计数初值 延时5秒后禁 止1 #计数并 返回
1#计数器: 方式3;BCD计数;计数初值: 1250 控制字: 77H
启动1 #计数器
MOV OUT MOV OUT MOV OUT MOV OUT CALL MOV OUT IRET
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
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,二进制计数,只写入 ;低字节计数值
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。
≥1
≥1
74LS138 G1 G2A# G2B#
3)
23
MOV AL,00110111B;T/C0 OUT 96H,AL MOV AX, 8000D OUT 90H,AL MOV AL, AH OUT 90H,AL MOV AL,01110111B;T/C1 MOV AX, 9D OUT 92H,AL MOV AL, AH OUT 92H,AL
9
2. 8253计数功能的应用
例2
通 过 PC 机 系 统 总 线 在 外 部 扩 展 一 个
8253,利用其通道0记录外部事件的发生次 数,每输入一出中断请求
(边沿触发),假设8253片选信号的I/O地
址范围为200H~203H,如下图。
;初始化程序 ;计数通道1初始化 MOV AL, 01010100B OUT 8FH, AL MOV AL, 24 OUT 8DH, AL ;初始化计数通道2 MOV AL, 10110010B OUT 8F, AL MOV AX, 8000 OUT 8EH, AL MOV AL, AH OUT 8EH, AL
INT +5V 2.5MHZ 8255PA0 OUT0 GATE0
工件 CLK0
0#计数器: 方式2; OUT0反相后作中断请求信号.
光敏 电阻 驱 动 器
CLK1
GATE1 OUT1
1#计数器: 方式3; GATE1由8255PA0控制; 扬声器 OUT1经驱动滤波后送扬声器。
•控制字设置
17
+5V 工件 INT +5V 2.5MHZ 8255PA0 OUT0 GATE0 CLK1 GATE1 OUT1 CLK0
5
CPU总线 中断请求信号
OUT0
8253用于定时中断
6
(1) 选择工作方式
由于系统每隔100ms定时中断一次,则采样频率 为10Hz,可选用方式2来实现。当8253定时器工作在 方式2时,在写入控制字与计数初值后,定时器就启 动工作,每到100ms时间,即计数器减到1时,输出 端OUT0输出一个CLK周期的低电平,向CPU申请中
24
3.包装流水线控制 某产品的包装流水线中,一个包装箱能装24罐 饮料。装箱时希望流水线上每通过24罐饮料, 流水线要停4秒以等待包装箱封口,然后继续通 过下一箱的24罐。流水线就是这样周而复始的 运作。试利用一片8253来完成流水线控制中的 定时和计数功能。假设8253的端口地址为 8CH~8FH,采用的时钟频率是2KHz。
4
总结性应用举例
1. 8253定时功能的应用
在计算机应用中,经常会遇到隔一定时间重复某一 个动作的应用。
例1
设某应用系统中,系统提供一个频率为10kHz的时 钟信号,要求每隔100ms采集一次数据。
在系统中,采用8253定时器的通道0来实现这一 要求。将8253芯片的CLK0接到系统的10kHz时钟上, OUT0输出接到CPU的中断请求线上,8253的端口地 址为10H~13H,如下图所示。
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 dx, 305h
in al, dx cmp al, 0ffh jne l hlt
8253工作方式小结
1.与频率发生器有关的工作方式 方式2——提供负脉冲 方式3——提供方波 2.与计数器有关的工作方式 软件启动方式(GATE始终保持高电平) 方式0、方式4 硬件启动方式(GATE发生跳变时,触发计数器) 方式1、方式5