单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,微型计算机原理与接口技术,主 编 何 超,中国水利水电出版社,概述,8253,的编程控制字和工作方式,PC/XT,机中,8253,的应用,第,11,章,8253,可编程定时计数器,11.1,概述,微机系统,要管理和协调各部件的时序关系和相互配合,使系统正常而有机地高速运转,必须有准确稳定的时间基准、事件先后顺序的巧妙安排和精确控制以及精密可靠的定时计数功能,实现定时和计数有两种方法:硬件定时和软件定时。,硬件定时,是利用专门的定时电路实现精确定时。这种定时方式又可分为简单硬件定时和利用可编程接口芯片实现定时。,8253,是为微机配套设计开发的一个可编程定时计数器,11.1,概述,一、,8253,的结构框图,11.1,概述,(,1,)数据总线缓冲器,数据总线缓冲器是,8253,与,CPU,的接口,双向、三态、,8,位的缓冲器。,(,2,)读写控制逻辑,当信号为低电平有效时,选中该,8253,芯片,(,3,)控制字寄存器,控制字寄存器从数据总线上接收,CPU,送来的控制字,该控制字可以进行通道的选择、工作方式的设定、计数初值格式(,BCD,码或二进制)的设定以及计数初值的写入顺序等。,(,4,)计数器,0,、计数器,1,、计数器,2,8253,的三个计数通道,.,其结构完全相同,每个计数器由,CLK,和,GATE,两个输入信号和,OUT,一个输出信号。,11.1,概述,二、,8253,的引脚,11.1,概述,(,1,)数据总线,D7,D0,。三态、双向输入输出线。用于,8253,与系统的数据总线间的数据传送。,(,2,)片选信号。输入,低电平有效。,(,3,)读信号、写信号。输入,低电平有效,必须先选中,8253,(,0,)时,才能对,8253,的内部寄存器进行读和写。,(,4,)时钟输入,CLK,。时钟信号的作用是在,8253,进行定时或计数时每输入一个时钟信号,使计数器减,1,。,(,5,)门控信号,GATE,。输入引脚。该信号的作用是控制启动定时或计数。,(,6,)输出引脚,OUT,。三个通道各有一个,OUT,引脚,是,8253,向外部的输出信号。,11.2 8253,的编程控制字和工作方式,一、,8253,的控制字,11.2 8253,的编程控制字和工作方式,(,1,),D0,位:设定减,1,计数是按二进制还是二,-,十进制计数。,(,2,),D3D1,:设定工作方式,由这三位的编码决定本通道,工作于,6,种工作方式中的哪一种。,(,3,),D5D4,:设定计数值读,/,写格式。,(,4,),D7D6,:计数器通道选择。,8253,进行初始化编程时,要写入控制字和计数初值。在初始化时必须注意,对于每个计数通道,必须先写控制字再写计数初值。,11.2 8253,的编程控制字和工作方式,二、工作方式,1,、方式,0,逐次减,1,,计数到,0,时发中断请求,当控制字写入控制寄存器后,,OUT,输出引脚立即变为低电平。,CPU,向,CR,计数器写入计数初值后的第一个,CLK,脉冲下降沿出现时,,CR,寄存器的内容被送入,CE,计数单元内。随后的每个,CLK,脉冲的下跳沿出现时,都使,CE,计数执行单元的内容减,1,。,当,CE,减,1,计数到,0,时,,OUT,输出变为高电平。用户可以用,OUT,的输出发出中断请求信号。,11.2 8253,的编程控制字和工作方式,8253,工作在方式,0,时的时序图,11.2 8253,的编程控制字和工作方式,例:设,8253,计数器通道,0,工作于方式,0,,用,8,位二进制计数,其,计数值为,50,,二,-,十进制,则它的初始化程序段如下:,MOV AL,,,11H,;设置控制字,OUT 43H,,,AL,;写入控制字寄存器,MOV AL,,,50,;设置计数初值,OUT 40H,,,AL,;写入计数初值寄存器,11.2 8253,的编程控制字和工作方式,2,、方式,1,:可编程单脉冲输出,该方式下,写入命令字和计数初值后,计数器输出端,OUT,为高电平,由门控信号的上升沿触发,使,OUT,变为低电平,在下一个,CLK,时钟的下跳沿开始对随后到来的,CLK,时钟进行计数,当减,1,计数至,0,时,,OUT,变为高电平。,即每个,GATE,信号的上升沿会触发,OUT,输出一个宽度为计数初值,N,个,CLK,周期间隔的负脉冲。,该方式可重复触发,只要有,GATE,信号的上升沿到来就会重新触发计数器。,11.2 8253,的编程控制字和工作方式,8253,工作在工作方式,1,的时序图,11.2 8253,的编程控制字和工作方式,例:设计数器通道,1,工作于方式,1,,按二进制计数,计数初值,为,40H,,它的初始化程序段为:,MOVAL,,,62H,;工作方式控制字,OUT 43H,,,AL,MOVAL,,,40H,;送计数初值,OUT 41H,,,AL,11.2 8253,的编程控制字和工作方式,3,、方式,2,:周期性时间间隔计时器(频率发生器),当控制字写入控制字寄存器以后,,OUT,变为高电平初始电平,当计数初值送入,CR,后的第一个,CLK,脉冲的下跳沿,将,CR,内容送,CE,,并开始对以后的,CLK,脉冲进行减,1,计数。计数值减,1,至,1,时,输出立即变为低电平。输出低电平的宽度等于一个输入时钟周期时间。当减,1,到,0,时,OUT,变为高电平。同时自动将计数初值送计数器继续进行下一次的计数。,11.2 8253,的编程控制字和工作方式,8253,工作在工作方式,2,的时序图,11.2 8253,的编程控制字和工作方式,例:设,8253,计数器,0,工作于方式,2,,按二进制计数,计数初值为,0304H,。,MOVAL,,,00110100B,;设控制字,通道,0,,先读,/,写高,8,位,;再读写低,8,位,方式,2,,二进制。,OUT43H,,,AL,MOV AL,,,04H,;送计数值低字节,OUT 40H,,,AL,MOV AL,,,03H,OUT 40H,,,AL,;送计数值高字节,11.2 8253,的编程控制字和工作方式,4,、方式,3,:方波发生器,该方式的工作过程与方式,2,很相似,门控的作用及自动加载计数初值都一样,只是,OUT,引脚输出波形不同。该方式在计数过程中输出一系列方波。,当计数初值,N,为偶数时,输出高、低电平持续时间相等。当,N,为奇数时,输出高电平持续时间比低电平持续时间多一个时钟周期。,11.2 8253,的编程控制字和工作方式,例:设,8253,计数器,2,工作在方式,3,,按二,-,十进制计数,计数初值为,4,,则它的初始化程序段如下:,MOV AL,,,10010111B,;计数器,2,,只读,/,写低,8,位,,;工作方式,3,,二,十进制,OUT 43H,,,AL,;控制字送控制字寄存器,MOV AL,,,4,;送计数初值,OUT 42H,,,AL,11.2 8253,的编程控制字和工作方式,8253,工作在工作方式,3,的时序图,11.2 8253,的编程控制字和工作方式,5,、方式,4,:软件触发选通,该方式与方式,0,相似,当写入方式命令字后,OUT,引脚变为高电平初始电平。当计数到,0,时,,OUT,引脚输出一个,CLK,时钟周期宽的负脉冲,然后又恢复为高电平。,GATE=1,时允许计数,,GATE=0,时停止计数。该方式不能循环计数,每次启动计数都要靠重新写入计数初值。,11.2 8253,的编程控制字和工作方式,8253,工作在工作方式,4,的时序图,11.2 8253,的编程控制字和工作方式,例:设,8253,计数器,1,工作于方式,4,,按二进制计数,计数初值为,3,,则初始化程序段为:,MOVAL,,,058H,;设置控制字寄存器,OUT43H,,,AL,;送控制字,MOVAL,,,3,;置计数初值,OUT41H,,,AL,;送计数初值,11.2 8253,的编程控制字和工作方式,6,、方式,5,:硬件触发脉冲,该方式下,对,8253,写入计数值后,计数器并不会立即开始计数,而是必须等,GATE,上跳沿出现之后,才会在下一个,CLK,的下跳沿,将,CR,内容装入,CE,,并开始对随后的,CLK,脉冲进行计数。,在计数期间,,OUT,引脚输出为高电平。当计数到,0,时,,OUT,引脚输出一个,CLK,周期宽的负脉冲,然后又恢复为高电平。,11.2 8253,的编程控制字和工作方式,8253,工作在工作方式,5,的时序图,11.2 8253,的编程控制字和工作方式,例:设,8253,的通道,1,工作于方式,5,,按二进制计数,计数初值为,4000H,,则它的初始化程序段为:,MOV AL,,,01101010B,;通道,1,,只读写高字节,,;方式,5,,二进制计数。,OUT 43H,,,AL,MOV AL,,,40H,OUT 41H,,,AL,;送计数初值,11.2 8253,的编程控制字和工作方式,三、,8253,的读操作,有两种读计数值的方法:,(,1,)读之前先停止计数:,用,GATE,信号控制计数器先停止计数,再由软件将计数值读出,读出顺序必须严格按控制字,D5D4,确定的格式进行。,(,2,)读之前先送计数值锁存命令:,需要在读之前先发一个锁存命令,将当前计数器中的内容锁存进一存储寄存器,得到一个不变的稳定量。然后再发读命令,从该锁存器中将数据读出。,11.2 8253,的编程控制字和工作方式,【,例,】,要读取通道,3,的计数值,则要执行的程序段为:,MOVAL,,,80H,;通道,3,的锁存命令,OUT43H,,,AL,;写入控制寄存器,IN AL,,,42H,;读低,8,位,MOV BL,,,AL,INAL,,,42H,;读高,8,位,MOV BH,,,AL,11.3 PC/XT,机中,8253,的应用,1,、计数器,0,:用于产生实时时钟信号,计数器,0,编程设定于工作方式,3,,,OUT0,引脚输出方波,计数初值为,0,,即最大值,2,16,=65536,。由于输入时钟为,1.19318MHz,的方波,因此在,OUT0,输出频率为,1.19318M/65536=18.2HZ,的方波。计数器的输出端,OUT0,与,8259A,的,IRQ0,相连,所以每隔,1/18.2,秒,将在,IRQ0,产生一个中断请求信号(即每隔,55ms,产生一次,0,级中断)。这种周期性的中断,被,BIOS,用作工作日的计时时钟。由于系统中,0,级中断的优先级最高,这就保证了系统时钟的稳定性和可靠性。,11.3 PC/XT,机中,8253,的应用,2,、计数器,1,:用于产生动态存储器刷新的地址更新信号,该计数器编程设定为工作方式,2,,计数初值,18,,,CLK,引脚,1.19318MHZ,的脉冲,,18/1.19318 MHZ=15.12s,,因此每隔,15.12s,在,OUT,引脚产生一个宽度为,840ns,的负脉冲。,该信号经过触发器记忆后,作为,8237A,通道,0,的,DREQ0,请求信号,用来控制对动态存储器的刷新。,11.3 PC/XT,机中,8253,的应用,3,、计数器,2,:,产生扬声器的发音驱动信号,还可根据用户编程用于其他目的。,计数器,2,编程设定为工作方式,3,,计数初值,533H,,,OUT2,输出引脚接,8255A,的,PC5,用于驱动扬声器。也可通过编程,产生各种频率的方波,控制声音的音调和任意长时间的声音。,