8253芯片
8253的内部结构与工作方式

8253的部结构和工作方式8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
一、8253部结构8253芯片有24条引脚,封装在双列直插式瓷管壳。
1.数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。
这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与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位计数值锁存器。
必要时可用来锁存计数值。
当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器容减“1”,待计数值计到“0”。
8253--8255芯片

8253芯片基本概述8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU 可以对此进行读操作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
工作原理8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
一、8253内部结构8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。
1.数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。
这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与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输入,低电平有效,通常由端口地址的高位地址译码形成。
8253的工作原理

8253的工作原理8253是一种计数器/定时器芯片,它通过与计算机的输入输出接口相连接,用来执行各种计数和定时操作。
8253具有三个可独立使用的计数器,分别称为计数器0、计数器1和计数器2。
计数器0和计数器1是16位计数器,可以被配置为16位二进制计数器或BCD (二进制编码十进制)计数器。
计数器2是一个8位计数器,只能是二进制计数器。
8253工作的基本原理是通过对计数器寄存器的编程配置,将计数器模式、分频因子和初始计数值设置为期望的值。
然后,8253开始计数,每经过一个时钟周期,计数器的值会递增一次。
当计数器的值和设定的目标值相等时,8253可以产生一个触发信号,可以用来触发中断或产生特定的定时操作。
计数器0和计数器1能够按照不同的计数模式工作。
其中,计数模式0是16位二进制计数器或BCD计数器,计数器值递增或递减,直到计数器达到最大值或最小值时就会重置。
计数模式1是16位计数器,当计数器的值和设定的目标值相等时,计数器会重置为初始值。
计数模式2与计数模式1相似,但在计数器达到目标值时,会产生一个短脉冲。
计数模式3是计数器1和计数器2之间的模式,计数器1会根据计数器2的值进行递增或递减。
计数模式4和模式5分别是软件触发的单脉冲发生器和硬件触发的单脉冲发生器。
除了计数模式之外,8253还提供了可编程的分频器。
分频器可以将输入时钟信号进行分频,从而改变计数器的计数速度。
分频因子可以设置为2、4、8、...、2^16,因此可以根据需要选择合适的分频因子来控制计数速度。
综上所述,8253是一种可编程的计数器/定时器芯片,根据计数模式和分频器配置可以实现各种计数和定时操作。
它通过与计算机接口相连接,可以广泛应用于许多需要计数和定时功能的电子设备和系统中。
intel8253寻址操作的控制逻辑 -回复

intel8253寻址操作的控制逻辑-回复Intel 8253是一种可编程定时器/计数器芯片,广泛应用于微处理器系统中。
它具有多种寻址模式,本文将重点讨论Intel 8253的寻址操作的控制逻辑。
在介绍Intel 8253寻址操作的控制逻辑之前,先简要介绍一下Intel 8253的基本特性。
8253芯片有三个计数通道,每个通道都有一个16位的计数器。
这些计数器可以用作定时器或计数器,可以计算时间间隔,或者通过计算脉冲数量来实现频率测量。
首先,让我们来了解一下Intel 8253寻址操作所需的寄存器。
8253芯片有两个8位的控制寄存器(Control Register),分别是Control Word Register A(CWRA)和Control Word Register B(CWRB)。
这两个寄存器用于配置8253芯片的计时/计数模式和其他相关参数。
寻址操作的控制逻辑涉及两个主要的信号:选择信号(select signal)和写入信号(write signal)。
选择信号用于选择要访问的寄存器,写入信号用于向所选寄存器写入数据。
在进行寻址操作之前,需要先选择要访问的寄存器。
选择信号由寄存器选择位(RS2、RS1、RS0)和寄存器选择码(000、001、010、011、100、101、110、111)组成。
根据不同的寄存器选择位和寄存器选择码的组合,可以选择不同的寄存器。
选择完要访问的寄存器后,必须发送写入信号以将数据写入选择的寄存器。
写入信号是一个高电平信号,由系统提供。
当写入信号变为高电平时,数据总线上的数据将被写入所选的寄存器。
下面,我们将逐步分析Intel 8253寻址操作的控制逻辑。
1. 首先,根据需要访问的寄存器,设置寄存器选择位RS2、RS1和RS0。
这可以通过将合适的二进制值写入8253芯片的模式控制寄存器中实现。
2. 设置所选寄存器选择码,以根据需要访问的寄存器选择芯片内的特定寄存器。
8259,8253芯片资料

