380 likes | 586 Views
可编程接口芯片从以下几个方面掌握: 芯片的功能 芯片的工作方式 芯片的编程方法 与 CPU 如何连接 完成各种实际应用. 学习可编程接口芯片的方法. 第八章 可编程计数器 / 定时器. 8253 及其应用. (P304). 了解 8253 的功能 熟悉 8253 的工作方式 掌握 8253 的编程方法 掌握每种工作方式下 GATE 对 OUT 的影响 学会使用 8253 计数和定时功能. 计数器 / 定时器 :. 第八章.
E N D
可编程接口芯片从以下几个方面掌握: 芯片的功能 芯片的工作方式 芯片的编程方法 与CPU如何连接 完成各种实际应用 学习可编程接口芯片的方法
第八章 可编程计数器/定时器 8253及其应用 (P304) 了解8253的功能 熟悉8253的工作方式 掌握8253的编程方法 掌握每种工作方式下GATE对OUT的影响 学会使用8253计数和定时功能
计数器/定时器: 第八章 通常按计数的实现方法可将计数器操作分为增量计数器和减量计数器两种。增量计数器是指当计数脉冲(事件)到来后,计数的计数值加“1”;减量计数器反之。 增量计数器常用于对事件的累计,而减量计数常用于限量计数。增量计数关心的是当前计数的量,减量计数关心的是计数终到的时刻。 在微机系统或微机应用系统,特别是控制系统中,经常有计数和计时的要求。如汽车里程表 的公里计数,电话通话时间计时等。这些应用在计算机中的处理方法不外乎两种:软件方法和硬件方法。
第八章 软件定时:就是根据所需要的时间常数来设计一个延迟子程序,这样作的优点是节省硬件,但耗费CPU的资源较多,降低了CPU效率,且编写软件略显麻烦,通常延迟时间较小且重复次数有限的情况下,使用该方法。 硬件定时:采用电子器件构成定时或延时电路。电路触发后延时时间的长短由电路中的定时元件的RC值(RC时间常数)所决定,这种定时方法的缺点是,要改变定时间隔必须改变电路元件,不灵活。(纯硬件) 可编程硬件定时:采用可编程的计数/定时芯片完成。定时值及其可调整范围,都可以通过软件编程确定和改变,功能灵活使用方便。(软硬件结合) 可编程计数器/定时器Intel 8253就是这种芯片。
8.1 8253的工作原理 (P304) 计数器/定时器的功能: • 对外部事件发生次数进行计数; • 产生计算机系统需要的定时信号。 计数和计时本质上是相同的,它们都是对一个输入脉冲进行计数。 计数器的输入信号可以是随机信号,定时器的输入信号要求具有固定周期。 如果输入脉冲的频率一定,那么记录脉冲的个数与所需的时间是一一对应的关系。例如输入脉冲频率为2MHz,那么计数2106 计时1秒。 因此,使用同一个芯片,既可以用来计数,又可以用来定时。计数器/定时器8253可以通过编程,从6种工作方式中选择一种工作方式。
一个计数器/定时器的组成: 8253的工作原理 控制字寄存器——决定工作模式(8位) 状态寄存器——反映工作状态 初值寄存器——计数的初值(16位) 计数输出寄存器—— CPU从中读当前计数值(16位)。 计数器——执行计数操作,CPU不能访问。(16位) 输入计数器脉冲 门控信号输入端 输出端
计数器/定时器的组成: 8253的工作原理 首先,CPU把控制字写入控制寄存器,计数初值写入初值寄存器; 计数从初值开始,每当CLK脉冲信号出现一次,计数值在门控信号GATE控制下决定是否减1; 当计数值减到0,从OUT端输出规定的信号; CLK信号出现时,计数器是否减1,由门控信号GATE控制。
一、8253A的内部结构和引脚信号(P305) 8253的内部结构图 接CPU或系统总线 8253的工作原理
一、8253A的内部结构和引脚信号 8253 是24引脚双列直插式芯片,它与CPU的接口引线如下: D7~D0是数据线引脚,RD和WD分别是读写控制引脚,CS是片选信号。A1,A0是片内地址选择引脚。 8253管脚图 VCC D7 1 24 WR D6 2 23 RD D5 3 22 CS D4 4 21 8253 A1 D3 5 20 A0 D2 6 19 CLK2 D1 7 18 OUT2 D0 8 17 GATE2 CLK0 9 16 CLK1 OUT0 10 15 OUT1 11 14 GATE0 12 13 GATE1 GND 8253的工作原理 8253的三个计数通道在结构上和功能上完全一样,每个通道均有两个输入引脚CLK和GATE,一个输出信号 引脚OUT。 由CPU输入的控制信号CS、RD和WD与A1,A0组合实现的功能见教材P322表8-1。
CS RD WR A1 A0 功能 一、8253A的内部结构和引脚信号 0 0 0 1 0 0 1 对计数器A1A0设置计数初值 1 0 0 1 0 1 1 设置控制字或给一个命令 0 0 0 0 1 0 1 从计数器A1A0读出计数值 1 0 8253的工作原理 8253输入信号组合的功能表
一、8253A的内部结构和引脚信号 8253的工作原理 8253作为定时器使用时,其定时时间计算公式为: 定时时间 = 时钟脉冲周期tclk预置的计数初值n 例:在某系统中,8253的CLK上的计数脉冲频率为0.5MHz,8253计数器的初值是n=500。 0.5MHz的时钟脉冲周期为T=2s,则 定时时间 = 2s 500=1ms 注意:8253 外部输入引脚CLKi上的时钟脉冲频率不能大于2MHz。
一、8253A的内部结构和引脚信号 D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RW1 RW0 M2 M1 M0 BCD 1:BCD 0:2进制 00:选择通道0 01:选择通道1 10:选择通道2 11:无效 000:方式0 001:方式1 X10:方式2 X11:方式3 100:方式4 101:方式5 00:计数器锁存 01:读写低字节 10:读写高字节 11:先低,后高 8253的工作原理 在对8253进行编程时,由CPU向它写控制字,来选定计数器通道,并规定所选计数器的工作方式。控制字格式: BCD:0000~9999H; 二进制:0000~FFFFH; BCD: 1200H=1200; 二进制:1200H=4608
初值写进去之后,门控信号允许时,计数过程是:初值写进去之后,门控信号允许时,计数过程是: 1、初值放入计数当前值寄存器 2、CLK到来一个脉冲当前值寄存器减1 3、判断当前值是否为0,如果不为0,返回2,否则当前一次计数结束。 计数初值为0000时,如何计数? BCD:初值可以为0000~9999H; 当初值为0时,先减1得9999H,到最后减为0,进行了10000次计数,所以初值0相当于10000 二进制:0000~FFFFH; 65536 CLK确定的情况下,一个定时器的最长定时时间=??对应的计数初值是??
二、 8253的初始化步骤和门控信号的功能 MOV AL, 34H MOV DX, 3F0H OUT DX, AL MOV AL, 12H OUT DX, AL 8253的工作原理 1. 初始化步骤: (1) 写入控制字; (2) 按控制字要求写入计数初值。 计数初值N=fCLK/fOUT =TOUT/TCLK 例(P309):8253的地址为3F0H、3F2H、3F4H、3F6H 要求8253的计数器0工作于方式3,BCD码计数, 计数器初值 n=1234H, 初始化程序为: MOV AL, 37H MOV DX, 3F6H OUT DX, AL
二、 8253的初始化步骤和门控信号的功能 8253的工作原理 2. 门控信号控制功能:(P310) 门控信号GATE的控制功能如教材P310表8-2所示,由表可知: 方式0,4时:门控信号为电平触发方式1,5时:门控信号为上升沿触发方式2,3时:门控信号为电平或上升沿触发 三、 8253的工作方式 (P310) 工作方式决定以下内容: 1)门控信号的影响 • 高电平允许:当GATE=0,即使出现CLK,也不计数 —— 方式0,2,3,4 • 上升沿允许(上升沿触发)——方式1,5,2,3
三、 8253的工作方式 工作方式决定以下内容: 2) OUT信号的状态 8253的工作原理 写入控制字后, OUT的状态 计数过程中, OUT的状态 计数终了, OUT的状态 3)计数操作可否重复 不可重复——模式0,4 自动重复——模式2,3 条件重复——模式1,5
三、 8253的工作方式 1. 方式0:计数结束中断方式 8253的工作原理 CLK WR CW N=4 GATE OUT 可作为INTR信号 4 3 2 1 0 特点: • 计数器只计数一遍,不循环; • 计数过程中,可由门控信号控制暂停计数; • 在计数过程中可改变计数值。写入新值后,计数器按新值重新开始计数
三、 8253的工作方式 2. 方式1:可编程单稳态输出方式 8253的工作原理 CLK N=3 WR CW GATE OUT 3 2 1 3 特点: • 若计数值为N,则输出脉冲宽度为N*CLK; • 计数到0,可由GATE上升沿再次触发,输出一个脉冲,不需重新赋值; • 若计数过程中,门控信号再次触发,计数器在触发信号的下一个CLK重新开始计数; • 若计数过程中,CPU改变计数值,但计数过程不受影响,再次触发后,按新值重新计数。
三、 8253的工作方式 3. 方式2:比率发生器(分频器)P312 8253的工作原理 CLK WR CW N=4 GATE OUT 4 3 2 1 4 3 2 1 特点: • 不需重新赋值,计数器能连续工作; • 计数过程中,若GATE变低,计数器暂停工作,GATE变高后,计数器重新取出初值,开始计数; • 计数过程中,若写入新的初值,对当前的计数过程无影响,但下一个计数过程,以新的初值开始计数;
三、 8253的工作方式 4. 方式3:方波发生器(P312) 8253的工作原理 CLK WR CW N=4 GATE OUT 4 2 4 2 4 2 4 2 特点: • 同 方式2的三个特点,不同的是: • 初值为偶数时,每来一个脉冲,计数值减2 • 初值为奇数时,第一个CLK使计数器减“1”,其后每一个CLK使计数器减“2”,到“0”后,改变输出状态,同时重新装入计数值。接着第一个CLK使计数值减“3”,以后每个CLK使计数值减“2”,直到计数值为“0”,重复上述过程。
三、 8253的工作方式 5. 方式4:软件触发选通(P313) OUT 特点: 8253的工作原理 CLK WR CW N=4 GATE 4 3 2 1 0 • N值写入后,如Gate为高,则下一个CLK开始计数,相当于软件启动; • 写一次初值,只计一次;计到0时,产生低电平维持一个周期 • GATE=“1”,允许计数,GATE=“0”,禁止计数,因此,要做到软件启动,必须使GATE=“1”; • 计数过程中改变计数值,按新值重新计数到0;
三、 8253的工作方式 6. 方式5:硬件触发选通(P314) OUT 特点: 8253的工作原理 CLK WR CW N=5 GATE 5 5 5 4 3 2 1 0 • N值写入后,计数器并不计数,当GATE的上升沿出现时,取出初值开始计数; • 计数过程中改变计数值,若没有GATE的触发,不影响计数过程,当计数到“0”后,若有GATE触发,则按新的计数值计数.
三、 8253的工作方式 8253的工作原理 6种工作方式主要区别: OUT输出波形不同。 启动计数器的触发方式不同。 计数过程中门控信号GATE对计数操作的影响不同。 有的工作方式具备“初值自动重装”的功能。初值自动重装的功能是:当计数值减到规定的数值后,计数初值将会自动地重新装入计数器。
三、 8253的工作方式 6种工作方式小结: 8253的工作原理 方式0:计数初值N写入CR后,当GATE为高电平时,经过N个时钟脉冲之后OUT由0到1跳变 延迟时间TD=NTCLK 每写一次初值仅仅计数一次 方式1:计数初值N写入CR后,由GATE上升沿触发,OUT输出一个负的单脉冲 单脉冲宽度T=N TCLK 不必每次都写初值。 方式2:计数初值N写入CR后,当GATE为高电平时, 输入端每输入N个时钟脉冲,在输出端出现一个负的时钟脉冲 —— N分频器。 自动重装入初值。
三、 8253的工作方式 6种工作方式小结: 8253的工作原理 方式3:计数初值N写入CR后,当GATE为高电平时,n为偶数时OUT输出一系列方波 (N分频器)。N值为奇数时,输出矩形波,高低电平时间不同(差一个时钟周期)。 自动重装入初值。 方式4:计数初值N写入CR后, 触发计数(此时GATE必须为高电平),经N个时钟脉冲,输出端产生选通负脉冲信号, 宽度= 1个CLK 只计一次 方式5:计数初值N写入CR后,硬触发(GATE输入一个正脉冲)后,经N个时钟脉冲, 输出端产生选通负脉冲信号,宽度= CLK 不必每次都写初值
8.2 8253的应用举例 (P315) 实际应用例子的解题思路: 确定端口地址—确定计数初值-确定工作方式—确定电路图——编程(写入控制字、初值) 8253的编程只需要初始化。初始化之后,芯片自动工作,无需程序干扰 注意:用到多个通道时,对每个通道都要依次写控制字,写初值。
接口芯片地址 注意:端口地址及片选信号的产生选择 8253A的A1、A0: 与8086CPU的A2、A1相连; 与8088CPU的A1、A0相连。 8255的工作原理 A1 A0 端口地址: 8088 8位 8253 0 0 X0H 0 1 X1H A1 A1 1 0 X2H A0 A0 1 1 X3H A2 A1 A0 端口地址: 8253 8086 0 0 0 X0H 低8位 0 1 0 X2H A2 A1 1 0 0 X4H A1 A0 1 1 0 X6H
例1: 在某个以8086为CPU的系统中使用了一块8253芯片,通道的基地址为310H,所用的时钟脉冲频率为1MHz。要求3个计数通道分别完成以下功能: 1)计数器0工作于方式3,输出频率为2KHz的方波; 2)计数器1产生宽度为480 s的单脉冲; 3)计数器2用硬件方式触发,输出单脉冲,时间常 数为26。 8253的应用举例 通道的地址分别为310H, 312H, 314H, 316H。 1)计数器0:方式3,OUT0输出方波 N0= fCLK/fOUT = 1MHz /2KHz=106/2 103 = 500 2)计数器1:方式1,OUT1输出单脉冲 N1= TOUT/TCLK= 480 s / 1 s= 480
例1: 3)计数器2:模式5,OUT2输出门控单脉冲, N2= 26 M/IO 74LS138 8253 A9 G1 A8 CLK0 A7 CLK1 1MHz G2A A6 CLK2 G2B Y4 +5V A5 CS GATE0 A4 C 2KHz OUT0 A3 B 8086 A0 A GATE1 A2 A1 OUT1 480us宽单脉冲 A1 A0 RD GATE2 RD OUT2 负脉冲 WR WR D7~ D0 D7~ D0 8253的应用举例 A9~A0=1100010XX0 310H~316H 程序如下页,见教材P316。
;通道0方式字及初值 MOV DX,316H MOV AL,00110111B OUT DX,AL MOV DX,310H MOV AL,00H OUT DX,AL MOV AL,05H ;通道1方式字及初值 MOV DX,316H MOV AL,01110011B OUT DX,AL MOV DX,312H MOV AL,80H OUT DX,AL MOV AL,04H OUT DX,AL ;通道2的方式字及初值 MOV DX,316H MOV AL,10011011B OUT DX,AL MOV DX,314H MOV AL,26H OUT DX,AL
每5秒产生一个脉冲 OUT0 GATE0 CLK0 OUT1 GATE1 CLK1 +5V +5V 2MHz 8.2 8253的应用举例 (P315) 时钟脉冲以2MHz输入8253,实现每5秒定时中断(设8253端口地址40H~46H) 例2: 确定端口地址—确定计数初值—确定电路图—确定工作方式—编程(写入控制字、初值) 分析:按照公式计数初值n=Tout/Tclk=107,而初值计数器只有16位,最大计数次数为65536,所以一个计数器不行, 所以需要两个计数器串联,一个计数器的输出作为另一个计数器的输入。连接如图:
N0=Tout0/Tclk0=Tout0/Tout1=Tout0/(N1*Tclk1) N0*N1=Tout0/Tclk1= 107 采取级联后,要使得级联的两个计数器的计数初值的乘积为107,所以两个计数器的初值N1、N2可以多种取值,只要N1*N2= 107即可。 可以取N1=10000,N2=1000 级联时每个计数器初值的计算
要实现每5秒,即自动循环计数,那么方式 0:只计数一次,不符合 1:每次要用上升沿才能触发计数,不行 2:只要Gate为高电平就可以自动循环计数,满足 3:类似方式2,也满足 4:Gate为高电平时,计数一次 5:必须用Gate上升沿才能触发计数,同1 首先,选择工作方式
例2: 每5秒产生一个脉冲 OUT0 GATE0 CLK0 OUT1 GATE1 CLK1 +5V 5ms产生一个脉冲 +5V 2MHz 8253的应用举例 计算初值:OUT1每5s输出一个脉冲,初值 N=定时时间/Tclk=5s/0.5 s=107 > 65535 计数器1:方式2,OUT1每5ms输出一个脉冲,初值 N1=定时时间/Tc=5ms/0.5 s=10000 计数器0:方式2,OUT0 每5s输出一个脉冲,初值 N2=定时时间/Tc=5s/5ms=1000
例2: 程序: START: MOV AL, 01110100B ; 定时器1,16位,方式2, MOV DX, 46H ; 二进制。 OUT DX, AL ; MOV AX, 10000 MOV DX, 42H OUT DX, AL MOV AL, AH OUT 42H, AL 8253的应用举例 MOV AL, 00110100B ; 定时器0,16位,方式2, MOV DX, 46H ; 二进制。 OUT DX, AL MOV AX, 1000 MOV DX, 40H OUT DX, AL MOV AL, AH OUT DX, AL
例3:控制LED的点亮和熄灭 8253的应用举例 用8253定时器功能,控制LED发光二极管每隔10秒点亮一次持续10秒,设输入频率为2MHz。芯片基地址为81H 分析:需要用计数器级联方法,如通道0和通道1; 方波输出,输出脉冲周期为20秒(高低电平各10秒)。 电路原理图见教材P317图8-11 计数器0:方式2或3,OUT0输出400Hz的连续脉冲, N0= fCLK/fOUT = 2MHz /400Hz =5000 计数器1:方式3,OUT1输出周期为20秒的方波, N1= fCLK/fOUT = 400 /1/20=8000 程序见教材P317
P317 注意本题的端口地址 MOV AL,00110101B ;通道0 方式字 OUT 87H,AL MOV AL,00H ;通道0 的计数初值低字节 OUT 81H,AL MOV AL,50H ;通道0 的计数初值高字节 OUT 81H,AL MOV AL,01110111B ;通道1方式字 OUT 87H,AL MOV AL,00H;通道1 的计数初值低字节 OUT 83H,AL MOV AL,80H;通道1的计数初值高字节 OUT 83H,AL