8253的工作方式解读
第八章 8253定时计数器(例程)

➢ 在计数过程中,如GATE变为低电平,这时只是暂停计数 ,等待GATE信号变为高电平后,计数器继续“减1”计数
例题,向8253的A1A=0 11B的地址写入0011 0000B,则表示 计数器0设置成方式0,并且采用16位时常数,假设时常数为 1500,则计数器0的初始化程序段如下:
通过计数通道的端口地址可以访问通道中的CR、OL,当对通 道进行写操作时,实际上表示将计数初值(即时常数)写入CR; 当对通道进行读操作时,表示将从OL中读取计数值。
8253的控制字
定时/计数器8253一共有6种工作方式,由控制字 寄存器的内容来设定。方式控制字如下所示:
D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RL1 RL0 M2 M1 M0 BCD
电源(+5V) 地
连接去向 CPU
译码电路 CPU CPU CPU 外部
外部 外部
/ /
8253的原理结构及工作原理
每个计数通道主要包含四个部件: 计数寄存器CR(Conut Register, 16位)、 计数工作单元CE(Counting Element, 16位)、 输出锁存器OL(Output Latch, 16位)、 控制字寄存器(Control Word Register, 8位)。
计数过程中写入新的时常数,它只能在下一次分频脉冲后起作用
方式2的特点:
➢在置方式2的控制字后,OUT端变为高电平;
➢在置入时常数后,下一个CLK脉冲期间,将时常数从CR读 入CE,并开始“减1”计数;
➢当CE计数到01时,在OUT端输出一个负脉冲,并重新读入 时常数进行计数;
第8章 可编程定时计数器8253(8254)

三种基本方法:软件定时、硬件定时、 三种基本方法:软件定时、硬件定时、可编程硬 件定时 主要内容: 主要内容: 8253/8254的内部结构及引脚信号 的内部结构及引脚信号 8253 /8254的工作方式 的工作方式 8253/8254的编程 的编程 8253最高工作频率 最高工作频率2.6MHz 最高工作频率 8254最高工作频率为 最高工作频率为10MHz 最高工作频率为
• • • • • • • • MOV DX,706H MOV AL,01110100B OUT DX,AL MOV DX 702H DX,702H MOV AX,4000 OUT DX,AL MOV AL,AH OUT DX,AL ;控制端口地址 ;CTC1控制字 ;CTC1口地址 CTC1 ;CTC1初值 ;先写低字节 ;取高字节 ;后写高字节
方式1 单稳负脉冲信号发生器
CW=12H WR CLБайду номын сангаас GATE OUT
3 2 1 0 FF
LSB=3
方式2 速率信号发生器
CW=14H WR CLK GATE OUT 3 2 1 3 2 1 3 2 1 LSB=3
方式3方波信号发生器—偶数初值
CW=16H LSB=4 WR CLK GATE OUT
;CTC2
• • • • • • • MOV DX,706H MOV AL,10110010B OUT DX,AL MOV DX,704H MOV AL,0 OUT DX,AL OUT DX,AL ;控制端口地址 ;CTC2控制字 ;CTC2口地址 ;CTC2初值 ;先写低字节 ;后写高字节
8253应用
8253/8254内部结构及引脚信号
二数数 1-8 D7-D0 22 23 19 20 21 Vcc 24 GND 12
定时器

