82C54可编程计数定时器

8254 能用于多种应用场合,例如外部事件计数器、可编程方波频率发生器、分频器、实时时钟以及程控单脉冲发生器等。 web


本接口卡的功能组成很是灵活,经过跨接插座的不一样链接方式,可使8254的时钟输入端 CLK 与被测现场信号相连,或者与卡上基准时钟相连,也能够将二至三级计数器串连使用。对于8254 的启停控制端 GATE,一样能够经过跨接插座的选择,使其或者受程序的控制或者设置为外部控制。 编程


8254的所有功能是由CPU编程设定的。CPU经过输出指令给8254装入控制字,从而设定其功能。markdown


这里写图片描述
这里写图片描述
这里写图片描述

例题:
例1:端口地址为60H~63H,选择1#,工做方式2,计数初值为5533H,BCD码制。其初始化程序段为:svg

MOV AL,01110101B   ;写入控制命令字【由于是先写入低位字节,再写入高字节,注意对照上面的表2可知道RL1,RL0应该都是1OUT 63H,AL
MOV AL,33H         ;写入计数初值低字节
OUT 61H,AL 
MOV AL,55H         ;写入计数初值高字节
OUT 61H,AL

例2:端口地址为60H~63H,读出1#当前计数值。
【这里使用的是82C54的锁存命令 ,只须要读到1#这个端口的数据,后面的就不用管,因此后面的基本为0。MOV AL,01000000B】spa

MOV AL,01000000B   ;写入控制命令字,锁存操做
OUT 63H,AL
IN AL,61H          ;读出 1#当前计数值 

复习3d

1.8253有__3__个计数器,每一个计数器是__16__位的。
2.8253有__6___种工做方式。
3.欲使8253的一个计数器产生最大的定时时间, 写入计数器的计数初值为____0____。
4.8253的引脚CS、RD、WR、A一、A0为___B___时,表示对计数器1设置计数初值。 A.01000   B.01001   C.00101   D.10101

82C54的三个计数器按照各工做方式寄存器中控制字的设置进行工做。
能够选择的工做方式只有六种【注意是只有六种】。
这六种方式分别是:
方式0:计数结束时中断。编程后自动启动,计数器减1计数,计数到终点(减至0 )后输出高电平,可用于中断请求信号,GATE为低电平时中止计数,回到高电平后继续往下计数。再次启动要从新装入计数值或从新编程。 code

方式1:可编程单脉冲输出。GATE上升沿进行初始化并开始计数。输出低电平的宽度等于计数时间。单脉冲输出可用 GATE 上升沿屡次触发。 xml

方式2:比率发生器。编程后重复地循环计数。计数到终点时输出一个时钟周期宽度的低电平脉冲,自动初始化后继续计数。用GATE的上升沿初始化,并开始计数。GATE为低电平时中止计数。 blog

方式3:方波发生器。这种方式是在编程后重复地循环计数,输出波形为方波。若是初始计数值为偶数,每一个时钟输入脉冲使计数器减2,达到计数终点时输出电平改变。若是初始计数值为奇数,则输出高电平 时第一个时钟输入脉冲使计数器减1,随后每一个输入脉冲使计数器减2;输出为低电平时第一个时钟输入脉冲使计数器减3,随后每一个输入脉冲使计数器减2,到达计数终点时输出电平改变,计数器自动初始化后继续计数。用GATE的上升沿初始化并开始计数,GATE为低电平时中止计数。 接口

方式4:软件启动选通脉冲输出。编程后自动启动,计数到终点后输出一个时钟周期的低电平脉冲。用GATE的上升沿初始化并开始计数,GATE为低电平时中止计数。

方式5:硬件启动选通脉冲输出。编程后,等待 GATE 上升沿进行初始化并开始计数,计数到终点后输出一个时钟周期的低电平脉冲,计数器开始计数后不受 GATE 信号电平的影响,这种选通脉冲的输出可用GATE的上升沿屡次触发。在工做方式控制字中,若是设置计数器锁存操做,则该控制字中工做方式选择位M一、M0 和计数方式选择位BCD 无效。即设置锁存操做时不影响计数器的工做方式,计数器锁存操做,是在计数器计数过程当中,在不影响正在进行的计数操做的条件下,把当前的计数值锁存到寄存器,供 CPU 读取,这时在工做方式控制字中,SC一、SC0指定要锁存的计数器,RL一、RL0=00表示锁存操做,其他4位无效,计数器按原来设定的方式工做。