第八章可编程计数器/定时器82538.1概述8.28253的内部结构8.58253的工作方式8.48253的控制字8.38253的引脚功能8.68253的应用举例第8章计数器/定时器80X86系统常用接口芯片(一)并行接口芯片Intel8255,有三个8位端口A,B,CIntel8155,有三个端口,内带256字节RAM,两个定时器。(二)串行接口芯片Intel8251,同步异步串行接口。Intel8250,异步串行接口芯片。(三)计数定时器Intel8253/8254,三个通道16位定时计数器。(四)直接存取控制器(DMAC)Intel8237上述接口芯片功能可由程序改变,称为可编程接口芯片。第8章计数器/定时器8253主要功能:①以均匀分布的时间间隔中断操作系统,以便切换程序;②向I/O设备输出精确的定时信号,信号的周期可由程序控制;③用来作为可编程波特率发生器;④检测外部事件发生的频率或周期;⑤统计外部事件发生的次数,计数结果送至计算机;⑥在定时或计数达到编程规定的值以后,向CPU申请中断。8.1计数器/定时器概述微机应用系统的重要应用之一是如何用好定时/计数器。即常常需要实时钟或延时或对外部事件计数。实现定时或延时控制的常用方法:(1)软件延时:用一个不完成任何功能的程序段实现;(2)常用数字电路定时:555(3)可编程硬件定时:8253,其定时值和定时范围可以通过软件来确定和改变。第8章计数器/定时器Intel8253____三个通道16位可设置定时计数器,可由软件设定6种工作方式。8.28253内部结构第8章计数器/定时器①8253内部由三个独立通道组成,结构与工作原理完全相同。②每个通道是16位计数器可对外输入CLK进行二进制或十进制(BCD)减1计数是否计数由外引脚GATE控制。CLK已知频率的时钟信号外部事件发生源16位减法计数器2#最大216(0000H)最小1(0001H)10#最大104(0000H)最小1(0001H)③每个通道有6种工作方式,由控制寄存器选择。④计数器归0时由OUT引脚输出信号。⑤控制字寄存器只能写不能读,写入的控制字将控制通道的工作方式。⑥数据总线缓冲器用于与CPU间的信息通道。第8章计数器/定时器1.D7~D0:数据总线,双向,三态,直接与计算机数据总线相连。2.CLK0~CLK2:计数时钟输入端,下降沿使通道减1。3.GATE0~GATE2:门控制,输入,高电平有效或上升沿有效,有效时允许计数器对输入时钟计数。4.OUT0~OUT2:通道输出信号,计数器到“0”时由此输出一信号,输出波形形式取决于工作方式。5.A1、A0:寻址3个通道的计数器和控制寄存器(3个通道的控制寄存器共用一个端口地址).6.RD、WR和CS:8253的读、写和片选信号,均为低电平有效。01000010010101001011001000010100110功能对计数器0设置计数初值CSRDWRA1A0对计数器1设置计数初值对计数器2设置计数初值设置控制字从计数器0读出计数值从计数器1读出计数值从计数器2读出计数值8.38253的引脚功能第8章计数器/定时器8253与8086系统计算机连接D7~D0D7~D0RDWRA1A0CSIORIOWA13A15A14A10A12A1174LS3074LS04A9+5VA8A7A6A5+5VCBA74LS138Y2G2AG2BG18253A2A1GATE0GATE1GATE2OUT0OUT1OUT2CLK0CLK1CLK2PB1(8255)+5VPB0(8255)IRQ0(8259)刷新电路驱动器CPCLKDQQ74LS175说明:1.8253的数据线D7~D0接8086的数据总线的低8位。2.8253的A1和A0分别接系统的A2和A1,使用偶地址传递信息。3.由74LS138,74LS30和74LS04译码选中8253。A15~A80~0端口00011011控制口A7A6A5A4A3A2A1地址040H0A0010XX通道0通道1通道2042H044H046H4.8253的三个通道输入时钟由系统PCLK分频得到,频率为:2.38636/2=1.1931816MHz.5.在IBM-PC/XT微机系统中,通道0定时OUT0接8259的IR0,通道1刷新动态存储器,通道2控制扬声器发声.第8章计数器/定时器M2M1M0:计数器工作方式选择000方式0001方式1x10方式2x11方式3100方式4101方式5BCD:计数器进制选择016位二进制计数器1BCD码计数器SC1SC0:计数器通道选择00通道001通道110通道211非法RW1RW0:计数器读写选择00计数器锁存01只读写低8位10只读写高8位11先读写低8位,再读写高8位控制字写入控制端口,各位含义如下:D0SC1D7SC0BCDRW1RW0M2M1M08.48253的控制字8253初始化:对一个通道先写入控制字再写入时间常数(计数初值)第8章计数器/定时器注:①写入控制字后,所有控制逻辑电路复位,输出端OUT进入初始状态。②CPU向8253写入的计数初值,要在CLK端输入一个正脉冲()后才能被真正装入指定通道(若在此CLK下降沿之前读计数器,则其值是不定的)。之后再次输入时钟脉冲(CLK)才开始计数,且每次在脉冲的下降沿减1计数。即:写入计数初值后,经过一个CLK,8253才开始计数。第8章计数器/定时器(1)方式0——计数结束产生中断(2)方式1——可重复触发单稳触发器(3)方式2——分频器(频率发生器)(4)方式3——方波发生器(连续)(5)方式4——软件触发选通(6)方式5——硬件触发选通8.58253的工作方式第8章计数器/定时器CLKOUT43210FF方式0时序图CWN=4WR(1)方式0——计数结束产生中断①控制字(CW)写入后OUT即变为低电平,当计数器为0时,输出OUT变为高电平。②计数初值写入后在下一个CLK下降沿才送入计数器,因此计数值为N+1。③当GATE变为低电平时计数停止,再变为高电平时计数继续进行。④若计数过程中重新送入初值,则按新值重新计数。⑤计数到零后,不能自动恢复计数初值,OUT端保持高电平。再次写入计数初值,才又开始计数。第8章计数器/定时器例:若8253的地址为04H~07H,要使计数器工作在方式0,仅用8位二进制数,计数初值为128,初始化程序为:MOVAL,50HOUT07H,ALMOVAL,80HOUT05H,ALD0SC1D7SC0BCDRW1RW0M2M1M0D01D70001000第8章计数器/定时器(2)方式1——可重复触发单稳触发器①写入CW后OUT变为高电平,GATE上升沿触发后,OUT变为低并开始计数,归零时OUT变为高电平。②GATE再来一次上升沿使OUT为低,计数器以初值重新计数。③计数过程中,再次给通道写入时间常数,不影响现行操作过程,GATE再次触发后才按新的时间常数操作。④计数过程中,GATE触发沿提前到来,在下一个CLK的下降沿,计数器开始重新计数,这将使输出单稳脉冲比原先设定的计数值加宽。OUT3210方式1时序图CLKCWN=3WRFFFE32GATE可重复触发——当计数归零后,不用再次送计数值,只要给它触发脉冲,即可产生一个同样宽度的单稳脉冲输出。第8章计数器/定时器(3)方式2——分频器(频率发生器)①写入CW后OUT为高电平,写入时间常数后,下一CLK开始计数,减到1时OUT变低,经过一个CLK后OUT变高,计数重新开始。②GATE=1计数进行,GATE=0计数停止,且下一个CLK计数器重新赋初值,GATE变为高电平,计数重新开始。③计数期间送入新值,本周期继续进行,下一个周期按新值计数操作。OUT321方式2时序图CLKCWN=3WRGATE321321不用重复置数。计数器能够连续工作,输出OUT是输入CLK的n(初值)分频。软件同步:计数器写入控制字和计数初值后,如GATE一直处于高电平,那么,在下一个脉冲开始计数器计数。通过写入计数初值使计数器同步,称为~。硬件同步:由前述②知,门控信号可实现计数器的同步,称为硬件同步第8章计数器/定时器第8章计数器/定时器(4)方式3——方波发生器(连续)①写入CW后OUT变为高电平,输入时间常数后,下一个时钟开始计数,计到一半时输出变为低电平,计到终值时重新变为高电平,并开始下一次计数过程。②若N为偶数,高低电平持续时间相等;若为奇数,则高电平持续时间为(N+1)/2,低电平持续时间为(N-1)/2。③GATE=1计数进行。在计数过程中若GATE=0,计数停止且OUT为高,计数器重新赋初值,GATE回到高时计数重新开始。④计数期间送入新值,本周期继续进行,下一个周期按新值计数。OUT321方式3时序图CLKCWN=4WR32GATE441第8章计数器/定时器(5)方式4——软件触发选通①写入CW后OUT为高电平,输入时间常数后,下一个CLK开始计数,计数器为0时,输出一个周期负脉冲,并停止操作。②GATE=1允许计数,GATE=0禁止计数。③计数期间送入新的时间常数,则下一个时钟按新值重新计数。(6)方式5——硬件触发选通①写入CW后OUT为高电平,输入时间常数后由GATE上升沿启动计数。计数为0时输出一个时钟的负脉冲,并停止操作。②计数过程中,若GATE又来一个上升沿,则下一个时钟计数器重新赋值计数。③计数过程中写入时间常数,当前周期不受影响,在下一个GATE上升沿启动新值计数。OUT3210方式5时序图CLKCWN=3WRFFFE32GATE10OUT321方式4时序图CLKCWN=3WRGATE0FFFEFDFC计数过程由软件将计数初值装入通道来触发第8章计数器/定时器8253有6种不同的工作方式。小结如下:方式0——写入CW后,输出即变低,计数结束输出为高,常用该输出信号作为中断源。其余5种方式写入CW后,输出均变高。方式0可用来实现定时或对外部事件进行计数。方式1用来产生单脉冲。方式2用来产生序列负脉冲,每个负脉冲的宽度与CLK的周期相同。方式3用于产生连续的方波。方式2和方式3都实现对CLK的n分频。方式4和方式5的波形相同,都是计数器归0后的1个负脉冲,宽度为1个CLK。方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲。但方式2是连续的,方式4是由软件(设置初值)触发启动,而方式5由硬件(门控脉冲)触发启动。方式1、5触发计数方式相同,但输出波形不同。方式1为输出n个CLK脉冲周期的负脉冲(计数过程中输出为低),而方式5输出的是宽度为1个CLK脉冲周期的负脉冲(计数过程输出为高)。任一种方式,只有在写入计数值后才能开始计数,方式0、2、3和4都是在写入计数值后,计数过程就开始了,而方式1和5需要外部触发启动,才开始计数。第8章计数器/定时器(一)BIOS对8253初始化1.对计数器0的初始化MOVAL,36HOUT46H,ALMOVAL,00HOUT40H,ALOUT40H,AL说明:(1)计数器0工作于方波发生器方式,对CLK(1.1931816MHz)进行65536(216)分频。(2)计数器0的输出端OUT0接8259的IR0,每次归0产生一次中断请求,中断号由BIOS设置为8。(3)中断时间间隔为54.925ms,每秒钟来18.2次中断。(4)通道0的时间间隔是计算机系统时标基础。2.对计数器1的初始化MOVAL,54HOUT46H,ALMOVAL,18(18分频)OUT42H,AL(1)通道1给DMA控制器提供时钟。(2)输出频率为66.288KHz.8.68253应用举例第8章计数器/定时器(一)BIOS对8253初始化3.对计数器2的初始化和接通喇叭MOVAL,0B6HOUT46H,ALMOVAX,533HOUT44H,ALMOVAL,AHOUT44H,ALINAL,62H;读入8255的PB口MOVAH,AL;保护原值OR