;8253控制口地址 ;通道0工作在方式0 ;8253通道0地址 ;给通道0送计数值
;通道1工作在方式3 ;8253通道1地址
;给通道1送计数初值低8位 ;给通道1送计数值高位
;通道2工作在方式0
MOV MOV OUT MOV OUT MOV MOV OUT MOV MOV OUT MOV OUT MOV OUT STI FF:
发声子程序:
SSP PROC NEAR ;8253初始化: MOV AL,10110110B ;计数器2,模式3,初值16位,二进制 OUT 43H, AL MOV AX, 1983 ; 计数初值=1.19MHZ600HZ=1983 OUT 42H,AL ;送计数初值低位字节 MOV AL,AH OUT 42H,AL次 ;送计数初值高位字节
方式0——计数结束产生中断
图 8-22
方式0——计数结束产生中断
方式1——可编程的单脉冲(单稳)触发器
高
图 8-22
单脉冲触发器
方式2——分频器( 速率发生器)
图 8-23
分频器
方式3——方波发生器
图 8-23 方波发生器
方式4——软件触发的选通信号发生器
图 8-23 软件触发的选通信号发生器
计数初始值=时钟频率*T
8_2_1 8253芯片内部结构
1.数据总线缓冲器 往计数器设置计数初值; 从计数器读取计数值; 往控制寄存器设置控制字。 2.读/写逻辑电路 A1 A0:端口选择 0 0:通道0(0号计数器) 0 1:通道1(1号计数器) 1 0:通道2(2号计数器) 1 1:控制字寄存器
3.通道0、通道1、通道2
计数器0:CLK0——计数器0的时钟输入。 GATE0——计数器0的门脉冲控制输入。 OUT0——计数器0的输出。 计数器1 计数器2
微型计算机原理及接口技术第8章8253

计数器/定时器的内部结构
8253内部包含三个完全一样的计数器/定时器通道, 每个通道的工作是完全独立的
每个通道包含:
① 一个8位控制字寄存器:由编程设定该通道的工作方式、读 写格式和数制
② 一个16位计数初值寄存器:由程序设定初始计数值,可分 成高8位和低8位两个部分,可作8位寄存器使用
③ 一个计数器执行部件(实际的计数器):实际上是一个16 位减法计数器,它的起始值是初始寄存器的值,由程序设 定。可分成高8位和低8位两个部分
优点:电路结构简单,价格便宜,通过 改变电阻或电容值,可以在一定的定时 范围内改变定时时间
缺点:电路在硬件已连接好的情况下, 定时时间和范围就不能由程序来控制和 改变,而且定时精度也不高
555定时器外部引脚和内部结构
可编程硬件定时
定时原理:利用可编程定时器/计数器芯 片附加硬件电路实现定时
输出信号的波形由工作方式决定,同时还要受 到GATE引脚上的门控信号控制,它决定是否 允许计数
计数器/定时器的定时功能
当加到CLK引脚上的脉冲为精确的时钟脉 冲,可实现定时的功能。
定时时间决定于计数脉冲的频率和计数 器的初值。
定时时间=时钟脉冲周期×预置的计数初值
计数器/定时器的计数功能
方式1:可编程单稳态输出方式
写入控制字后OUT初始状态:高电平 门控信号GATE的作用:①高电平或低电平均不起作用;
②只有在GATE发生由低到高的正跳变,输出OUT由高
到低跳变,并开始计数;③在计数过程中,若GATE产 生负跳变,不影响计数;④在计数器回0之前,GATE 又产生由低到高的正跳变,8253又将初始值装入,重 新开始计数,使生成脉冲加宽。 计数过程中OUT状态:保持低电平 计数结束OUT状态:发生由低到高的正跳变。 计数器回0后,是否重新计数:否 应用:用于定时
8253定时和计数