8259芯片:8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。
单个的8259A能管理8级向量优先级中断。
在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。
8259A有多种工作方式,能用于各种系统。
各种工作方式的设定是在初始化时通过软件进行的。
在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态,编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态。
8259工作原理:一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。
如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号。
但CPU这时可能正在执行一条指令,因此CPU不会立即响应。
而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选。
如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。
当CPU执行完一条指令时后,会检查一下INTR管脚是否有信号。
如果发现有信号,就会转到中断服务,此时,CPU会立即向8259A芯片的INTA(中断应答)管脚发送一个信号。
当芯片收到此信号后,判优部件开始工作,它在IRR中,挑选优先级最高的中断,将中断请求送到ISR(中断服务寄存器),也即将ISR 中代表此IRQ的位置位,并将IRR中相应位置零,表明此中断正在接受CPU的处理。
同时,将它的编号写入中断向量寄存器IVR 的低三位(IVR正是由ICW2所指定的,不知你是否还记得ICW2的最低三位在指定时都是0,而在这里,它们被利用了!)这时,CPU还会送来第二个INTA信号,当收到此信号后,芯片将IVR中的内容,也就是此中断的中断号送上通向CPU的数据线。
9.2 8253芯片

‹#›
三、8253的编程命令 的编程命令
•读出命令 读出命令 1)发出锁存命令,使当前计数值锁存在OL中 )发出锁存命令,使当前计数值锁存在 中 2)读OL,获得当前计数值 ) , 端口地址为70H、71H、72H,控制 例:设三个计数器的CR/OL端口地址为 设三个计数器的 端口地址为 、 、 , 寄存器端口地址73H。读出计数器 的当前计数值,放在 中 的当前计数值, 寄存器端口地址 。读出计数器0的当前计数值 放在BX中 MOV AL, 0H OUT 73H, AL IN AL, 70H MOV BL, AL IN AL, 70H MOV BH, AL
‹#›
二、8253的编程结构 的编程结构
每个计数器的初值寄存器( )、输出锁存器( )都是16位 )、输出锁存器 每个计数器的初值寄存器(CR)、输出锁存器(OL)都是 位 但它们对应相同的一个8位端口地址 所以16位的 位端口地址, 位的CR、 的,但它们对应相同的一个 位端口地址,所以 位的 、OL 作为两个8位寄存器读写 由控制寄存器控制读写高8位 低 位 位寄存器读写, 作为两个 位寄存器读写,由控制寄存器控制读写高 位/低8位
‹#›
四、8253的工作模式 的工作模式
例:计数器0工作模式 ,初始化计数器,使装入计数器10 µs后 计数器 工作模式4,初始化计数器,使装入计数器 后 工作模式 产生选通信号(设时钟频率 产生选通信号 设时钟频率2MHz,8253端口地址为 端口地址为50H~53H)。 。 设时钟频率 端口地址为 解:n+1=T/ TCLK=10/0.5=20 n=19=13H MOV AL, 18H OUT 53H, AL MOV AL, 13H OUT 50H, AL
8253的内部结构与工作方式

8253的内部结构与工作方式8253是一种通用计数器/定时器芯片,由Intel公司于1975年研发。
它在计算机系统中主要用于计时、定时和频率发生的应用。
8253的内部结构和工作方式如下:1.内部结构:8253由一个16位计数器和三个16位计数器/分频器组成。
其中,计数器0和计数器2可以用作定时器,计数器1可以用作计数器或分频器。
-计数器0(工作于16位模式):它可以生成一个周期性的方波信号。
它的输入时钟源可以是外部引脚CLK0或者是计数器2的输出CLK2、计数器0还可以分为两个8位计数器,其下方8位由计数器1的输出加法器控制。
-计数器1(工作于16位模式):它可以将计数器0的输出值与一个可编程的初始计数值进行相加或相减。
它的输出可以用作计数器或分频器。
-计数器2(工作于8位模式):它通常用于分频器功能。
它可以接收来自外部引脚CLK2的时钟输入,并将其分频为不同的输出频率。
2.工作方式:- 定时器模式:8253可以工作在三种不同的定时器模式:比率发生器模式(Mode 0)、硬件单触发模式(Mode 1)和软件可编程单脉冲模式(Mode 2)。
在这些模式下,计数器的工作频率和输出信号的脉冲宽度都可以通过编程来设定。
-计数器模式:计数器1可以通过读取或写入操作来读取或设置计数器的值。
当计数器溢出时,可以触发中断。
-分频器模式:计数器2可以工作为一个分频器,将输入时钟分频为指定的输出频率。
在应用方面,8253的工作方式与内部结构密切相关。
通过编程设置不同的计数器模式和计数器值,可以实现各种计时和频率发生的功能。
例如,可以使用8253来测量时间间隔、生成周期性信号、控制器件的定时操作等。
总结起来,8253的内部结构由三个计数器模块组成,分别用于不同的定时和计数功能。
通过设置不同的模式和计数值,可以实现各种计时和频率发生的应用。
intel 8253各计数通道中三个引脚信号的功能

