计算机接口与通信第二章.ppt

上传人:小飞机 文档编号:4995665 上传时间:2023-05-28 格式:PPT 页数:55 大小:2.02MB
返回 下载 相关 举报
计算机接口与通信第二章.ppt_第1页
第1页 / 共55页
计算机接口与通信第二章.ppt_第2页
第2页 / 共55页
计算机接口与通信第二章.ppt_第3页
第3页 / 共55页
计算机接口与通信第二章.ppt_第4页
第4页 / 共55页
计算机接口与通信第二章.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《计算机接口与通信第二章.ppt》由会员分享,可在线阅读,更多相关《计算机接口与通信第二章.ppt(55页珍藏版)》请在三一办公上搜索。

1、2.5 8254可编程定时计数器,计算机系统中经常要用到定时信号。可以用软件和硬件两种方法来获得。1:用软件方法,一般都是根据所需要的时间常数来设计一个延迟子程序。2:用硬件方法,要用到计数器定时器(简称T/C),并令其在简单的软件控制下,产生准确的时间延迟。后者最突出的优点:计数时不占用CPU的时间。,2.5.1 8254可编程计数定时器的功能与结构,8254是8253的提高型(Super Set),它具备8253的全部功能。凡是用8253的地方都可用8254代替,而原来的硬件连接和驱动软件都不必做任何修改。在Intel815EP芯片组的82801BA中也集成了8254,它除了工作的最高频率

2、有所不同外,其功能和编程等均与8253和8254完全一样。在微机方面,PCXT机中用的是8253,而PCAT及以后的系统中用的是8254。,(3)8254的外部引脚,面向系统总线的信号有:1.数据总线D7D0:三态输出/输入线。用于将8254与系统数据总线相连,是8254与CPU接口数据线,供CPU向8254进行读/写数据、传送命令和状态信息。2.片选线CS:输入信号,低电平有效。当CS为低电平时,CPU选中8254,可以向8254进行读/写;当CS为高电平时,CPU未选中8254。CS由CPU输出的地址码经译码产生。3.读、写信号RD和WR:输入信号。它们由CPU发出,用于对8254寄存器进

3、行读/写操作。,4.地址线A1和A0:它们一般分别接到系统地址总线的A1和A0上。用于选择8254内部寄存器,以便对它们进行读/写操作。8254内部寄存器与地址线A1和A0的关系如表2-10所示,表2-10 8254内部寄存器与外部端口的关系,2.5.2 8254的操作方式和编程,2.5.2.1 控制字的设置 3个计数器的控制寄存器公用一个IO地址,即TIM十3(A1A011时)。控制字节的格式为:,对8254的3个控制寄存器设置控制字,需对相同地址TIM十3执行3条OUT指令才能完成。假设INIC0、INICl和INIC2分别是要置入计数器0、1和2的控制字节,设置时要用下列指令:MOV D

4、X,TIM十3 MOV AL,INIC0 OUT DX,AL MOV AL,INICl OUT DX,AL MOV AL,INIC2 OUT DX,AL,RLl和RL0指明对CR(计数寄存器)写和对OL(输出锁存器)读的规则:RLl、RL000:命令,将CE(工作计数器)的内容锁存于OL(将进一步讨论);RL1、RL001:只读(OL)、写(CR)的低位字节;RL1、RL010:只读(OL)、写(CR)的高位字节;RL1、RL011:先读(OL)、写(CR)的低位字节,后读、写其高位字节。,例如,向计数器0置入的控制字节的高4位为0011,那么以后向CR预置初值时,每次必须写两条输出指令,如下

5、:MOV DX,TIM MOV AL,INIOL OUT DX,AL MOV AL,INIOH OUT DX,AL 其中INIOL和INIOH分别是要置入计数器0中计数寄存器CR的低位字节和高位字节的初值。TIM是计数器0的CR和OL地址。,同样,从OL读数时,也必须相继安排两条输入指令,如下:MOV DX,TIM IN AL,DX MOV AH,AL IN AL,DX XCHG AH,AL这样,AX内容就是l 6位的OL值。如果控制字节的RL l和 RL0两位设置为只读写低位字节或只读写高位字节,每次只需用一条OUT指令或IN指令来写入或读出指定的一个字节的内容。,控制字节的M2、M1和M0