8259举例
8259A的全嵌套方式和特殊全嵌套方式有什么差别?各自用在 什么场合? 答:1.全嵌套工作方式,只有更高级的中断请求来到时,才会 进行嵌套。而特殊全嵌套方式则能被同级和高级的中断请求所 嵌套。 2.全嵌套方式用于单片8259A的场合。特殊全嵌套方式用于多 片8259A系统。
8259举例
8253
定时计数器
例2:若用8253计数器1,工作在方式1,按二-十进制计数,计数 初值为2010H,口地址口地址为40H- 43H ,试编写初始化程序。 解:计数器控制字为01110011=73H 计数初值高8位为20H, 低8位为10H MOV AL, 33H OUT 4BH, AL MOV AL, 10H OUT 49H, AL MOV AL, 20H OUT 49H, AL ;写计数器1控制字 ;写计数器1计数初值低8位 ;写计数器1计数初值高8位
8253的编程——向8253写入控制字 1,控制字格式:
A1 A0 1 1 D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RL1 RL0 M2 M1 M0 BCD (地址 43H)
计数器选择 00:计数器 0 01:计数器 1 10:计数器 2 11:非法 读/写指示位 00:计数器锁存 01:只读/写低字节 10;只读/写高字节 11:先读/写低字节 后读/写高字节
实现定时和计数的三种方法 软件方法:采用软件定时,让计算机执行一个专门 的指令序列,由执行指令序列中各条指令所花费的 时间构成一个固定的时间间隔,从而达到定时或延 时的目的。 不可编程的硬件定时:采用电子器件构成定时或延 时电路,通过调整电路中定时元件的数值,可实现 调整定时或延时的数值和范围。 可编程的硬件定时:在微机系统中采用软硬件结合 的方法,即采用可编程定时的电路器件实现定时。 如:Intel 8253/8254,Zilog CTC,MC6840等。 8253-5(5MHz)和8254-2(10MHz)的引脚和 功能都是兼容的。
常用数字接口电路

