《第11章可编程定时器计数器精.ppt》由会员分享,可在线阅读,更多相关《第11章可编程定时器计数器精.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第11章可编程定时器章可编程定时器计数器计数器第1页,本讲稿共50页 计数器/定时器接口芯片8253n 微机系统中经常会要求有一些实时时钟以实现定时或延时控制,如定时中断、定时检测、定时扫描等,或对外部事件进行计数并将计数结果提供给CPU。n 定时或计数的工作实质均体现为对脉冲信号的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时,如果计数的对象是与外部过程相对应的脉冲信号(周期可以不相等),则此时即为计数。第2页,本讲稿共50页11.2可编程定时可编程定时/计数器计数器825311.2.18253的主要性能的主要性能11.2.28
2、253的内部结构及外部引脚的内部结构及外部引脚11.2.38253的工作方式及波形的工作方式及波形11.2.48253的编程的编程11.2.58253的应用的应用第3页,本讲稿共50页11.2.18253的主要性能的主要性能 8253是三通道16位的可编程计数/定时器。8254是8253的改进型。第4页,本讲稿共50页8253可编程定时计数器内部有可编程定时计数器内部有3个个独立的独立的16位定时计数位定时计数器器通道。通道。计数器可按照计数器可按照二进制或十进制二进制或十进制计数,计数,每个通道有每个通道有6种种工作方式,工作方式,计数频率可高达计数频率可高达2MHz以上。以上。第5页,本讲
3、稿共50页11.2.28253的内部结构及外部引脚的内部结构及外部引脚8253各引脚的定义(连接系统总线):lD0D7:数据线。lRD#:读控制信号,低电平有效。lWR#:写控制信号,低电平有效。lA0、A1:地址线,用于选择3个计数器中的一个及选择控制字寄存器。lCS#:片选信号,低电平有效。第6页,本讲稿共50页11.2.28253的内部结构及外部引脚的内部结构及外部引脚8253各引脚的定义(连接外设):lCLK 02:计数器0、1、2的时钟输入端。lGATE 02:计数器0#、1#、2#的门控制脉冲输入端,由外部设备送入门控脉冲。lOUT 02:计数器0#、1#、2#的输出端。第7页,本
4、讲稿共50页11.2.28253的内部结构及外部引脚的内部结构及外部引脚l8253的内部结构:3个结构相同的16位计数器,1个8位控制字寄存器。l每个计数器内部包括:计数初值寄存器CR,计数执行部件CE,输出锁存器OL。它们都是16位寄存器,也可以作8位寄存器使用。第8页,本讲稿共50页第9页,本讲稿共50页计数器内部结构控制单元初值寄存器(CR)计数执行单元(CE)输出锁存器(OL)CLKGATEOUT在计数器工作时,通过程序给计数初值寄存器CR送入初始值,该初始值再被送入计数执行部件CE进行减1计数;而输出锁存器OL则用来锁存CE的内容,该内容可以由CPU进行读出操作。8253内部的3个计
5、数器和1个控制字寄存器,可通过地址线A0、A1,读写控制线RD#、WR#与片选CS#进行寻址,并实现相应的操作。第10页,本讲稿共50页表表11.18253读写控制逻辑表读写控制逻辑表CSRDWRA1A0操作对计数器0写初值对计数器1写初值对计数器2写初值写控制字到控制寄存器读计数器1当前计数值读计数器 0 当前计数值读计数器2当前计数值无操作01000011000101001110000010010100011其它情况第11页,本讲稿共50页11.2.38253的工作方式及波形的工作方式及波形1.方式方式0-中断信号发生器中断信号发生器2.方式方式1-可编程单稳负脉冲信号发生器可编程单稳负脉
6、冲信号发生器3.方式方式2-分频器分频器4.方式方式3-方波信号发生器方波信号发生器5.方式方式4-软件触发的选通脉冲信号发生器软件触发的选通脉冲信号发生器6.方式方式5-硬件触发的选通脉冲信号发生器硬件触发的选通脉冲信号发生器l工作方式由方式控制字确定,每种工作方式的过程类似:工作方式由方式控制字确定,每种工作方式的过程类似:设定工作方式设定工作方式设定计数初值设定计数初值(硬件启动)(硬件启动)计数初值进入减计数初值进入减1计数器计数器每输入一个时钟计数器减每输入一个时钟计数器减1的计数过程的计数过程计数过程结束计数过程结束第12页,本讲稿共50页工作过程:1.写控制字:设定工作方式后,O
7、UT端变为低电平;2.写初值:8位/16位(分2次)初值;3.开始计数:计数值装入执行部件,每个CLK下降沿,减1计数;4.计数结束:减到0时,计数过程结束,OUT端变为高电平。此输出信号可作为计数结束的中断请求信号;5.GATE作为计数控制信号:计数过程中,GATE=1:允许计数;GATE=0:暂停计数;6.重新计数:计数过程中,可随时写入新的计数值;如果初值为8位,则写完初值后,按新的初值重新开始计数;如果新的初值为16位,则写入第一个字节时,立即中止计数,写入第二个字节后,按新的初值重新开始计数;计数结束后,OUT端保持高电平,直至赋新的初值。1.方式0-中断信号发生器 第13页,本讲稿
8、共50页图图11.5方式方式0时序波形图时序波形图WRCLKGATEOUT4321方式0初值=40第14页,本讲稿共50页图图11.5方式方式0时序波形图时序波形图第15页,本讲稿共50页计数开始的时刻计数开始的时刻 处理器写入8253的计数初值只是写入了计数初值寄存器CR,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到计数执行部件CE减1计数器。从第二个CLK信号的下降沿,计数器才真正开始减1计数。第16页,本讲稿共50页第17页,本讲稿共50页第18页,本讲稿共50页2.方式方式1-可编程单稳负脉冲信号发生器可编程单稳负脉冲信号发生器 工作过程:1.
9、写控制字:设定工作方式后,OUT端变为高电平;2.写初值:8位/16位(分2次)初值;3.开始计数:GATE上升沿控制计数开始。GATE上升沿的下一个时钟周期,OUT变为低电平,每个CLK下降沿,减1计数;4.计数结束:减到0时,计数过程结束,OUT端变为高电平。此方式可以输出一个宽度(计数初值*Tclk)可调的单拍负脉冲,可作为设备的选通信号。5.重设初值:计数过程中,重新写入初值,对当前计数过程不会产生影响;6.重新触发:计数过程中,GATE上升沿的下一个时钟脉冲计数器将从初始值重新作减1计数,此时OUT端低电平保持不变,从而加宽了输出的负脉冲宽度。7.重新计数:计数结束后,GATE上升沿
10、控制新一轮计数。第19页,本讲稿共50页图图11.6方式方式1时序波形图时序波形图WR10CLKGATEOUT432初值=4方式1第20页,本讲稿共50页第21页,本讲稿共50页3.方式方式2-分频器分频器 工作过程:1.写控制字:设定工作方式后,OUT端变为高电平;2.写初值:8位/16位(分2次)初值;3.开始计数:计数值装入执行部件,每个CLK下降沿,减1计数;4.计数结束:当计数器减到1时,OUT端输出将变为低电平;再经过一个时钟周期,计数值减到0后,OUT又恢复为高电平。在此方式下,计数器具有自动装入计数初值的功能,即计数器的计数过程会自动重复工作。从而产生一个n分频(n是写入计数器
11、的初值)的连续的不对称的脉冲信号,可以作为脉冲信号发生器。5.重设初值:计数过程中,重新写入初值,对当前计数过程不会产生影响;6.计数过程控制:GATE1:允许计数;GATE0:停止计数,并强迫OUT输出高电平;GATE上升沿:下一个时钟周期,计数器恢复初值重新开始作减1计数。第22页,本讲稿共50页图图11.7方式方式2时序波形图时序波形图WRCLKGATEOUT4 3 2 104 3 2 1 04 3 2 1 04 3 2 1方式2初值=4第23页,本讲稿共50页4.方式方式3-方波信号发生器方波信号发生器 方式3与方式2类似,不同的是输出的波形为方波或者为近似对称的矩形波。当计数值n为偶
12、数:每当计数值减到n/2时,OUT端由高电平变为低电平,并一直保持计数到0,一旦计数为0时OUT端又由低变高并重新给计数器装入初值。当计数值n为奇数:输出分频波高电平宽度为(n+1)/2计数脉冲周期,低电平宽度为(n-1)/2计数脉冲周期。第24页,本讲稿共50页图图11.8方式方式3时序波形图时序波形图3 2 1WRCLKGATEOUT4 3 2 104 3 21 04 3 2 1 04方式3初值=4第25页,本讲稿共50页5.方式方式4-软件触发的选通脉冲信号发生器软件触发的选通脉冲信号发生器 工作过程:1.写控制字:设定工作方式后,OUT端变为高电平;2.写初值:8位/16位(分2次)初
13、值;3.开始计数:计数值装入执行部件,每个CLK下降沿,减1计数;4.计数结束:减到0时,输出宽度为1个Tclk的负脉冲。该负脉冲可以作为选通信号。5.计数过程控制:GATE1:允许计数;GATE0:停止计数;6.重设初值:该方式是一次有效,即不重新写入计数值,就只产生一个选通脉冲。如果在计数时又写入新的计数值,则在下一个时钟周期时将把此计数值写入计数器执行部件,使计数器按此新的计数值重新计数。第26页,本讲稿共50页图图11.9方式方式4时序波形图时序波形图WRCLKGATEOUT方式4初值=4初值=34 3 2 1 03 23 2 1第27页,本讲稿共50页第28页,本讲稿共50页6.方式
14、方式5-硬件触发的选通脉冲信号发生器硬件触发的选通脉冲信号发生器 此方式与方式4类似,不同的是:方式4靠软件触发,而方式5是利用引脚GATE来触发。GATE上升沿触发:下一个时钟周期,计数器开始作减1计数。在任何时刻,当GATE触发脉冲上升沿到来时,将把计数初值重新送入计数器,然后重新开始计数过程。第29页,本讲稿共50页11.2.48253的编程的编程1.写入方式控制字写入方式控制字2.写入计数值写入计数值3.读取计数值读取计数值初始化编程初始化编程(1)写控制字)写控制字无论对哪个通道写控制字都必须写到控制寄存器无论对哪个通道写控制字都必须写到控制寄存器(2)写计数初值写计数初值 用哪个计
15、数器通道,则写到该计数器通道对应的端口地址。用哪个计数器通道,则写到该计数器通道对应的端口地址。写初值时,要与控制字内的操作类型一致。写初值时,要与控制字内的操作类型一致。第30页,本讲稿共50页1.写入方式控制字写入方式控制字 8253的方式控制字格式如图所示,各计数器有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。第31页,本讲稿共50页8253初始值计算:初始值计算:l假假设设已已知知8253相相应应通通道道的的CLK端端接接入入的的时时钟钟频频率率为为fCLK,周周期期记记为为tCLK=1/fCLK,要要求求产产生生的的周周期期性性信信号号频频率率为为F(周周期期为为
16、T)或或定时时间为定时时间为T(F=1/T),则所需计数初值,则所需计数初值n为:为:l在计算时注意时间和频率的单位一致性。在计算时注意时间和频率的单位一致性。第32页,本讲稿共50页2.写入计数值写入计数值 若规定只写低8位,则只写1次,且写入的为计数初值的低8位,高8位自动为0。若规定只写高8位,则只写1次,且写入的为计数初值的高8位,低8位自动为0。若规定写两次,则先写入的为计数初值的低8位,再写入的为计数初值的高8位。选择二进制时 计数值范围:0000HFFFFH 0000H是最大值,代表65536 选择十进制(BCD码)计数值范围:00009999 0000代表最大值10000第33
17、页,本讲稿共50页注意注意:1、当采用、当采用8位二进制计数时位二进制计数时:在在8253初始化编程的传送指令初始化编程的传送指令“MOVAL,n”中,中,n可以写成任何进制数可以写成任何进制数(二进制、十进制或十六进制)的形式。(二进制、十进制或十六进制)的形式。2、当采用、当采用16位二进制计数时位二进制计数时:方法一方法一:先把计算得到的:先把计算得到的十进制十进制计数初值计数初值n转换成转换成十六进制数十六进制数(即(即16位位二进制),然后分两次写入二进制),然后分两次写入8253的指定端口。的指定端口。方法二方法二:先把该:先把该十进制十进制计数初值计数初值n直接传送给直接传送给A
18、X,然后分两次写入,然后分两次写入8253指指定端口,即:定端口,即:MOVAX,nOUTPORT,AL;先写低;先写低8位(位(PORT为端口号)为端口号)MOVAL,AHOUTPORT,AL;后写高;后写高8位位第34页,本讲稿共50页注意:3、当采用十进制(BCD码)计数时:将十进制计数初值n加上后缀H,以便在相应的传送指令执行后能够在AL(或AX)中得到十进制数n的BCD码表示形式。例如n=50,则应按如下方式写入:MOV AL,50H OUT PORT,AL 如果n=1250,则需分两次写入,即:MOV AL,50H OUT PORT,AL ;先写低8位 MOV AL,12H OUT
19、 PORT,AL ;后写高8位第35页,本讲稿共50页【例例11.1】已知已知8253的端口地址为的端口地址为40H43H,用,用8253的计数器的计数器0,每隔,每隔2ms输输出一个负脉冲,设出一个负脉冲,设CLK0为为2MHz,完成软件设计。,完成软件设计。解解:1、计算计数初值计算计数初值N:2、确定控制字:确定控制字:根据题意,选择计数器根据题意,选择计数器0,工作工作方式方式2。(1)二进制计数二进制计数,计数初值为,计数初值为4000(0FA0H),既写高字节,又写低字节。,既写高字节,又写低字节。控制字为:控制字为:00110100B=34H(2)BCD码计数码计数,计数初值为,
20、计数初值为4000H,低字节为,低字节为0,可只写高字节。控制,可只写高字节。控制字为:字为:00100101B=25H3、确定各端口地址确定各端口地址计数器计数器0,计数器计数器1,计数器计数器2,控制端口的地址分别为,控制端口的地址分别为40H、41H、42H和和43H。第36页,本讲稿共50页4、程序:程序:(1)采用采用二进制计数二进制计数:MOVAL,34H;控制字;控制字OUT43H,AL;写到控制端口;写到控制端口MOVAX,4000;把;把4000自动分离出低自动分离出低8位和高位和高8位位OUT40H,AL;先送低;先送低8位到计数器位到计数器0MOVAL,AH;把高;把高8
21、位给位给ALOUT40H,AL;再送高;再送高8位到计数器位到计数器0(2)采用采用BCD码计数码计数:MOVAL,25H;控制字;控制字OUT43H,AL;写到控制端口;写到控制端口MOVAL,40H;只需写高字节,低字节自动为;只需写高字节,低字节自动为0OUT40H,AL;写高;写高8位到计数器位到计数器0第37页,本讲稿共50页3.读取计数值读取计数值对对8位数据线,读取位数据线,读取16位计数值需分两次。计数在不断进行,应该将位计数值需分两次。计数在不断进行,应该将当前计数值先行当前计数值先行锁存锁存,然后读取。,然后读取。【例例11.2】设某系统中设某系统中8253的端口地址为的端
22、口地址为0B00B3H,读取计数器,读取计数器1当前的当前的计数值(设计数值为计数值(设计数值为16位),并存入位),并存入BX寄存器的程序如下:寄存器的程序如下:解:解:MOVAL,01000000B;发;发锁存命令锁存命令OUT0B3H,AL;写入控制端口;写入控制端口INAL,0B1H;读低;读低8位位MOVBL,AL;存入;存入BL中中INAL,0B1H;读高;读高8位位MOVBH,AL;存入;存入BH中中第38页,本讲稿共50页【例例11.3】某某8086系统中有一片系统中有一片8253芯片,端口地址为芯片,端口地址为500H、502H、504H、506H,各通道均接,各通道均接6M
23、Hz的时钟信号,要求在计数器的时钟信号,要求在计数器0输出一个输出一个最最大宽度的负脉冲大宽度的负脉冲,计数器,计数器1输出一个方波信号,周期为输出一个方波信号,周期为10s,计数器,计数器2输出输出一个定时中断信号,定时时间为一个定时中断信号,定时时间为0.2ms,写出其初始化程序。,写出其初始化程序。分析:分析:l计数器计数器0、1、2的地址分别为的地址分别为500H、502H、504H,控制端口的地址为,控制端口的地址为506H。l计数器计数器0工作在方式工作在方式1,必须采用二进制,计数器值为,必须采用二进制,计数器值为0(65536)。l计数器计数器1工作在方式工作在方式3,计数值为
24、,计数值为60,只写低字节,采用二进制或,只写低字节,采用二进制或BCD码码计数都可以。计数都可以。l计数器计数器2工作在方式工作在方式0,计数值为,计数值为1200,采用二进制或,采用二进制或BCD码计数都可码计数都可以。以。第39页,本讲稿共50页计数器计数器0:MOVDX,506HMOVAL,00110010BOUTDX,ALMOVDX,500HMOVAL,0OUTDX,ALOUTDX,AL计数器计数器1:MOVDX,506HMOVAL,01010111BOUTDX,ALMOVDX,502HMOVAL,60HOUTDX,AL计数器计数器2:MOVDX,506HMOVAL,10110000
25、BOUTDX,ALMOVDX,504HMOVAX,1200OUTDX,ALMOVAL,AHOUTDX,AL第40页,本讲稿共50页 【例11.4】某8088系统中有一片8253芯片,端口地址为150H153H,计数器0的输出作为计数器1的计数脉冲,利用计数器1控制发光二极管,使发光二极管持续闪烁,亮2秒,灭2秒,利用其计数器2完成对外部事件计数,计满200次向CPU发出中断申请,试编写8253的初始化程序,硬件电路如图11.12所示。第41页,本讲稿共50页8088CPUGATE 0GATE 1GATE 2CLK 0CLK1CLK2OUT 2A1A0RDWRD7D0CSA1A0IORIOWD7
26、D0OUT 1OUT 0+5 V8259 AINTR82532 MHZ1kHZIRQ0INT地址译码第42页,本讲稿共50页计数器计数器0:计数初值计数初值N=2MHz/1KHz=2000,设采用二进制计数,操作类型为,设采用二进制计数,操作类型为11(2000=07D0H,高低字节都不为,高低字节都不为0),方波为方式,方波为方式3。初始化程序如下:初始化程序如下:MOVAL,00110110B;通道;通道0的控制字的控制字MOVDX,153H;控制端口的地址;控制端口的地址OUTDX,AL;写控制字到控制端口;写控制字到控制端口MOVAX,2000;让计数初值;让计数初值2000自动分离出
27、高低字节自动分离出高低字节MOVDX,150H;通道;通道0地址地址OUTDX,AL;写计数初值的低字节到通道;写计数初值的低字节到通道0的地址的地址MOVAL,AH;把高字节给;把高字节给ALOUTDX,AL;写计数初值的高字节到通道;写计数初值的高字节到通道0的地址的地址第43页,本讲稿共50页计数器计数器1:亮亮2秒,暗秒,暗2秒,应为方波,且周期为秒,应为方波,且周期为4s,所以计数初值为,所以计数初值为4s*1KHz=4000,设计数制式为二进制,则操作类型为,设计数制式为二进制,则操作类型为11。初始化程序如下:初始化程序如下:MOVAL,01110110B;通道;通道1控制字控制
28、字MOVDX,153H;控制端口地址;控制端口地址OUTDX,AL;写控制字到控制端口;写控制字到控制端口MOVAX,4000;让初值;让初值4000自动分离出高低字节自动分离出高低字节MOVDX,151H;通道;通道1地址地址OUTDX,AL;写初值的低字节到通道;写初值的低字节到通道1的地址的地址MOVAL,AH;把高字节给;把高字节给ALOUTDX,AL;写初值的高字节到通道;写初值的高字节到通道1的地址的地址第44页,本讲稿共50页计数器计数器2:OUT2产生中断请求信号,应为方式产生中断请求信号,应为方式0,计数初值为,计数初值为200,设采用二进制计,设采用二进制计数,数,2002
29、56,操作类型为,操作类型为01,只写低字节。,只写低字节。初始化程序如下:初始化程序如下:MOVAL,10010000B;通道;通道2的控制字的控制字MOVDX,153H;控制端口地址;控制端口地址OUTDX,AL;写控制字到控制端口;写控制字到控制端口MOVAL,200;通道;通道2初值初值MOVDX,152H;通道;通道2地址地址OUTDX,AL;写初值到通道;写初值到通道2的地址的地址第45页,本讲稿共50页课堂练习课堂练习已知8253各通道时钟接8MHz信号,端口地址为700H、702H、704H和706H,要求在OUT0产生周期为10us的方波,OUT1产生2KHz的连续脉冲信号,
30、OUT2产生一个最大的负脉冲。试写出其初始化程序。第46页,本讲稿共50页 已知8253各通道时钟接8MHz信号,端口地址为700H、702H、704H和706H,要求在OUT0产生周期为10us的方波,OUT1产生2KHz的连续脉冲信号,OUT2产生一个最大的负脉冲。完成其初始化程序。分析:OUT0:初值=10us*8MHz=80 方式3OUT1:初值=8MHz/2KHz=4000 方式2OUT2:初值=0,二进制计数 方式1第47页,本讲稿共50页;CTC0MOV DX,706H;控制端口地址MOV AL,00010110B;CTC0控制字OUT DX,ALMOV DX,700H;CTC0
31、口地址MOV AL,80;CTC0初值OUT DX,AL第48页,本讲稿共50页;CTC1MOV DX,706H;控制端口地址MOV AL,01110100B;CTC1控制字OUT DX,ALMOV DX,702H;CTC1口地址MOV AX,4000;CTC1初值OUT DX,AL;先写低字节MOV AL,AH;取高字节OUT DX,AL;后写高字节第49页,本讲稿共50页;CTC2MOV DX,706H;控制端口地址MOV AL,10110010B;CTC2控制字OUT DX,ALMOV DX,704H;CTC2口地址MOV AL,0;CTC2初值OUT DX,AL;先写低字节OUT DX,AL;后写高字节第50页,本讲稿共50页