6、组合指明工作方式。组合与工作方式的对应关系是:000 方式0 001 方式l 10 方式2 11 方式3 100 方式4 101 方式5 BCD位为0表示读写的是二进制代码,为1表示读写的是BCD码。,2.5.2.2 8254的工作方式,每N个CLK脉冲,OUT输出重复一次,其中N一1个CLK周期输出高电平,1个CLK周期输出低电平。这种方式相当于一个对CLK信号进行N次分频的分频器。,上述操作是以GATE输入端加高电平为条件的。如果GATE端加低电平,则不进行计数操作。在计数期间,如果送入新的计数值,而GATE端一直维持高电平,那么输出端OUT将不受影响。但在下一个输出周期中,将按新的计数值

7、进行计数。,6种方式的共同的特点:,当用输出指令设置方式控制字时,对相应计数器的控制逻辑起立即复位作用,OUT输出端可立即变为应进入的初始输出状态。GATE端的输入信号,对方式0和4,是信号电平起控制作用;对方式1和5,是信号上升边起触发作用;对方式2和3,信号的上升边沿和电平都起控制作用。对GATE信号是否有效则,在CLK脉冲的上升边瞬间测试。如果GATE端上是电平信号起作用,则在CLK脉冲上升边测试时,GATE信号此瞬间的电平值就被认定。,如果GATE上是上升沿起作用,则GATE上的上升沿信号使一个依靠上升沿置1的触发器置1,然后在CLK脉冲上升沿瞬间测试这个触发器状态,测试后这个触发器立

8、即复位为0。这样就保证了无论触发信号什么时间出现,总可在CLK的上升沿瞬间检测到。最后,初值从CR向CE装入操作和减1计数操作都发生在CLK脉冲的下降沿瞬间。初值的最大值为0,等效于二进制计数的216或BCD码计数的104。计数值达到0值后,计数操作没有停止,在方式2和方式3情况下,初值装入和计数将周期性地进行下去;对于方式0、1、4和5,计数值将从FFFF(十六进制)或9999(BCD)继续计数。,2.5.2.3 计数瞬时值和状态信息的读取,计数锁存命令计数过程中,读取某一瞬间的计数值。不允许破坏计数的正常进行,而且要保证不能因在计数时读而出错。读数分两步完成:一是把计数工作单元CE的值锁存

9、入OL锁存器,CE继续计数;二,用输入指令读入OL锁存器的内容。8254的控制逻辑为实现它。第一步要可用输出指令向控制寄存器的地址(即置方式字的地址TIM十3)发“计数锁存命令”字来实现。,“计数锁存命令”字格式如下:D7 D6 D5 D4 D3 D2 D1 D0SCl SC0 0 0 其中:SCl、SC0的3种组合00、0l和10分别指向计数器0、1和2;D5、D4位的00是计数锁存命令字的特征标志位;其余4位可为任意值。,例如:下列3条指令执行后,将把计数器1的CE内容锁存入OL:MOV DX,TIM3 MOV AL,01000000B OUT DX,AL若前面初始化时,置计数器1为先读写

10、低字节后读写高字节方式,那么,完成了上述操作之后,要用下列两条IN指令读入锁存器OL的内容:MOV DX,TIM1 IN AL,DX MOV AH,AL IN AL,DX XCHG AH,AL 这时,AX的内容就是发出计数锁存命令瞬间的计数值。,读回命令:向控制寄存器地址发读回命令(Read-Back Command)可以锁存计数值和状态信息,比计数锁存命令功能更强。读回命令的格式如下:D7 D6 D5 D4 D3 D2 D1 D01 1 COUNT STATUS CNT2 CNT1 CNT0 0D7D611是读回命令的特征标志。CNT2、CNT1和CNT0分别对应计数器2、1和0,将指定该位