可编程定时 / 计数电路 8253 具有多种工作 方式,定时值和定时范围可用程序确定。 PC 机中的定时器主要用于系统日时钟计时.
* 8253的引脚
D0 D1 D2 D3 D4 D5 D6 D7 8 7 6 5 4 3 2 1
8253的内部地址
9 11 10 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1
D7 D6 D0 计数器 D5 D4 D3 D2 工作方式 D1 数制 读/写格式
0 —二进制 1 —二― 十进制(BCD)
000 001 10 11 100 101 00 10 01 11 00 01 10 11 方式0 方式1 方式2 方式3 方式4 方式5 计数器锁存命令 只读/写高8位 只读/写低8位 首先写低8位 然后写高8位 选择计数器0 选择计数器1 选择计数器2 非法选择
A1 A0
选择对象
15 14
0
0 1
0
1 0
计数器0
计数器1 计数器2
RD WR A1 A0
CS
22 23 20 19 21
13
18 16 17
CLK2 GATE2 12
1
1
控制寄存器
图 8-3的引脚图 8253的引脚信号 8253
一、8253的内部结构及引脚
8253 具有 3 个独立的 16 位计数通道,用 24脚DIP封装,其主要功能如下: * 1 片上有 3 个独立的 16 位计数器通道,最大
LSB = 3
LSB =5
4
3
2
1
5
4
3
c. 方式2 计数过程中改变计数值
c. 方式2时计数过程中改变计数值
M82C53工作原理
标签:82538253工作原理8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
一、8253内部结构8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。
1.数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。
这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CP U与8253之间交换信息的必经之路。
2.读/写控制读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部通道。
接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。
A1A0:端口选择信号,由CPU输入。
8253内部有3个独立的通道和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。
这4个端口地址由最低2位地址码A1A0来选择。
如表9.3.1所示。
3.通道选择(1) CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。
(2) RD#、WR#——读/写控制命令,由CPU输入,低电平有效。
RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。
WR#有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。
CPU对8253的读/写操作如表9.3.2所示。
4.计数通道0~2每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。
8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。
采用二进制计数时,最大计数值是FFFFH,采用BCD码计数时。
最大计数值是9999。
与此计数器相对应,每个通道内设有一个16位计数值锁存器。
微机原理与接口技术_第7章8253
§7-1 8253的工作原理 ——8253的内部结构和引脚信号
然后,开始递减计数。即每输入一个时钟脉冲,计数
器的值减1,当计数器的值减为0时,便从OUT引脚输出 一个信号。输出信号的波形主要由工作方式决定,同 时还受到从外部加到GATE引脚上的门控信号控制,它 决定是否允许计数。 当用8253作外部事件计数器时,在CLK脚上所加的计 数脉冲是由外部事件产生的,这些脉冲的间隔可以是 不相等的。 如果要用它作定时器,则CLK引脚上应输入精确的时 钟脉冲。这时,8253所能实现的定时时间,决定于计 数脉冲的频率和计数器的初值,即 定时时间=时钟脉冲周期tc×预臵的计数初值n
16
§7-1 8253的工作原理 ——8253的内部结构和引脚信号 ③引脚 8253的3个计数器都各有3个引脚,它们是:
CLK0~CLK2:计数器0~2的输入时钟脉冲从这里输
入。频率不能大于2MHz。
OUT0~OUT2:计数器0~2的输出端。
GATE0~GATE2:计数器0~2的门控脉冲输入端。
4
第七章 可编程计数器/定时器8253及其应用 ——概述 2. 不可编程的硬件定时 555芯片是一种常用的不可编程器件,加上外接电阻和电 容就能构成定时电路。这种定时电路结构简单,价格 便宜,通过改变电阻或电容值,可以在一定的定时范 围内改变定时时间。但这种电路在硬件已连接好的情 况下,定时时间和范围就不能由程序来控制和改变, 而且定时精度也不高。 3. 可编程的硬件定时 ①可编程定时器/计数器电路利用硬件电路和中断 方法控制定时,定时时间和范围完全由软件来确 定和改变,并由微处理器的时钟信号提供时间基 准,这种时钟信号由晶体振荡器产生,故计时精
12
§7-1 8253的工作原理 ——8253的内部结构和引脚信号 8253输入信号组合的功能表
8253的使用
实验一8253A定时/计数器(一)一、实验目的1. 学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容实验原理图本实验原理图如上所示,8253A的A0、A1接系统地址总线A0、A1,故8253A有四个端口地址,如端口地址表5-2所示。
8253A的片选地址为48H~ 4FH。
因此,本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。
采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ,输出OUTO 要求为1KHZ的方波,并要求用接在GA TE0引脚上的导线是接地("0"电平)或甩空("1"电平)来观察GA TE对计数器的控制作用,用示波器观察输出波形。
1、实验线路连接(1) 8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。
(2) 8253A的GA TE0接+5V。
2、实验步骤(1) 按图连好实验线路(2) 运行实验程序在系统显示"DVCC-86H"状态下,按任意键,系统显示命令提示符"-"。
按GO键,系统显示"1000 XX"输入F000 :B290再按EXEC键,显示"8253-1"用示波器测量8253A的OUT0输出插孔,应有频率为1KHZ的方波输出。
幅值0~5V。
实验二8259单级中断控制器实验一、实验目的1.掌握8259中断控制器的接口方法.2.掌握8259中断控制器的应用编程.二、实验内容1、本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F。
2实验原理图使用8259单级中断控制实验原理图根据实验原理图,8259A和8088系统总线直接相连,8259A上连有一系统地址线A0,故8259A有2 个端口地址,本系统中为20H、21H。
微机原理 dma控制器
模式2 分频器 3. 模式2—分频器
( 高)
(5)在计数到1 如果写入新的值, GATE信号又出现上升 (5)在计数到1前,如果写入新的值,而GATE信号又出现上升 比如一个负脉冲的后沿),那么在下一个时钟脉冲时, ),那么在下一个时钟脉冲时 沿(比如一个负脉冲的后沿),那么在下一个时钟脉冲时, 新的计数值被送入CE CE中 新的计数值被送入CE中,从而计数器由新的初值开始重新 计数,并且,在计数减为1之前,输出端OUT OUT一直维持高电 计数,并且,在计数减为1之前,输出端OUT一直维持高电 平 21 .
3
二,8253结构和功能 8253结构和功能
1,8253的主要功能 , 的主要功能 具有三个独立的16位计数通道. 16位计数通道 (1) 具有三个独立的16位计数通道. 每个计数器通道都可按照二或二(2) 每个计数器通道都可按照二或二- 十进制 计数. 计数. 每个计数器通道的计数速率最高可达2MHZ. (3) 每个计数器通道的计数速率最高可达2MHZ. 每个计数器通道有6 工作方式, (4) 每个计数器通道有6种工作方式,均可由程 序设置和改变. 序设置和改变. 全部输入输出都与TTL电平兼容. TTL电平兼容 (5) 全部输入输出都与TTL电平兼容.
模式2 分频器 3. 模式2—分频器
(4)在计数过程中改变计数值对正在进行的计数过程没有 (4)在计数过程中改变计数值对正在进行的计数过程没有 影响,而是从下一个输出周期开始, 新的计数值进 下一个输出周期开始 影响,而是从下一个输出周期开始,按新的计数值进 改变输出脉冲的频率. 行计数而改变输出脉冲的频率 如上波形图所示. 行计数而改变输出脉冲的频率.如上波形图所示.
25
模式4 5. 模式4— 软件触发的选通信号发生器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8253的工作方式1.方式0 计数结束产生中断8253用作计数器时一般工作在方式0。
所谓计数结束产生中断,是指在计数值减到0时,输出端(OUT)产生的输出信号可作为中断申请信号,要求CPU进行相应的处理。
方式0有如下特点:① 当控制字写进控制字寄存器确定了方式0时,计数器的输出(OUT端口)保持低电平,一直保持到计数值减到0。
② 计数初值装入计数器之后,在门控GATE信号为高电平时计数器开始减1计数。
当计数器减到0时输出端OUT才由低变高,此高电平输出一直保持到该计数器装入新的计数值或再次写入方式0控制字为止。
若要使用中断,可以计数到0的输出信号向CPU发出中断请求,申请中断。
③ GATE为计数控制门,方式0的计数过程可由GATE控制暂停,即GATE=1时,允许计数;GATE=0时,停止计数。
GATE 信号的变化不影响输出OUT端口的状态。
④ 计数过程中,可重新装入计数初值。
如果在计数过程中,重新写入某一计数初值,则在写完新计数值后,计数器将从该值重新开始作减1计数。
2.方式1 可编程的单拍负脉冲可编程的单拍负脉冲又称为单稳态输出方式,简称单稳定时。
方式1的特点是:① CPU写入控制字后,计数器输出OUT端为高电平作为起始电平,在写入计数值后计数器并不开始计数(不管此时GATE 是高电平还是低电平),而要由外部门控GATE脉冲上升沿启动,并在上升沿之后的下一个CLK输入脉冲的下降沿开始计数。
② GATE上升沿启动计数的同时,使输出OUT变低,每来一个计数脉冲,计数器作减一计数,直到计数减为 0时,OUT 输出端再变为高电平。
OUT端输出的单拍负脉冲的宽度为计数初值乘以CLK端脉冲周期。
设计数初值为N,则单拍脉冲宽度为N个CLK时钟脉冲周期。
③ 如果在计数器未减到0时,GATE又来一触发脉冲,则由下一个时钟脉冲开始,计数器将从初始值重新作减1计数。
当减至0时,输出端又变为高电平。
这样,使输出脉冲宽度延长。
3. 方式2 分频脉冲发生器方式2是一种具有自动予置计数初值N的脉冲发生器。
从OUT端可以输出连续脉冲信号,脉冲宽度等于时钟脉冲周期,而计数初值N决定了输出端两个负脉冲之间的宽度即输出脉冲周期。
方式2也叫N分频器,因为输出脉冲为输入脉冲的N 分频,即出现N个输入脉冲才输出一个脉冲。
方式2有如下特点:① N分频计数器,这种方式是输出对输入脉冲按计数器计数初值N分频后的连续脉冲。
② 当CPU写入控制字后OUT端输出为高电平作为起始电平,在写入计数值N后将立即自动开始对输入脉冲CLK 计数,输出端仍一直为高;当计数器减到1时,输出变低,计数器减到0时又变为高,计数器重新按已写入的计数值N继续计数,周而复始,在OUT端输出一个N分频脉冲,其正脉搏冲宽度为(N-1)个输入脉冲时钟周期(是N个CLK时钟脉冲周期之和),而负脉冲输出宽度(持续时间)是一个CLK脉冲周期。
③ GATE用于控制计数,GATE=1,允许计数;GATE=0,停止计数。
因此,可以用GATE来使计数器同步。
④ 在方式2下,不但高电平的门控信号有效,上升跳变的门信号也是有效的。
4. 方式3 分频方波发生器方式3的特点是:① 方式3常用于波特率发生器。
方式3和方式2类似。
但输出为方波或近似方波的矩形波。
② 写入方式3控制字后输出为高电平。
写入计数值后计数器自动开始对输入CLK脉冲计数,输出OUT仍保持为高;在计数完成一半时,输出OUT变为低电平,直到计数器全部完成,输出OUT又变为高电平,并重复上述计数过程。
③ 若计数值N为偶数时,OUT方波的占空比为1:1;若N 为奇数,其占空比为:(N+1)/2:(N-1)/2 [即输出分频波高电平宽度为(N+1)/2 CLK周期,低电平周期为(N-1)/2 CLK周期]。
5. 方式4 软件触发选通脉冲发生器方式4是类似于方式0的工作方式,计数器是靠置入新的计数初值这个软件操作来触发计数器工作的,故称为软件触发。
方式4有如下特点:① 方式4是靠写入计数值来进行软件触发的“一次性有效”的选通脉冲发生器。
写入控制字后输出端OUT变为高,并一直保持。
在写入计数初值之后开始计数,当计数到0时输出端OUT变为低,维持一个CLK周期后又恢复为高,并一直保持为高,直到再次写入计数来进行“软件触发”才能再次开始。
② 若GATE=1,允许计数;GATE=0,停止计数。
③ 方式4的负脉冲输出常作为选通脉冲。
6. 方式5 硬件触发选通脉冲发生器方式5有如下特点:① 方式5类似于方式4,所不同的是GATE端输入信号的作用不同。
方式5是硬件触发,是在外部硬件发出门控信号后才发生的。
② 方式5是靠门控脉冲GATE的上升沿来进行触发的选通脉冲发生器。
写入控制字后输出端OUT为高,这是初始电平;写入计数值后计数器并不开始计数,而要由门控脉冲GATE 上升沿触发后才开始计数,计数到0输出由高变低,一个CLK 时钟周期后又恢复为高,并一直保持,直到下次门控脉冲触发再次开始计数。
③ 在此方式中,计数器可重新触发,在任何时候,当GATE 信号的上升沿到来,将把计数初值重新送入计数器,然后开始计数过程。
8253的控制字SC1,SC0——计数通道选择位。
由于8253内部3个计数通道各有一个8位的控制字寄存器,而这三个控制字寄存器共用同一个控制端口地址,所以控制字中设置SC1,SC0这两位来确定CPU当前发出的控制字是写入哪个计数通道的控制字寄存器中。
具体选择如图.RL1,RL0——读/写操作方式位。
这两位用来确定对选中的计数通道进行读/写操作方式。
当CPU对8253进行16位读/写操作时,可以只读/写高8位或只读/写低8位,也可以读/写16位。
读/写16位时,先读/写低8位,后读/写高8 位,具体是哪种操作方式由RL1,RL0这两位的编码确定。
由于8253的数据线只有(D7~D0),一次只能传送8位数据,故传送16位数据时,要分两次进行。
M2,M1,M0——工作方式择位。
8253的每个计数通道有6种不同的工作方式,即方式0到方式5,M2M1M0这三类就是用来选择具体的工作方式,具体选择如图。
BCD——计数方式选择位。
8253的每个计数通道有两种计数方式按二进制计数或按十进制(BCD码)计数。
BCD位用来具体确定采用哪种计数方式。
例:若选择计数器1,工作在方式3,计数初值为588H(2个字节)采用二进制计数,则其控制字为:01110110=76H,设控制口地址为043H,则将该控制字写入控制字寄存器的指令如下:MOV AL,076HOUT 043H,AL• 8253的初始化编程内容:一是首先向控制寄存器写入控制字,以选定计数通道(三个中之一),规定该计数的工作方式和计数方式以及计数初值的长度和装入顺序(初值写入方式);二是向已选定的计数器按控制字的要求写入计数初值。
8253初始化的要求:(1)对每个计数器,控制字必须写在计数值之前。
这是因为计数器的读/写格式由它的控制字决定。
(2)计数值必须按控制字所规定的格式写入。
若控制字规定只写8位,只需写入一次(8位)计数值即可(规定写低8位则高8位自动置0,规定写高8位则低8位自动置0);规定写16位时必须写两次,先写低8位,后写高8位。
当初值为0时,也要分两写入,因在二进制计数时,“0”表示65336,在BCD码计数时“0”表示10000=104。
(3)对所有方式计数器都可以在计数过程中或计数结束后改变计数值,重写计数值也必须遵守控制字所规定的格式,并且不会改变当前计数器的工作方式。
(4)计数值不能直接写到减1计数器中,而只能写入计数值寄存器中,并由写操作之后的下一个CLK脉冲将计数值寄存器的内容装入减1计数器开始计数。
(5)初始化编程必须明确各个计数器的控制字和计数值不是写到同一个地址单元。
各个计数器的控制字各自独立确定,但它们都写入同一个端口地址(控制字寄存器)中,各个计数器的计数值则根据需要独立确定并写入各自计数器的相应寄存器中。
例1:设8086系统中8253的三个计数器的端口地址为060H,062H和064H,控制口地址为066H,要求计数器0为方式 1,按BCD计数;计数初值为1800D,计数器1为方式0,按二进制计数;计数初值为1234H,计数器2为方式3,按二进制计数;当计数初值为065H时,试分别写出计数器0,1,2的初始化程序。
计数器0的初始化:计数0的控制字:00100011B=23HMOV AL,23H ;计数器0的控制字OUT 0 66H,AL ;控制字写入8253的控制器MOV AL,18H ;取计数初值的高8位,低8位00可不送OUT 060H,AL ;计数初值送计数器0端口计数器1和初始化:计数器1的控制字:01110000B=70HMOV AL,70H ;计数器的控制字:方式0,送高8位和低8位,二进制计数OUT 066H,AL ;控制字写入8253的控制器MOV AL,034H ;取计数初值的低8位OUT 062H,AL ;计数初值的低8位,写入计数器1端口MOV AL, 12H ;取计数初值的高8位OUT 062H,AL ;计数初值的高8位写入计数器1端口计数器2的初始化:计数器2的控制字:10010110B=96HMOV AL,96H ;计数器2的控制字96H:方式3,只送低8位,二进制计数OUT 066H,AL ;控制字写入8253的控制口MOV AL,056H ;计数初值的低8位OUT 064H,AL ;计数初值的低8位写入计数器2的端口例2:要求读出计数器2的当前计数值,并检查是否为全“1”。
8253在读取计数器的当前计数值时,必须分两步进行。
首先发一锁存命令(即控制字中RL1RL0=00),将当前计数值锁存到输出锁存器中。
第二步执行读操作,即用IN指令将锁存器中内容读入CPU。
假设计数初值只有低8位,设其程序段如下(控制口地址为066H,计数器2的口地址为064H):KEEP:MOV AL,80H ;计数器2的锁存命令OUT 066H,AL ;锁存命令写入控制寄存器IN AL,064H ;读输出锁存器中的当前计数值(从计数器2端口读)CMP AL,0FFH ;比较当前计数值是否为全“1”JME KEEP ;非全“1”继续读HLT ;为全“1”暂停•8253的应用举例例1:将8253的计数器1作为5ms定时器,设输入时钟频率为200kHz,试编写8253的初始化程序。
(1)计数初值N计算已知输入时钟CLK频率为200kHz,则时钟周期为T=1/f=1/200kHz=5μs,于是计数初值N为:N=5ms/T=5ms/5μs=1000。
(2)确定控制字按题意选计数器1,按BCD码计数,工作于方式0,由于计数初值N=1000,控制字D5D4应为11,于是8253的控制字为:01110001B=71H。