intel 8253各计数通道中三个引脚信
号的功能
Intel 8253 是一款计时器/计数器芯片,通常用于计算机系统中的定时和计数操作。
它有三个计数通道,每个通道都有三个引脚,分别是:
1. CLK(时钟输入):这是计数器的时钟输入引脚。
外部时钟信号将输入到此引脚,用于触发计数操作。
2. GATE(计数控制引脚): GATE 引脚允许或禁止时钟信号的输入。
当GATE 引脚为低电平时,时钟输入不会触发计数操作,当GATE 引脚为高电平时,时钟信号将允许计数。
3. OUT(计数输出引脚): OUT 引脚是计数器的输出引脚,它产生与计数器状态相关的脉冲信号。
计数器的工作模式和配置将影响输出脉冲的频率和特性。
这三个引脚在每个计数通道中都存在,因此8253总共有九个引脚(3通道 * 3引脚)。
每个通道的计数器都可以配置为不同的工作模式,例如定时器模式、脉冲计数模式等,以满足各种计时和计数需求。
总的来说,CLK 是时钟输入,GATE 是控制时钟输入的引脚,OUT 是输出引脚,产生计数器状态变化的脉冲信号。
1/ 1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8253-5的结构和功能8253-5为具有三个独立的16位计数器,它可用程序设置成多种工作方式,按十进制计数或二进制计数,最高计数速率可达2.6MHz。
8253-5能用于多种场合,例如作为可编程方波频率发生器、分频器、实时时钟、事件计数器以及程控单脉冲发生器等。
8253-5的结构框图及引脚排列如图7-17所示。
图7-17 8253-5的结构框图和引脚排列(a)结构框图;(b)引脚图24条引脚中,D7~D为8条双向数据线;为写输入信号;为读输入信号;为片选输入信号;A0、A1为片内寄存器地址输入信号。
上述信号线都和CPU相接。
三个计数器中每一个都有三条信号线;计数输入CLK用于输入定时基准脉冲或计数脉冲;输出信号OUT以相应的电平指示计数的完成,或输出脉冲波形;选通输入(门控输入)GATE用于起动或禁止计数器的操作,以使计数器和计测对象同步。
每个计数器中有三个寄存器:①控制寄存器。
初始化时,将控制字寄存器内容写入该寄存器;②计数初值寄存器。
初始化时写入该计数器的初始值;③减1计数寄存器。
计数初值由计数初值寄存器送入减1计数寄存器,当计数输入端输入一个计数脉冲时,减1计数寄存器内容减1,当减到零时,输出端输出相应信号表示计数结束。
8253-5的读写控制逻辑接受系统总线的输入信号,当接收到低电平时,8253-5根据和端的电平,控制本器件接受CPU的访问,双向三态的数据总线缓冲器根据指令接收或发送数据。
这些数据是:编程8253工作方式的控制字;装入各计数器的初始值;读出各计数器的当前值。
用作寄存器选择的地址输入信号A1和A决定CPU访问的对象。
8253-5内部寄存器选择如表7-4所示。
表7-4 8253-5内部寄存器地址8253-5内部有三个控制寄存器控制对应计数器的工作。
它决定计数器的工作方式,按十进制或二进制计数,并控制CPU访问这些计数器的方法。
控制字中的6位作控制,2位用于选择计数器,其内容如下:工作方式控制字:表7-5 SC1,SC0——计数器选择表7-6 RL1,RL——CPU读/写操作表7-7 M2M1M——工作方式选择表7-8 BCD-计数方式选择存器确定。
计数器在编程写入初始值后,在某些方式下计数到0后自动预置,计数器连续工作。
CPU访问计数器时,必须先设定工作方式控制字中的RL1RL位。
计数器对CLK计数输入端的输入信号进行递减计数。
选通信号GATE控制计数工作的进行,其功能如表7-9所示。
表7-9 选通信号GATE的功能8253具有六种工作方式,在不同的方式下,计数器的启动方式、GATE端输入信号的作用以及OUT端的输出波形都有所不同。
在任何一种方式下,都必须先向8253写入控制字,控制字还起复位作用,它使OUT端变为工作方式中规定的状态和对计数初值寄存器CR清零;然后再将计数初值写到CR中,其最大值为0000H。
(一)方式0——计数结束中断当程序把控制字写入控制寄存器时,苦工作在方式0,则该计数器的输出OUT立即变为低电平。
在计数初值写入该计数器后,输出仍将保持为低电平,在门控GATE信号为高电平时,计数器开始减1计数,当计数器从初始值减到全0时,便产生一高电平OUT输出,利用此输出信号可向CPU发出中断请求,此高电平输出一直保持到该计数器装入新的工作方式或计数值为止。
若在计数过程中装入新的初始值,则会导致装入第一字节停止现行计数,装入第二字节后从新的初始值开始计数。
方式0的时序波形如图7-18所示。
图7-18 方式0波形图中取计数初值n-4,在GATE为高电平时,允许计数器计数;若GATE为低电平,则禁止计数器计数。
注意如下几点:1)按方式0计数时,计数器只计一遍,当计数到0时,计数器并不装入初始值重新开始计数,其输出将保持为高电平。
2)方式0的计数过程可由门控信号GATE控制其起停。
在计数过程中,GATE信号的变化不影响输出OUT的状态。
3)计数过程中可重新装入计数初值。
如果是8位计数初值,在写入新的计数值后,计数器将按新的计数值重新开始计数,如果是16位计数初值,在写入第一个字节后,计数器停止计数,在写入第二个字节后,计数器按照新的计数值开始计数。
4)8253的内部操作是在CPU写计数值的信号上升沿将该计数值送到与计数器对应的计数初值寄存器。
在信号上升沿之后的一个CLK脉冲,才将计数值从计数初值寄存器送到减1计数器,计数器才开始计数。
如果设置计数初值为N,输出OUT是在N+1个CLK脉冲期间变为高电平的,这个特点也适合于方式l、方式2、方式4和方式5。
(二)方式1——可编程单稳在设定为方式1工作时,输出OUT变为高电平。
CPU执行输出指令装入计数初值时,OUT仍保持为高电平,在选通GATE输入信号上升沿后的计数过程中,OUT 变为低电平;直至减1计数器为全0时,OUT将变为高电平。
若在计数过程中(OUT 为低电平时),装入一个新的计数值,则在下一次GATE触发之前不影响计数器的计数,即不影响上一次的单稳脉冲的宽度。
任何时刻都可以读出计数器的值而不影响单稳脉冲的宽度。
单稳是可重触发的,因而在任何GATE输入信号上升沿后,OUT输出低电平信号的宽度将取决于时钟频率和计数初值的设定。
方式1的时序波形如图7-19所示。
图7-19 方式1波形在方式1时,GATE信号实际上是单稳态线路的触发信号,在GATE信号上升沿后的时钟脉冲CLK的由高电平到低电平的下降沿将计数初值装入计数器,同时使OUT变为低电平,然后开始递减计数过程。
在计数初值为N时,则OUT输出的脉冲宽度为N个输入脉冲的间隔时间。
(三)方式2——频率发生器当8253工作于方式2时,相当于一个N分频器,N为设定的计数初值,OUT变为低电平的时间是一个输入时钟周期,从一个输出脉冲到下一个输出脉冲之间的时间等于输入到计数寄存器中的计数初值N和时钟周期的乘积。
如果在两个输出脉冲之间,对计数寄存器装入新的初始值,现行计数过程不受影响,但下一周期将反映新的计数初值。
当GATE输入端为低电平时,将迫使OUT为高电平,并禁止计数;当GATE变为高电平时,计数器装入预置的计数值,且开始计数。
这样,GATE 信号就可用作计数器的同步控制信号。
在控制字设定一个计数器为方式2工作时,OUT输出保持为高电平,直至给计数寄存器重新装入计数初值。
这样,OUT也能用软件来同步。
方式2的时序波形如图7-20所示。
图7-20 方式2波形(四)方式3——方波发生器这种方式类似于方式2,不同的是OUT输出是方波。
当计数值是偶数时,在计数完成一半之前OUT保持为高电平,对另一半计数时OUT将变为低电平,然后重复上述计数操作,当计数值N是奇数时,对(N+1)/2进行计数时OUT是高电平,而对(N-1)/2进行计数时OUT则是低电平,然后重复计数,如果计数寄存器在计数期间重新装入新值,这个新值将在计数输出跳变以后立即反映出来。
方式3波形如图7-21所示。
图7-21 方式3波形(五)方式4——软件触发选通设定为方式4后,OUT将是高电平。
在CPU执行OUT指令时把计数值装入计数初值寄存器,在信号后的一个时钟脉冲的下降沿把计数值装入计数器,此后计数器开始计数。
在计数结束时,OUT输出一个时钟周期的低电平信号,然后再次变为高电平。
如果在计数过程中写入一个新的计数值,则现行CLK时钟周期不受影响,但下一个时钟周期将新的计数值装入计数器,然后开始计数。
当GATE信号为低电平时禁止计数;GATE为高电平时允许计数。
方式4的时序波形如图7-22所示。
图7-22 方式4波形(六)方式5——硬件触发选通这种方式类似于方式4,不同的是GATE输入信号的作用不同,计数过程由GATE 的上升沿触发,在GATE的上升沿后的一个时钟脉冲的下降沿将计数值装入计数器,然后开始计数过程。
在计数结束时,OUT将输出一个时钟周期的低电平信号,计数器是可重触发的。
在任何GATE触发脉冲上升沿之后,将把计数初值重新送入计数器,然后开始计数过程。
方式5的时序波形如图7-23所示。
图7-23 方式5波形四、8253-5的初始化(一)写入方式控制字使用任一计数器通道,首先要向该通道写入方式控制字,以确定该通道的工作方式。
注意,虽然三个通道用的控制字端口地址是相同的,但三个控制字写入后却存入对应通道的控制寄存器中。
(二)写入计数初始值某个计数器在写入了方式控制字后,任何时候都可以按RL1RL的规定写入计数初始值,对某一计数器的写入次序是必须严格遵守的,但是在符合次序情况下,允许在中间穿插着对别的计数器的读写操作。
当RL1RL=01时,只写入低8位,则高位自动置0;当RL1RL=10时,只写入高8位,则低位自动置0;当RL1RL=11时,写入16位,先写低8位,后写高8位。
写入计数初始值时,还需注意的是:如果在方式控制字中的BCD位为1,即为十进制计数,在写入指令中时必须写成BCD数,例如计数初值为50,采用BCD计数,则指令中的50必须写为50H。
下面举一个初始化的例子来说明上述过程。
要求计数器0工作于方式3,输出方波的重复频率为2KHz,计数脉冲输入为2.5MHz,采用BCD计数,试写出初始化程序段。
计算计数初始值TC=2.5MHz/2KHz=1250方式控制字为00110111=37H,即计数器0,写16位,方式3,BCD计数。
设8253的端口地址为80H,81H,82H,83H。
则初始化程序段为MOV AL,37H ;写入方式控制字OUT 83H,ALMOV AL,50H ;写入计数初始值低8位OUT 80H,ALMOV AL,12H ;写入计数初始值高8位OUT 80H,AL(三)读计数值在计数进行过程中,读出当前的计数值有时是有用的。
在动态读计数值时可以有两种办法。
1. 以普通对计数器端口读的方法取得当前计数值按工作方式控制字中RL1RL位的规定,可以读出指定字节的计数值。
考虑到计数器正在进行计数,可能会使从计数器直接读出的数值不稳定。
为此,在这种直接读出方法使用时,可以用GATE无效或阻断时钟输入等方法,使计数器暂停计数,保证CPU读到稳定的数值。
由于8253内部逻辑安排,按RL1RL的规定读完全部规定字节是绝对必要的,如果规定要读两个字节,那么必须在读出两个字节后,才有可能正确地向计数器写数。
2.锁存计数器的当前计数值用一个方式控制字,其中SL1SL=01指定要读的计数器通道号,RL1RL=00,使这个方式控制字成为一个软件命令,方式字的其余各位内容可以不考虑。
这个命令一写入后,就立即把当前计数值锁存到锁存寄存器,而计数器可以继续工作。
此后,CPU通过和上面一样的办法读出计数值,即先用方式控制字规定读取的方式,然后再读计数值,但由于这是从锁存寄存器中读取的,所以是一个稳定的值。