11、对应的计数值和或状态信息锁存待读。这3位是互相独立的,可以同时l位、2位或3位为l,意味着可以同时命令1个以上的计数器和或状态信息锁存待读。,COUNT位:“计数值锁存”命令标志位。该位为0表示由D3D2D1指明的计数器的计数值分别在对应的OL内锁存。CPU对相应的计数器执行输入指令不仅能读入锁存的值,还可对这个锁存器起到“解锁”的作用。STATUS(D4)位:对每个计数器的状态寄存器读状态,0有效。读回命令还可用于对计数器状态信息的锁存。,状态信息经读回命令锁存后,CPU对相应的计数器执行输入指令可以读回一个字节的状态信息,格式如下:D7 D6 D5 D4 D3 D2 D1 D0 其中:D5

12、D0位应与写入的方式控制字相同。D7:该计数器的OUT端的状态(1为高电平)。D6:指明置入CR(计数寄存器)的初值是否已装入CE(减法计数器)。如果CR值已装入CE,则该位为0。,允许在读回命令字中设置D5和D4位同时为0。这意味着计数值和状态信息都要读回。这时,计数值和状态信息都被锁存起来。计数值的读入和状态字节的读入都用输入指令,而且IO地址相同,都是对应的计数器地址。区别它们的方法是输入次序:第1次读入的一定是状态字节;接着的一条或两条输入指令(取决于置方式字时指定的是一个字节还是两个字节的读写)将读入锁存的计数值。,表2-11 6条读回命令按次序发出的操作,2.5.3 8254的应用

13、实例,【例1】利用8254为AD子系统提供可编程的采样控制信号,设8254的地址为0070H0073H,即控制寄存器端口地址为73H,3个计数器的端口地址分别为0070H、0071H、0072H。将初始值L,M、N分别用标号LCNT、MCNT和NCNT表示,其中L、N为二进制数,并且都小于256,M为BCD码。初始化程序段:MOV AL,14H;00010100b OUT 73H,AL;将计数器0设置为模式2 MOV AL,LCNT OUT 70H,AL;对计数器0设置计数初始值L(二进制),MOV AL,73H;01110011bOUT 73H,AL;将计数器1设置为模式1MOV AX,MC

14、NT OUT 71H,AL;对计数器1设置初始值M(BCD码)MOV AL,AH OUT 71H,AL MOV AL,96H;10010110bOUT 73H,AL;将计数器2设置为模式3MOV AL,NCNT OUT 72H,AL;对计数器2设置初始值N(二进制),作业:按目前的电路设计及编程运行,不能实现题目要求,无法正常工作。经检查,是8254芯片设计出错,请找出原因并正确完成设计。,【例2】利用8254对某一脉冲进行计数。原理如图。将计数器0设置为方式3,计数初值为十进制5,开关K作为CLK0时钟输入,OUT0连接IRQ。8254初始化后,每按5次开关K(即向CLK0输入5个脉冲),O

15、UT0向CPU发出一次中断请求信号。中断服务程序将在屏幕上显示计数完毕的提示。,8254初始化编程:MOV DX,TIM+3MOV AL,00010110B;设置计数器0 为方式3OUT DX,ALMOV DX,TIMMOV AL,00000101B;设置计数初值为05OUT DX,AL,【例3】设系统提供一个10MHZ的时钟信号,试用8254-2的计数器2输出周期为1秒的标准时钟。解:将计数器2设置为方式2,使其在1秒钟内产生一个负脉冲。,将计数器2设置为方式2,使其在1秒钟内产生一个负脉冲。那么,计数初值fclkfout2=100000001=10000000 此值大于216,因此必须使用

16、两个计数器级连,其中,第一个计数器为第二个计数器产生较低频的CLK信号。先把计数器0设置为方式3,为计数器2的CLK2提供5KHZ时钟。fclkfout0=100000005000=2000计数器0的初值是2000。fout0fout2=50001=5000计数器2的初值是5000,初始化程序如下:MOV DX,TIM+3MOV AL,001101101;设计数器0为方式3,使用16位BCD码计数OUT DX,ALMOV AX,2000HMOV DX,TIMOUT DX,AL;给计数器0送低位初值MOV AL,AHOUT DX,AL;给计数器0送高位初值MOV DX,TIM+3MOV AL,10110101B;设置计数器2为方式2,16位BCD码初值OUT DX,AL;MOV AX,5000H;MOV DX,TIM+2OUT DX,AL;给计数器2送低位初值MOV AL,AHOUT DX,AL;给计数器2送高位初值,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号