《计算机接口与通信第二章.ppt》由会员分享,可在线阅读,更多相关《计算机接口与通信第二章.ppt(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.5 8254可编程定时计数器n n计算机系统中经常要用到定时信号。n n可以用软件和硬件两种方法来获得。n n1:用软件方法,一般都是根据所需要的时间常数来设计一个延迟子程序。n n2:用硬件方法,要用到计数器定时器(简称T/C),并令其在简单的软件控制下,产生准确的时间延迟。n n后者最突出的优点:计数时不占用CPU的时间。2.5.1 8254可编程计数定时器的功能与结构n n82548254是是82538253的提高型的提高型(Super Set)(Super Set),n n它具备它具备82538253的全部功能。凡是用的全部功能。凡是用82538253的地方都的地方都可用可用825
2、48254代替,而原来的硬件连接和驱动软件都代替,而原来的硬件连接和驱动软件都不必做任何修改。不必做任何修改。n n在在Intel815EPIntel815EP芯片组的芯片组的82801BA82801BA中也集成了中也集成了8254,8254,它除了工作的最高频率有所不同外,其功它除了工作的最高频率有所不同外,其功能和编程等均与能和编程等均与82538253和和82548254完全一样。完全一样。n n在微机方面,在微机方面,PC PCXTXT机中用的是机中用的是82538253,而,而PCPCATAT及以后的系统中用的是及以后的系统中用的是82548254。(3)8254的外部引脚n n面向
3、系统总线的信号有:面向系统总线的信号有:n n1.1.数据总线数据总线D7D7D0 D0:三态输出:三态输出/输入线。用于将输入线。用于将82548254与系统数据总线相连,是与系统数据总线相连,是82548254与与CPUCPU接口接口数据线,供数据线,供CPUCPU向向82548254进行读进行读/写数据、传送命写数据、传送命令和状态信息。令和状态信息。n n2.2.片选线片选线CSCS:输入信号,低电平有效。当:输入信号,低电平有效。当CSCS为为低电平时,低电平时,CPUCPU选中选中8254,8254,可以向可以向82548254进行读进行读/写;当写;当CSCS为高电平时,为高电平
4、时,CPUCPU未选中未选中82548254。CSCS由由CPUCPU输出的地址码经译码产生。输出的地址码经译码产生。n n3.3.读、写信号读、写信号RDRD和和WRWR:输入信号。它们由:输入信号。它们由CPUCPU发出,用于对发出,用于对82548254寄存器进行读寄存器进行读/写操作。写操作。n n4.地址线A1和A0:它们一般分别接到系统地址总线的A1和A0上。用于选择8254内部寄存器,以便对它们进行读/写操作。n n8254内部寄存器与地址线A1和A0的关系如表2-10所示 表2-10 8254内部寄存器与外部端口的关系CS RD WR A1 A0 操 作 内 容0 1 0 0
5、00 1 0 0 10 1 0 1 00 1 0 1 1计数初值写入计数器0计数初值写入计数器1计数初值写入计数器2向控制寄存器写控制字0 0 1 0 00 0 1 0 10 0 1 1 0读计数器0当前计数值读计数器1当前计数值读计数器2当前计数值0 0 1 1 1 1 *0 1 1 *无操作禁止使用无操作2.5.2 8254的操作方式和编程n n2.5.2.1 控制字的设置n n 3个计数器的控制寄存器公用一个IO地址,即TIM十3(A1A011时)。n n控制字节的格式为:n n对8254的3个控制寄存器设置控制字,需对相同地址TIM十3执行3条OUT指令才能完成。假设INIC0、INI
6、Cl和INIC2分别是要置入计数器0、1和2的控制字节,设置时要用下列指令:n n MOV DX,TIM十3n n MOV AL,INIC0n n OUT DX,ALn n MOV AL,INICln n OUT DX,ALn n MOV AL,INIC2n n OUT DX,ALn n RLl和RL0指明对CR(计数寄存器)写和对OL(输出锁存器)读的规则:n n RLl、RL000 :命令,将CE(工作计数器)的内容锁存于OL(将进一步讨论);n n RL1、RL001 :只读(OL)、写(CR)的低位字节;n n RL1、RL010 :只读(OL)、写(CR)的高位字节;n n RL1、
7、RL011 :先读(OL)、写(CR)的低位字节,后读、写其高位字节。n n例如,向计数器例如,向计数器0 0置入的控制字节的高置入的控制字节的高4 4位为位为00110011,那么以后向,那么以后向CRCR预置初值时,每次必须写预置初值时,每次必须写两条输出指令,如下:两条输出指令,如下:n n MOV DX MOV DX,TIMTIMn n MOV AL MOV AL,INIOLINIOLn n OUT DX OUT DX,ALALn n MOV AL MOV AL,INIOHINIOHn n OUT DX OUT DX,ALALn n 其中其中INIOLINIOL和和INIOHINIOH
8、分别是要置入计数器分别是要置入计数器0 0中中计数寄存器计数寄存器CRCR的低位字节和高位字节的初值。的低位字节和高位字节的初值。TIMTIM是计数器是计数器0 0的的CRCR和和OLOL地址。地址。n n同样,从OL读数时,也必须相继安排两条输入指令,如下:n n MOV DX,TIMn n IN AL,DXn n MOV AH,ALn n IN AL,DXn n XCHG AH,ALn n这样,AX内容就是l 6位的OL值。n n如果控制字节的RL l和 RL0两位设置为只读写低位字节或只读写高位字节,每次只需用一条OUT指令或IN指令来写入或读出指定的一个字节的内容。n n控制字节的M2
9、、M1和M0组合指明工作方式。组合与工作方式的对应关系是:n n 000 方式0n n 001 方式ln n 10 方式2n n 11 方式3n n 100 方式4n n 101 方式5n n BCD位为0表示读写的是二进制代码,为1表示读写的是BCD码。2.5.2.2 8254的工作方式 n n每N个CLK脉冲,OUT输出重复一次,其中N一1个CLK周期输出高电平,1个CLK周期输出低电平。n n这种方式相当于一个对CLK信号进行N次分频的分频器。n n上述操作是以GATE输入端加高电平为条件的。如果GATE端加低电平,则不进行计数操作。n n在计数期间,如果送入新的计数值,而GATE端一直
10、维持高电平,那么输出端OUT将不受影响。但在下一个输出周期中,将按新的计数值进行计数。6种方式的共同的特点:n n当用输出指令设置方式控制字时,对相应计数器的控制逻辑起立即复位作用,OUT输出端可立即变为应进入的初始输出状态。n n GATE端的输入信号,对方式0和4,是信号电平起控制作用;对方式1和5,是信号上升边起触发作用;对方式2和3,信号的上升边沿和电平都起控制作用。n n对GATE信号是否有效则,在CLK脉冲的上升边瞬间测试。如果GATE端上是电平信号起作用,则在CLK脉冲上升边测试时,GATE信号此瞬间的电平值就被认定。n n如果如果GATEGATE上是上升沿起作用,则上是上升沿起
11、作用,则GATEGATE上的上升上的上升沿信号使一个依靠上升沿置沿信号使一个依靠上升沿置1 1的触发器置的触发器置1 1,然后,然后在在CLKCLK脉冲上升沿瞬间测试这个触发器状态,测脉冲上升沿瞬间测试这个触发器状态,测试后这个触发器立即复位为试后这个触发器立即复位为0 0。这样就保证了无论。这样就保证了无论触发信号什么时间出现,总可在触发信号什么时间出现,总可在CLKCLK的上升沿瞬的上升沿瞬间检测到。间检测到。n n最后,初值从最后,初值从CRCR向向CECE装入操作和减装入操作和减1 1计数操作都计数操作都发生在发生在CLKCLK脉冲的下降沿瞬间。脉冲的下降沿瞬间。n n初值的最大值为初
12、值的最大值为0 0,等效于二进制计数的,等效于二进制计数的216216或或BCDBCD码计数的码计数的104104。计数值达到。计数值达到0 0值后,计数操值后,计数操作没有停止,在方式作没有停止,在方式2 2和方式和方式3 3情况下,初值装入情况下,初值装入和计数将周期性地进行下去;对于方式和计数将周期性地进行下去;对于方式0 0、1 1、4 4和和5 5,计数值将从,计数值将从FFFF(FFFF(十六进制十六进制)或或9999(BCD)9999(BCD)继续计数。继续计数。2.5.2.3 计数瞬时值和状态信息的读取 n n计数锁存命令n n计数过程中,读取某一瞬间的计数值。不允许破坏计数的
13、正常进行,而且要保证不能因在计数时读而出错。n n读数分两步完成:n n一是把计数工作单元CE的值锁存入OL锁存器,CE继续计数;n n二,用输入指令读入OL锁存器的内容。8254的控制逻辑为实现它。第一步要可用输出指令向控制寄存器的地址(即置方式字的地址TIM十3)发“计数锁存命令”字来实现。n n“计数锁存命令”字格式如下:n n D7 D6 D5 D4 D3 D2 D1 D0n nSCl SC0 0 0 n n其中:n nSCl、SC0的3种组合00、0l和10分别指向计数器0、1和2;n nD5、D4位的00是计数锁存命令字的特征标志位;n n其余4位可为任意值。n n例如例如:下列下
14、列3 3条指令执行后,将把计数器条指令执行后,将把计数器1 1的的CECE内内容锁存入容锁存入OLOL:n n MOV DX MOV DX,TIMTIM3 3n n MOV AL MOV AL,01000000B01000000Bn n OUT DX OUT DX,ALALn n若前面初始化时,置计数器若前面初始化时,置计数器1 1为先读写低字节后为先读写低字节后读写高字节方式,那么,完成了上述操作之后读写高字节方式,那么,完成了上述操作之后,要用下列两条要用下列两条ININ指令读入锁存器指令读入锁存器OLOL的内容:的内容:n n MOV DX MOV DX,TIMTIM1 1n n IN
15、AL IN AL,DXDXn n MOV AH MOV AH,ALALn n IN AL IN AL,DXDXn n XCHG AH XCHG AH,ALALn n 这时,这时,AXAX的内容就是发出计数锁存命令瞬间的内容就是发出计数锁存命令瞬间的计数值。的计数值。n n读回命令:向控制寄存器地址发读回命令读回命令:向控制寄存器地址发读回命令(Read-(Read-Back Command)Back Command)可以锁存计数值和状态信息,比可以锁存计数值和状态信息,比计数锁存命令功能更强。计数锁存命令功能更强。n n读回命令的格式如下:读回命令的格式如下:n nD7 D6 D5 D4 D3
16、 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0n n1 1 COUNT STATUS CNT2 CNT1 CNT0 01 1 COUNT STATUS CNT2 CNT1 CNT0 0n nD7D6D7D61111是读回命令的特征标志。是读回命令的特征标志。n nCNT2CNT2、CNT1CNT1和和CNT0CNT0分别对应计数器分别对应计数器2 2、1 1和和0 0,将指定该位对应的计数值和或状态信息锁存待读。将指定该位对应的计数值和或状态信息锁存待读。这这3 3位是互相独立的,可以同时位是互相独立的,可以同时l l位、位、2 2位或位或3 3位为位为l l,意味着可以同时
17、命令意味着可以同时命令1 1个以上的计数器和或状态个以上的计数器和或状态信息锁存待读。信息锁存待读。n nCOUNT位:“计数值锁存”命令标志位。该位为0表示由D3D2D1指明的计数器的计数值分别在对应的OL内锁存。n nCPU对相应的计数器执行输入指令不仅能读入锁存的值,还可对这个锁存器起到“解锁”的作用。n nSTATUS(D4)位:对每个计数器的状态寄存器读状态,0有效。读回命令还可用于对计数器状态信息的锁存。n n状态信息经读回命令锁存后,CPU对相应的计数器执行输入指令可以读回一个字节的状态信息,格式如下:n n D7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4
18、D3 D2 D1 D0 n n其中:D5D0位应与写入的方式控制字相同。n nD7:该计数器的OUT端的状态(1为高电平)。n nD6:指明置入CR(计数寄存器)的初值是否已装入CE(减法计数器)。如果CR值已装入CE,则该位为0。OUTPUTOUTPUTNULL COUNTNULL COUNTRW1RW1RW0RW0M2M2M1 M1 M0M0BCDBCDn n允许在读回命令字中设置D5和D4位同时为0。这意味着计数值和状态信息都要读回。这时,计数值和状态信息都被锁存起来。n n计数值的读入和状态字节的读入都用输入指令,而且IO地址相同,都是对应的计数器地址。n n区别它们的方法是输入次序:
19、第1次读入的一定是状态字节;接着的一条或两条输入指令(取决于置方式字时指定的是一个字节还是两个字节的读写)将读入锁存的计数值。表表2-11 62-11 6条读回命令按次序发出的操作条读回命令按次序发出的操作 读回命令字读回命令字 命令的功能命令的功能 依次序操作结果依次序操作结果1100001011000010锁存计数器锁存计数器0 0的计的计数值和状态信息数值和状态信息计数器计数器0 0的计数值和状的计数值和状态信息被锁存态信息被锁存 1110010011100100锁存计数器锁存计数器l l的状态的状态字节字节计数器计数器l l的状态信息字的状态信息字节被锁存节被锁存11101100111
20、01100锁存计数器锁存计数器2 2、1 1的的状态字节状态字节计数器计数器2 2的状态字节被锁存,的状态字节被锁存,但计数器但计数器1 1的状态字节已在的状态字节已在上条命令时被锁存,此条上条命令时被锁存,此条命令不起作用命令不起作用1101100011011000锁存计数器锁存计数器2 2的计数值的计数值计数器计数器2 2的计数值被锁存的计数值被锁存1100010011000100锁存计数器锁存计数器1 1的计的计数值和状态字节数值和状态字节计数器计数器1 1的计数值被锁的计数值被锁存,状态字节仍然是存,状态字节仍然是上次锁存的值上次锁存的值1110010011100100锁存计数器锁存计
21、数器1 1的状态字的状态字节节这条命令不起作用这条命令不起作用2.5.3 8254的应用实例n n【例【例1 1】利用】利用82548254为为A ADD子系统提供可编程的采子系统提供可编程的采样控制信号样控制信号n n设8254的地址为0070H0073H,即控制寄存器端口地址为73H,3个计数器的端口地址分别为0070H、0071H、0072H。将初始值L,M、N分别用标号LCNT、MCNT和NCNT表示,其中L、N为二进制数,并且都小于256,M为BCD码。初始化程序段:n n MOV AL,14H ;00010100b n n OUT 73H,AL ;将计数器0设置为模式2n n MO
22、V AL,LCNT n n OUT 70H,AL ;对计数器0设置计数初始值L(二进制)n nMOV ALMOV AL,73H ;01110011b73H ;01110011bn nOUT 73HOUT 73H,AL AL ;将计数器;将计数器1 1设置为模式设置为模式1 1n nMOV AXMOV AX,MCNT MCNT n nOUT 71HOUT 71H,AL AL ;对计数器;对计数器1 1设置初始值设置初始值M(BCDM(BCD码码)n nMOV ALMOV AL,AH AH n nOUT 71HOUT 71H,AL AL n nMOV ALMOV AL,96H ;10010110b
23、96H ;10010110bn nOUT 73HOUT 73H,AL AL ;将计数器;将计数器2 2设置为模式设置为模式3 3n nMOV ALMOV AL,NCNT NCNT n nOUT 72HOUT 72H,AL AL ;对计数器;对计数器2 2设置初始值设置初始值N N(二进制二进制)n n作业:按目前的电路设计及编程运行,不能实现题目要求,无法正常工作。经检查,是8254芯片设计出错,请找出原因并正确完成设计。n n【例2】利用8254对某一脉冲进行计数。原理如图图。将计数器0设置为方式3,计数初值为十进制5,开关K作为CLK0时钟输入,OUT0连接IRQ。8254初始化后,每按5
24、次开关K(即向CLK0输入5个脉冲),OUT0向CPU发出一次中断请求信号。中断服务程序将在屏幕上显示计数完毕的提示。n n8254初始化编程:n nMOV DX,TIM+3n nMOV AL,00010110B ;设置计数器0 为方式3n nOUT DX,ALn nMOV DX,TIMn nMOV AL,00000101B;设置计数初值为05n nOUT DX,ALn n【例3】设系统提供一个10MHZ的时钟信号,试用8254-2的计数器2输出周期为1秒的标准时钟。n n解:将计数器2设置为方式2,使其在1秒钟内产生一个负脉冲。n n将计数器2设置为方式2,使其在1秒钟内产生一个负脉冲。那么
25、,n n计数初值fclkfout2=100000001=10000000 n n此值大于216,因此必须使用两个计数器级连,其中,第一个计数器为第二个计数器产生较低频的CLK信号。n n先把计数器0设置为方式3,为计数器2的CLK2提供5KHZ时钟。n nfclkfout0=100000005000=2000n n计数器0的初值是2000。n nfout0fout2=50001=5000n n计数器2的初值是5000n n初始化程序如下:初始化程序如下:n nMOV DXMOV DX,TIM+3TIM+3n nMOV AL,001101101 MOV AL,001101101;设计数器;设计数
26、器0 0为方式为方式3 3,使用,使用1616位位BCDBCD码计数码计数n nOUT DXOUT DX,ALALn nMOV AXMOV AX,2000H2000Hn nMOV DXMOV DX,TIMTIMn nOUT DXOUT DX,AL AL ;给计数器给计数器0 0送低位初值送低位初值n nMOV ALMOV AL,AHAHn nOUT DXOUT DX,AL AL ;给计数器给计数器0 0送高位初值送高位初值n nMOV DXMOV DX,TIM+3TIM+3n nMOV ALMOV AL,10110101B 10110101B ;设置计数器;设置计数器2 2为方式为方式2 2,1616位位BCDBCD码初值码初值n nOUT DXOUT DX,AL AL ;n nMOV AXMOV AX,5000H 5000H ;n nMOV DXMOV DX,TIM+2TIM+2n nOUT DXOUT DX,AL AL ;给计数器;给计数器2 2送低位初值送低位初值n nMOV ALMOV AL,AHAHn nOUT DXOUT DX,AL AL ;给计数器;给计数器2 2送高位初值送高位初值