[计算机软件及应用]第05章接口芯片1
第5章 可编程接口芯片 5.2 可编程定时器/计数器8254 计算机系统中经常要用到定时信号,如定时检测、定时扫描和时钟定时等,定时方法通常有以下三种: (1)软件定时 (2)不可编程的硬件定时 (3)可编程的硬件定时 许多场合还需要对脉冲信号进行计数。 本节介绍Intel 8254定时/计数器芯片,它是一种的可编程的定时器件。 Intel 8254主要特性: (1)3个独立的16位定时/计数通道。 (2)每个通道有6种工作方式。 (3)最高计数频率为10MHz。 (4)可以按二进制或BCD码两种方式计数。 (5)定时时间长短可用软件设置,可由软件或硬件控制开始计数或停止计数。 (6)可以同时锁存1~3个计数器的计数值和状态值,供CPU读取。 5.2.1 8254的内部结构与外部引脚 数据总线缓冲器 8254与系统数据总线相连的接口电路。 通过数据总线缓冲器,CPU用指令对8254进行读/写: (1)8254初始化编程时,写入控制字。 (2)CPU向某一计数器写入计数初值。 (3)CPU读出计数器的当前计数值。 2. 读/写控制逻辑 接收来自CPU的控制信号: 读信号RD# 写信号WR# 片选信号CS# 芯片内部寄存器寻址信号A1A0 3.计数器0~2 8254有3个结构完全相同的定时器/计数器通道: 0,1,2 每个通道包含: 一个8位的控制字寄存器 三个16位的初值寄存器、减1计数器和结果输出锁存器。 每个通道有3根专用的信号线: CLK:计数/定时脉冲输入端,每输入一个脉冲,减1操作 OUT:计数值减到零时,由输出端OUT输出结束信号 GATE:门控信号,允许或停止计数 CLK脉冲: 8254作外部事件计数器时,CLK引脚上的计数脉冲从外部输入,这些脉冲的间隔可以不相等。 8254用作定时器时,CLK引脚的输入信号是精确的时钟脉冲。 8254的定时时间T=时钟脉冲周期tc×计数初值n 4. 控制寄存器 控制寄存器是一个只能写入的寄存器,它接收从CPU来的控制字,并由控制字的D7、D6位的编码决定控制字写入哪个计数器的控制寄存器。 在对8254进行编程时,CPU用输出指令向它写入控制字,由此确定各计数器通道的工作方式、读写格式和计数的数制。 5. Intel 8254的引脚 (1)CS#: 片选信号,接I/O端口译码电路的输出 (2)RD#, WR#: 读/写控制信号 (3)D7~D0: 数据线,与系统数据总线相连 (4)A1A0 接地址总线低2位,用于片内端口的选择。A1A0=00,选择通道0;A1A0=01,选择通道1;A1A0=10,选择通道2;A1A0=11,选择控制端口。 (5)每个通道有三根对外的信号线: CLK,OUT 和 GATE。 4. 方式3-方波发生器 ①输出为周期性的方波。若计数值为N,则输出方波的周期是N个CLK脉冲的宽度。 ②写入控制字后,输出将变为高电平.当写入计数初值后,就开始计数,输出仍为高电平;当计数到初值一半时,输出变为低电平,直至计数到0,输出又变为高电平,重新开始计数。 ③若计数值为偶数,则输出对称方波。如果计数值为奇数,则前(N+1)/2个CLK脉冲期间输出为高电平,后(N—1)/2个CLK脉冲期间输出为低电平。 ④GATE信号能使计数过程重新开始。GATE=1允许计数,GATE=0禁止计数。停止后OUT将立即变高开,当GATE再次变高以后,计数器将重新装入计数初值,重新开始计数。 5. 方式4-软件触发选通 写入方式控制字后,OUT输出高电平。 写入初值,经过一个CLK脉冲开始减1计数,计到0时OUT输出为低电平,持续一个CLK脉冲周期后再恢复到高电平。 GATE=1时,允许计数;GATE=0,禁止计数,并把输出维持在当时的电平。 如果GATE=1时在计数过程中改变计数值,则在写入新值后的下一个时钟下降沿计数器立即按新的初值开始计数。 6. 方式5-硬件触发选通 ①写入控制字后,输出为高电平。在设置了计数值后,计数器并不立即开始计数,而是由门控脉冲的上升沿触发启动。当计数到0时,输出一个CLK周期的负脉冲,并停止计数。当门控脉冲再次触发时才能再计数。 ②在计数过程中如果再次用门控脉冲触发,则使计数器重新开始计数,此时输出还保持为高电平,直到计数为0,才输出负脉冲。 ③如果在计数过程中改变计数值,只要没有门控信号的触发,不影响计数过程。当有新的门控脉冲的触发时,不管是否计数到0