1、第第12章章 可编程定时器可编程定时器/计数器及其应用计数器及其应用本章主要内容本章主要内容1.计算机中定时、计数的基本技术;计算机中定时、计数的基本技术;2.可编程计数器可编程计数器/定时器定时器8253的结构及工作的结构及工作方式;方式;3.8253的编程应用。的编程应用。12.1 概述概述q实现定时的三种方法:实现定时的三种方法:1.软件定时软件定时 由由CPU执行指令序列所花费的时间来构成一定的执行指令序列所花费的时间来构成一定的时间间隔,从而达到定时的目的。时间间隔,从而达到定时的目的。例如:例如:MOV CX,H HERE:LOOP HEREq优点优点:不需要专门的硬件设备。不需要
2、专门的硬件设备。q缺点缺点:浪费了宝贵的浪费了宝贵的CPU资源。资源。2.不可编程的硬件定时不可编程的硬件定时 时序波形时序波形 稳态稳态 td触发信号 暂稳态单稳态单稳态 电路电路3.可编程计数器可编程计数器/定时器定时器q可用软件的方法可用软件的方法(通过初始化编程通过初始化编程)设定或调整定时范围。设定或调整定时范围。q典型产品典型产品:Zilog Z80-CTC Intel 8253(8254)12.2 可编程计数器可编程计数器/定时器定时器825312.2.1 8253 的主要功能的主要功能 (1)具有三个独立的具有三个独立的16位计数通道;位计数通道;(2)每个计数通道可按二进制或
3、二十进制计数;每个计数通道可按二进制或二十进制计数;(3)每个计数通道的计数速率可达每个计数通道的计数速率可达2MHz;(4)每个计数通道有六种工作方式;每个计数通道有六种工作方式;(5)全部输入输出都与全部输入输出都与TTL电平兼容。电平兼容。12.2.2 8253的结构框图的结构框图8253的内部结构框图如图的内部结构框图如图12.1所示。所示。q 由图可见,它由与由图可见,它由与CPU的接口、内部控制电路以及三的接口、内部控制电路以及三个计数器通道所组成。个计数器通道所组成。数据数据总线总线缓冲器缓冲器读读/写写逻辑逻辑控制字控制字寄存器寄存器D7D0计数器计数器0计数器计数器1计数器计
4、数器2RDWRA0A1CS内部总线CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2图图12.1 8253内部结构框图内部结构框图1.数据总线缓冲器数据总线缓冲器q这是这是8253与与CPU的数据总线的数据总线(D7D0)连接的连接的8位双向三位双向三态缓冲器。态缓冲器。q CPU用输入输出指令对用输入输出指令对8253进行读写操作时的所有信进行读写操作时的所有信息都通过这个缓冲器传送。息都通过这个缓冲器传送。2.读读/写逻辑写逻辑q 这是这是8253内部操作的控制电路,它从系统控制总线上内部操作的控制电路,它从系统控制总线上接收输入信号,然后转换成接收输入信号,然
5、后转换成8253内部操作的各种控制内部操作的各种控制信号。信号。3.控制字寄存器控制字寄存器q当地址信号当地址信号A1和和A0都为都为1时,访问控制字寄存器。时,访问控制字寄存器。q控制字寄存器从数据总线上接收控制字寄存器从数据总线上接收CPU送来的控制字,送来的控制字,并由控制字的并由控制字的D7、D6两位的编码决定控制字写入哪个两位的编码决定控制字写入哪个通道的控制寄存器中去。通道的控制寄存器中去。q由寄存在每个通道内的控制寄存器的内容决定该通道由寄存在每个通道内的控制寄存器的内容决定该通道的工作方式,选择计数器是按二进制还是的工作方式,选择计数器是按二进制还是BCD数计数,数计数,并确定
6、每个计数器初值的写入顺序。并确定每个计数器初值的写入顺序。4.计数器计数器0、计数器、计数器1、计数器、计数器2q这是三个计数器这是三个计数器/定时器通道,每一个都由定时器通道,每一个都由16位的可设位的可设置计数初值的减法计数器构成。置计数初值的减法计数器构成。q三个通道的操作是完全独立的。每个通道都有两个输三个通道的操作是完全独立的。每个通道都有两个输入引脚入引脚CLK和和GATE以及一个输出引脚以及一个输出引脚OUT。q从编程的角度看,从编程的角度看,8253的结构框图如图的结构框图如图12.12.2所示。所示。数据总线数据总线地址译码RDWRIO/MVCCGNDCLK0GATE0OUT
7、0CLK1GATE1OUT1CLK2GATE2OUT2D7D0RDWRCSA1A0控制寄存器(控制寄存器(8位)位)高8位低8位高8位低8位计数器计数器0高8位低8位计数初值寄存器计数初值寄存器(CR)计数执行部件计数执行部件(CE)输出锁存器(输出锁存器(OL)计数器计数器1计数器计数器2图图12.2 8253计数通道结构计数通道结构 q“控制寄存器控制寄存器”及及“计数初值寄存器计数初值寄存器(CR)”可由可由CPU写写入;入;q“输出锁存器输出锁存器(OL)”可由可由CPU读出。读出。12.2.3 8253的引脚的引脚q 8253的引脚如图的引脚如图12.3所示。所示。8253D7D6D
8、5D4D3D2D1D0CLK0OUT0GATE0GND1234567891011122423222120191817 16 15 14 13VccWRRDCSA1A0CLK2GATE2OUT2CLK1GATE1OUT112.3 8253的引脚图的引脚图12.2.4 8253 的工作方式的工作方式q8253的每个通道均可以通过编程选择的每个通道均可以通过编程选择6种工作种工作方式之一方式之一:1.方式方式0计数到零产生中断请求计数到零产生中断请求 (Interrupt on Terminal Count)q方式方式0的操作时序图如图的操作时序图如图12.4所示。所示。CLKGATE(高)(高)0
9、1234CWN4WRN1个个OUT图图12.4 方式方式0的时序图的时序图方式方式0的主要特点是:的主要特点是:(1)计数器只计一遍而不能自动重复工作。计数器只计一遍而不能自动重复工作。q当减当减1计数到零时,并不自动恢复计数初值重新开始计数到零时,并不自动恢复计数初值重新开始计数,且计数,且OUT输出保持为高电平。输出保持为高电平。q只有只有CPU再次写入一个新的计数值再次写入一个新的计数值(即使计数值相同即使计数值相同也需再次写入也需再次写入),OUT才变为低电平,计数器按新写才变为低电平,计数器按新写入的计数值重新开始计数。入的计数值重新开始计数。q或者或者CPU重新对重新对8253设置
10、方式设置方式0控制字,它的控制字,它的OUT输输出也可以立即变为低电平,并等再次写入计数初值出也可以立即变为低电平,并等再次写入计数初值后重新开始计数后重新开始计数。(2)CPU向向CR寄存器写入计数初值后的第一个寄存器写入计数初值后的第一个CLK脉冲脉冲(即图中用斜线标出的那个脉冲)(即图中用斜线标出的那个脉冲),将,将CR的内容送入的内容送入CE,从此之后计数器才开始减,从此之后计数器才开始减1计数。计数。q这第一个这第一个CLK脉冲不包括在减脉冲不包括在减1计数过程中。计数过程中。q如果设置计数初值为如果设置计数初值为N,则输出,则输出OUT是在是在N+1个个CLK脉冲之后才变为高电平。
11、脉冲之后才变为高电平。(3)在计数过程中,可由在计数过程中,可由GATE信号控制暂停计数。信号控制暂停计数。q当当GATE变低时,计数暂停;变低时,计数暂停;q当当GATE变高后又接着计数。变高后又接着计数。q其工作波形如图其工作波形如图12.5所示。所示。CLKGATE12223N3CWWROUT图图12.5 方式方式0计数过程中改变计数过程中改变GATE信号信号0(4)在计数过程中也可改变计数值。在计数过程中也可改变计数值。q 在写入新的计数值后,计数器将立即按新的计数值重在写入新的计数值后,计数器将立即按新的计数值重新开始计数,即改变计数值是立即有效的。新开始计数,即改变计数值是立即有效
12、的。q当按新的计数值减当按新的计数值减1计数到计数到0时,输出时,输出OUT变为高电平。变为高电平。其工作波形如图其工作波形如图12.6所示。所示。CLKGATE(高)12123CWN3WROUT图图12.6 方式方式0计数过程中改变计数值计数过程中改变计数值0N22.方式方式1硬件可重复触发的单稳态触发器硬件可重复触发的单稳态触发器 (Programmable one-shot)q 方式方式1的时序图如图的时序图如图12.7所示。所示。CLKGATE图图12.7 方式方式1的时序图的时序图CWN2WR112OUT020q在方式在方式1,当,当CPU输出控制字后输出控制字后(WR的上升沿的上升
13、沿),OUT输出变为高电平输出变为高电平(若原为高电平,则保持为高电平若原为高电平,则保持为高电平);q 在在CPU写入计数初值后,计数器并不开始计数,直至写入计数初值后,计数器并不开始计数,直至门控信号门控信号GATE上升沿上升沿(即门控触发信号即门控触发信号)出现,并在其出现,并在其下一个下一个CLK脉冲的下降沿,脉冲的下降沿,CR的内容送入的内容送入CE,同时,同时使使OUT输出变为低电平,然后开始对随后的输出变为低电平,然后开始对随后的CLK脉冲脉冲进行减进行减1计数。计数。q在计数过程中,在计数过程中,OUT一直维持为低电平,直至减一直维持为低电平,直至减1计数计数到到0时,时,OU
14、T输出变为高电平。输出变为高电平。q即由于即由于GATE上升沿的触发,上升沿的触发,使使OUT输出端产生一个输出端产生一个宽度为宽度为N个个CLK周期的负脉冲。周期的负脉冲。q 此后,若再次由此后,若再次由GATE上升沿触发,则输出再次产生上升沿触发,则输出再次产生一个同样宽度的负脉冲。一个同样宽度的负脉冲。方式方式1的主要特点是:的主要特点是:(1)若设置计数初值为若设置计数初值为N,则,则输出负脉冲的宽度为输出负脉冲的宽度为N个个CLK脉冲周期。脉冲周期。(2)当计数到零时,可再次由当计数到零时,可再次由GATE上升沿触发,输出同上升沿触发,输出同样宽度的负脉冲,而不必重新写入计数初值。样
15、宽度的负脉冲,而不必重新写入计数初值。(3)在计数过程中在计数过程中(输出负脉冲期间输出负脉冲期间),可由,可由GATE上升沿上升沿再触发。并使计数器从计数初值开始重新作减再触发。并使计数器从计数初值开始重新作减1计数,计数,减至减至0时,时,OUT输出变为高电平。输出变为高电平。q其效果是使输出负脉冲的宽度比原来加宽了。其效果是使输出负脉冲的宽度比原来加宽了。(4)在计数过程中,在计数过程中,CPU可改变计数初值,这时计数过程可改变计数初值,这时计数过程不受影响,计数到零后输出变高。不受影响,计数到零后输出变高。q 当再次触发时,计数器才按新输入的计数值计数。当再次触发时,计数器才按新输入的
16、计数值计数。q即即改变计数值是下次有效的。改变计数值是下次有效的。3.方式方式2分频器分频器(Rate Generator)q在方式在方式2,当,当CPU输出控制字后,输出控制字后,OUT输出为高。在输出为高。在写入计数初值后,计数器将自动对输入时钟写入计数初值后,计数器将自动对输入时钟CLK计数。计数。q在计数过程中在计数过程中OUT输出为高,直至计数器减到输出为高,直至计数器减到1(注意,注意,不是减到不是减到0)时,时,OUT输出变低,经过一个输出变低,经过一个CLK周期,周期,输出恢复为高,且计数器将自动重新开始计数。输出恢复为高,且计数器将自动重新开始计数。q 这种方式可作脉冲速率发
17、生器或用来产生实时时钟中这种方式可作脉冲速率发生器或用来产生实时时钟中断信号。断信号。q 方式方式2的时序图如图的时序图如图12.8所示。所示。CLKGATE(高)23123CWN3WROUT图图12.8 方式方式2时序图时序图13方式方式2的主要特点是:的主要特点是:(1)不用重新设置计数值,通道能连续工作,输出固定频不用重新设置计数值,通道能连续工作,输出固定频率的脉冲。率的脉冲。q如果计数初值为如果计数初值为N,则每输入,则每输入N个个CLK脉冲,输出一脉冲,输出一个负脉冲。个负脉冲。q负脉冲宽度为负脉冲宽度为1个个CLK周期,重复周期为周期,重复周期为N倍的倍的CLK周期。周期。(2)
18、计数过程可由计数过程可由GATE信号控制。信号控制。q当当GATE信号变低时,立即暂停现行计数;信号变低时,立即暂停现行计数;q当当GATE信号又变高后,从计数初值开始重新计数。信号又变高后,从计数初值开始重新计数。(3)如果在计数过程中,如果在计数过程中,CPU重新写入计数值,则对于正重新写入计数值,则对于正在进行的计数无影响,而是从下一个计数操作周期开在进行的计数无影响,而是从下一个计数操作周期开始按新的计数值改变输出脉冲的频率。始按新的计数值改变输出脉冲的频率。4.方式方式3方波发生器方波发生器(Square Wave Rate Generator)q方式方式3和方式和方式2的工作情况类
19、似,两者的主要区别是输的工作情况类似,两者的主要区别是输出波形的形式。出波形的形式。q对于方式对于方式3,OUT输出是对称方波或基本对称的矩形波。输出是对称方波或基本对称的矩形波。即在一个计数周期内,若计数初值即在一个计数周期内,若计数初值N为偶数为偶数,则,则OUT输出将有输出将有N/2个个CLK周期为高电平,周期为高电平,N/2个个CLK周期为周期为低电平,输出为对称方波,其周期为低电平,输出为对称方波,其周期为N个个CLK周期;周期;q若若N为奇数为奇数,则,则OUT输出将有输出将有(N+1)/2个个CLK周期为高周期为高电平,电平,(N-1)/2个个CLK周期为低电平,输出为基本对称周
20、期为低电平,输出为基本对称的矩形波,其周期也为的矩形波,其周期也为N个个CLK周期。周期。q在方式在方式3,当,当CPU设置控制字后,输出将为高,在写完设置控制字后,输出将为高,在写完计数初值计数初值N后计数器就自动开始计数,输出保持为高。后计数器就自动开始计数,输出保持为高。q当计数到当计数到N/2(或或(N+1)/2)时,输出变低,直至计数到时,输出变低,直至计数到0,使输出变高。同时又重新装入计数值开始新的计数。使输出变高。同时又重新装入计数值开始新的计数。q计数过程周而复始重复进行。计数过程周而复始重复进行。q这种方式常用来产生一定频率的方波。这种方式常用来产生一定频率的方波。q方式方
21、式3的时序图如图的时序图如图12.12.9所示。所示。CWN4(N=5)GATE(高)24124OUT(N4时)13341235354OUT(N5时)图图12.9 方式方式3时序图时序图WRCLK方式方式3的主要特点是:的主要特点是:(1)若计数初值若计数初值N为偶数,则输出波形是周期为为偶数,则输出波形是周期为N个个CLK周期的对称方波;若计数初值周期的对称方波;若计数初值N为奇数,则输出波形为奇数,则输出波形是周期为是周期为N个个CLK周期的基本对称矩形波,其高电平周期的基本对称矩形波,其高电平持续时间比低电平持续时间多一个持续时间比低电平持续时间多一个CLK周期。周期。(2)如果在计数过
22、程中,如果在计数过程中,GATE信号变低,则暂停现行计信号变低,则暂停现行计数过程,直到数过程,直到GATE再次有效,将从计数初值开始重再次有效,将从计数初值开始重新计数。新计数。(3)如果要求改变输出方波的频率,则如果要求改变输出方波的频率,则CPU可在任何时候可在任何时候重新写入新的计数初值,并从下一个计数操作周期开重新写入新的计数初值,并从下一个计数操作周期开始改变输出方波的频率。始改变输出方波的频率。5.方式方式4 软件触发选通软件触发选通(Software Triggered Strobe)q在方式在方式4,当写入控制字后,当写入控制字后,OUT输出为高。当写入计输出为高。当写入计数
23、初值后计数器即开始计数数初值后计数器即开始计数(相当于软件触发启动相当于软件触发启动),当,当计数到计数到0后,输出变低,经过后,输出变低,经过1个个CLK周期,输出又变周期,输出又变高。高。q 方式方式4不能自动重复计数,即这种方式计数是一次性不能自动重复计数,即这种方式计数是一次性的。的。q 每次启动计数都要靠重新写入计数值,所以称为每次启动计数都要靠重新写入计数值,所以称为“软软件触发选通件触发选通”。q 当当8253工作于方式工作于方式4时,可用作软件触发的选通信号时,可用作软件触发的选通信号发生器。发生器。q 方式方式4的时序图如图的时序图如图12.10所示。所示。GATE(高)CL
24、KWRCWN30123OUT图图12.10 方式方式4时序图时序图方式方式4的主要特点是:的主要特点是:(1)若设置计数初值为若设置计数初值为N,则在写入计数初值后的,则在写入计数初值后的N+1个个CLK脉冲,才输出一个负脉冲。负脉冲的宽度为脉冲,才输出一个负脉冲。负脉冲的宽度为1个个CLK周期。周期。(2)GATE为高时,允许计数;为高时,允许计数;GATE为低时,禁止计数。所为低时,禁止计数。所以,要实现软件启动,以,要实现软件启动,GATE应为高。应为高。(3)若在计数过程中改变计数值,则按新的计数值重新开始若在计数过程中改变计数值,则按新的计数值重新开始计数,即改变计数值是立即有效的。
25、计数,即改变计数值是立即有效的。q方式方式4可应用于这样一种情况:可应用于这样一种情况:qCPU经输出端口发送并行数据给接收系统,经过一段经输出端口发送并行数据给接收系统,经过一段时间延迟后,再发送一个选通信号,利用该选通信号时间延迟后,再发送一个选通信号,利用该选通信号将并行数据打入到接收系统的缓冲寄存器中。将并行数据打入到接收系统的缓冲寄存器中。q通过改变计数初值通过改变计数初值N,可以方便地调整发出选通信号的可以方便地调整发出选通信号的延迟时间。延迟时间。6.方式方式5硬件触发选通硬件触发选通 (Hardware Triggered Strobe)q 在方式在方式5,设置了控制字后,输出
26、为高。,设置了控制字后,输出为高。q 在设置了计数初值后,计数器并不立即开始计数,而是由在设置了计数初值后,计数器并不立即开始计数,而是由门控信号门控信号GATE的上升沿触发启动。的上升沿触发启动。q当计数到当计数到0时,输出变低,时,输出变低,经过一个经过一个CLK周期周期,输出恢复为,输出恢复为高,并停止计数。高,并停止计数。q 要等到下次门控要等到下次门控GATE信号的触发才能再计数,即方式信号的触发才能再计数,即方式5的的计数是一次性的。计数是一次性的。q方式方式5的时序图如图的时序图如图12.11所示。所示。CLKGATE0123CWN3WROUT图图12.11 方式方式5时序图时序
27、图方式方式5的主要特点是:的主要特点是:(1)若设置计数初值为若设置计数初值为N,则在门控,则在门控GATE上升沿触发后,上升沿触发后,经过经过N+1个个CLK脉冲,才输出一个负脉冲。脉冲,才输出一个负脉冲。(2)若在计数过程中再次出现门控若在计数过程中再次出现门控GATE触发信号,则将触发信号,则将使计数器从计数初值开始重新计数,但使计数器从计数初值开始重新计数,但OUT输出的高输出的高电平不受影响。电平不受影响。(3)若在计数过程中改变计数值,只要在计数到若在计数过程中改变计数值,只要在计数到0之前不之前不出现新的门控触发信号,则原计数过程不受影响;等出现新的门控触发信号,则原计数过程不受
28、影响;等计数到计数到0并出现新的门控发信号后,再按新的计数值计并出现新的门控发信号后,再按新的计数值计数。数。若在写入了新的计数值后,在未计数到若在写入了新的计数值后,在未计数到0之前有门控之前有门控触发信号出现,则立即按新的计数值重新开始计数。触发信号出现,则立即按新的计数值重新开始计数。7.8253工作方式小结工作方式小结(1)方式方式2(分频器分频器)、方式、方式4(软件触发选通软件触发选通)和方式和方式5(硬件硬件触发选通触发选通),它们的输出波形相同,都是宽度为它们的输出波形相同,都是宽度为1个个CLK周期的负脉冲。周期的负脉冲。区别是,区别是,方式方式2是自动重复工作的,而方式是自
29、动重复工作的,而方式4需由软需由软件件(设置计数值设置计数值)触发启动,方式触发启动,方式5需由门控需由门控GATE信号信号触发启动。触发启动。(2)方式方式5(硬件触发选通硬件触发选通)与方式与方式1(硬件触发单稳硬件触发单稳),触发信触发信号相同,但输出波形不同号相同,但输出波形不同.q方式方式1输出为宽度是输出为宽度是N个个CLK周期的负脉冲周期的负脉冲(计数过程计数过程中输出为低中输出为低);q方式方式5输出为宽度是输出为宽度是1个个CLK周期的负脉冲周期的负脉冲(计数过程中计数过程中输出为高输出为高)。(3)在在6种工作方式中,种工作方式中,只有方式只有方式0,在写入控制字后输出,在
30、写入控制字后输出为低;为低;其余其余5种方式,都是在写入控制字后输出为高。种方式,都是在写入控制字后输出为高。(4)6种工作方式中的任一种方式,只有在写入计数初值种工作方式中的任一种方式,只有在写入计数初值后才能开始计数。后才能开始计数。q方式方式0、2、3、4都是写入计数初值后,计数过程就开都是写入计数初值后,计数过程就开始了。始了。q方式方式1、5在写入计数初值后,需由外部在写入计数初值后,需由外部GATE信号的信号的触发启动,才能开始计数过程。触发启动,才能开始计数过程。(5)6种工作方式中,种工作方式中,只有方式只有方式2(分频器分频器)和方式和方式3(方波发方波发生器生器)为自动重复
31、工作方式,其他为自动重复工作方式,其他4种方式都是一次性种方式都是一次性计数,要继续工作需要重新启动。计数,要继续工作需要重新启动。12.2.5 8253的初始化编程的初始化编程1.内部寄存器的寻址内部寄存器的寻址q8253有三个独立的计数器通道,每个通道可以被有三个独立的计数器通道,每个通道可以被CPU访访问的部件有:问的部件有:q 8位的控制寄存器,它只能写入位的控制寄存器,它只能写入,不能读出;不能读出;q 16位的计数初值寄存器位的计数初值寄存器CR,它只能写入它只能写入,不能读出;不能读出;q 16位的输出锁存器位的输出锁存器OL,它只能读出它只能读出,不能写入。不能写入。q 825
32、3芯片是否被选中,决定于片选信号芯片是否被选中,决定于片选信号CS,通常通常CS接自接自地址译码器输出。地址译码器输出。q一片一片8253占用四个连续的端口地址,分别对应于三个占用四个连续的端口地址,分别对应于三个计数初值寄存器端口和一个控制寄存器端口。计数初值寄存器端口和一个控制寄存器端口。q由输入信号由输入信号A1和和A0的四种编码来选择四个端口之一。的四种编码来选择四个端口之一。q每个通道都各自有独立的控制寄存器,但三个通道的每个通道都各自有独立的控制寄存器,但三个通道的控制寄存器都共用一个端口地址,即控制寄存器都共用一个端口地址,即A1和和A0都为都为1时时的端口地址的端口地址。它是三
33、个通道共同使用的控制寄存器端。它是三个通道共同使用的控制寄存器端口地址。口地址。q为了能够将每个通道的控制字写入它们各自的控制寄为了能够将每个通道的控制字写入它们各自的控制寄存器中,存器中,使用控制字的使用控制字的D7和和D6的编码,来标志此控制的编码,来标志此控制字是写入哪个通道的控制寄存器中。字是写入哪个通道的控制寄存器中。q 8253内部寄存器的寻址如表内部寄存器的寻址如表12-1所示所示。表表12-1 8253内部寄存器的寻址内部寄存器的寻址 CS RD WR A1 A0 寄存器选择和操作寄存器选择和操作 0 1 0 0 0 写通道写通道0计数初值寄存器计数初值寄存器CR0 0 1 0
34、 0 1 写通道写通道1计数初值寄存器计数初值寄存器CR1 0 1 0 1 0 写通道写通道2计数初值寄存器计数初值寄存器CR2 0 1 0 1 1 写控制寄存器写控制寄存器 0 0 1 0 0 读通道读通道0输出锁存器输出锁存器OL0 0 0 1 0 1 读通道读通道1输出锁存器输出锁存器OL1 0 0 1 1 0 读通道读通道2输出锁存器输出锁存器OL22.初始化编程顺序初始化编程顺序注意:必须按控制字注意:必须按控制字D5,D4位规定的格式进行写入。位规定的格式进行写入。设置控制字设置控制字写入计数初值写入计数初值3.8253的控制字的控制字SC1SC0RL1RL0M2M1M0BCD00
35、 通道通道001 通道通道102 通道通道211 无效无效通道选择通道选择:00 计数器锁存命令计数器锁存命令01 只读只读/写计数器低写计数器低8位位10 只读只读/写计数器高写计数器高8位位11 先读先读/写计数器低写计数器低8位位 后读后读/写计数器高写计数器高8位位读读/写格式:写格式:计数制计数制:0 二进制计数二进制计数1 十进制计数十进制计数工作方式:工作方式:000 方式方式0001 方式方式1x10 方式方式2x11 方式方式3100 方式方式4101 方式方式5图图12.12 8253 控制字格式控制字格式需要说明的是:需要说明的是:q 当采用二进制计数时当采用二进制计数时
36、,如果是,如果是8位二进制计数位二进制计数(计数(计数值值256),则在),则在8253初始化编程的传送指令初始化编程的传送指令“MOV AL,n”中,中,n可以写成可以写成任何进制数任何进制数(二进制、十进制或(二进制、十进制或十六进制)的形式;十六进制)的形式;q 如果是如果是16位二进制计数位二进制计数(计数值(计数值65536),一种方法),一种方法是先把计算得到的十进制计数初值是先把计算得到的十进制计数初值n转换成转换成4位十六进位十六进制数(即制数(即16位二进制),然后分两次写入位二进制),然后分两次写入8253的指定的指定端口。端口。q另一种方法是另一种方法是先把该十进制计数初
37、值先把该十进制计数初值n直接传送给直接传送给AX,然后分两次写入然后分两次写入8253指定端口指定端口,即:,即:MOV AX,n OUT PORT,AL ;先写低;先写低8位(位(PORT为端口号)为端口号)MOV AL,AH OUT PORT,AL ;后写高后写高8位位q当采用十进制(当采用十进制(BCD码)计数时码)计数时,必须在,必须在8253初始化初始化编程中把计算得到的十进制计数初值编程中把计算得到的十进制计数初值n加上后缀加上后缀H,以以便在相应的传送指令执行后能够在便在相应的传送指令执行后能够在AL(或或AX)中得到十中得到十进制数进制数n的的BCD码表示形式。码表示形式。例如
38、例如n=50,则应按如下方式写入:,则应按如下方式写入:MOV AL,50H OUT PORT,AL 如果如果n=1250,则需分两次写入,即:则需分两次写入,即:MOV AL,50H OUT PORT,AL ;先写低先写低8位位 MOV AL,12H OUT PORT,AL ;后写高后写高8位位 也可按如下方法两次写入:也可按如下方法两次写入:MOV AX,1250H OUT PORT,AL ;先写低先写低8位位 MOV AL,AH OUT PORT,AL ;后写高后写高8位位4.初始化编程举例初始化编程举例例例12.1 若用若用8253的计数通道的计数通道1,工作在方式,工作在方式0,按,
39、按8位二进位二进制计数,计数初值为制计数,计数初值为128,则初始化编程如下:,则初始化编程如下:(1)确定通道控制字确定通道控制字-50H (2)8位计数初值位计数初值-80H 设设8253的端口地址为的端口地址为48H4BH,则初始化程序段为:,则初始化程序段为:MOV AL,50H OUT 4BH,AL ;设置通道设置通道1控制字控制字 MOV AL,80H OUT 49H,AL ;写通道写通道1计数初值,只写低计数初值,只写低8位 例例12.2 若用通道若用通道0,工作在方式,工作在方式1,按十进制(,按十进制(BCD码)码)计数,计数初值为计数,计数初值为2010,则初始化编程如下:
40、,则初始化编程如下:(1)确定通道控制字确定通道控制字-33H (2)计数初值低计数初值低8位为位为10,高,高8位为位为20。若若8253的端口地址同例的端口地址同例1,则初始化程序段为:,则初始化程序段为:MOV AL,33H OUT 4BH,AL ;设置通道设置通道0控制字控制字 MOV AL,10H OUT 48H,AL ;写通道写通道0计数初值低计数初值低8位位 MOV AL,20H OUT 48H,AL ;写通道写通道0计数初值高计数初值高8位位12.2.6 8253的读出操作的读出操作 1.读之前先暂停计数读之前先暂停计数 2.读之前先发锁存命令读之前先发锁存命令12.3 825
41、3的应用的应用例例12.4 8253用作脉冲信号发生器。用作脉冲信号发生器。q 可用可用8253产生如图产生如图12.14(a)所示的周期性脉冲信号,其重所示的周期性脉冲信号,其重复周期为复周期为5s,脉冲宽度为,脉冲宽度为1s。q 设设CLK信号频率为信号频率为2MHz。图图12.14 8253用作脉冲信号用作脉冲信号发生器发生器MOV AL,00010010B;设置计数器设置计数器0为方式为方式1(单稳单稳),只写低,只写低8 位,二进制计数位,二进制计数OUT 86H,AL MOV AL,02H ;设置计数器设置计数器0的计数初值为的计数初值为2OUT 80H AL MOV AL,010
42、10100B;设置计数器设置计数器1为方式为方式2(分频器分频器),只写低,只写低 8位,二进制计数位,二进制计数OUT 86H,AL MOV AL,0AH ;设置计数器设置计数器1的计数初值为的计数初值为10OUT 82H,AL 例例12.3q 用用8253实现生产流水线上的工件计数,每通过实现生产流水线上的工件计数,每通过100个个工件,扬声器便发出频率为工件,扬声器便发出频率为1000Hz的音响信号,持续的音响信号,持续时间为时间为5秒。设外部时钟频率为秒。设外部时钟频率为2MHZ。INTR(中断请求)5V时钟时钟2MHz8255A PA0GATE1CLK1GATE0OUT08253CL
43、K0OUT1驱动电路扬声器5V光敏电阻工件工件光源图图12.13 8253用于工件计数用于工件计数q设设8253的端口地址为的端口地址为40H43H,8255A的端口地的端口地60H63H,则实现本例功能的程序段如下则实现本例功能的程序段如下:q主程序:主程序:MOV AL,00010001B ;8253计数通道计数通道0初始化:初始化:方式方式0,只,只 写低写低8位,位,BCD计数计数.OUT 43H,AL MOV AL,99H ;写计数通道写计数通道0的计数初值的计数初值 OUT 40H,AL MOV AL,10000000B ;8255A初始化:初始化:A口方式口方式0输出输出 OUT
44、 63H,AL STI ;CPU开中断开中断HERE:JMP HERE ;等待中断等待中断中断服务程序:中断服务程序:MOV AL,01H ;8255A的的PA0输出高电平,启动输出高电平,启动8253计数通道计数通道1工作工作OUT 60H,AL MOV AL,01110111B ;8253计数通道计数通道1初始化:初始化:先写低先写低8位,后写高位,后写高8位位OUT 43H,AL ;方式方式3,BCD计数计数MOV AL,00H OUT 41H,AL ;写计数初值低写计数初值低8位位MOV AL,20H OUT 41H,AL ;写计数初值高写计数初值高8位位Call DELAY5S ;延迟延迟5秒秒MOV AL,00H ;8255A的的PA0输出低电平,停止输出低电平,停止8253计数通道计数通道1工作工作OUT 60H,AL MOV AL,99H ;写写8253计数通道计数通道0的计数初值(为下次工作做准备)的计数初值(为下次工作做准备)OUT 40H,AL IRET 第第12章章 作业作业P3597题;题;8题题