当前位置:文档之家› 计算机接口与通信第二章3

计算机接口与通信第二章3



状态信息经读回命令锁存后,CPU对相应 的计数器执行输入指令可以读回一个字节 的状态信息,格式如下:
D7 D6 D5 RW1 D4 RW0 D3 M2 D2 D1 D0 BCD M1 M0

OUTPUT NULL COUNT



其中:D5~D0位应与写入的方式控制字相 同。 D7:该计数器的OUT端的状态(1为高电 平)。 D6:指明置入CR(计数寄存器)的初值是 否已装入CE(减法计数器)。如果CR值已 装入CE,则该位为0。



COUNT位:“计数值锁存”命令标志位。 该位为0表示由D3D2D1指明的计数器的计 数值分别在对应的OL内锁存。 CPU对相应的计数器执行输入指令不仅能 读入锁存的值,还可对这个锁存器起到 “解锁”的作用。 STATUS (D4) 位:对每个计数器的状态 寄存器读状态,0有效。读回命令还可用于 对计数器状态信息的锁存。



例如,向计数器0置入的控制字节的高4位为 0011,那么以后向CR预置初值时,每次必须写 两条输出指令,如下: MOV DX,TIM MOV AL,INIOL OUT DX,AL MOV AL,INIOH OUT DX,AL 其中INIOL和INIOH分别是要置入计数器0中 计数寄存器CR的低位字节和高位字节的初值。 TIM是计数器0的CR和OL地址。


MOV AL,73H ;01110011b OUT 73H,AL ;将计数器1设置为模式1 MOV AX,MCNT OUT 71H,AL ;对计数器1设置初始值 M(BCD码) MOV AL,AH OUT 71H,AL MOV AL,96H ;10010110b OUT 73H,AL ;将计数器2设置为模式3 MOV AL,NCNT OUT 72H,AL ;对计数器2设置初始值 N(二进制)


§2.5.1 8254可编程计数/定时器 的功能与结构



8254是8253的提高型(Super Set), 它具备8253的全部功能。凡是用8253的地方都 可用8254代替,而原来的硬件连接和驱动软件都 不必做任何修改。 在Intel815EP芯片组的82801BA中也集成了 8254,它除了工作的最高频率有所不同外,其功 能和编程等均与8253和8254完全一样。 在微机方面, PC/XT机中用的是8253,而PC /AT及以后的系统中用的是8254。
表2-11 6条读回命令按次序发出的操作
读回命令字
11000010 11100100
命令的功能 锁存计数器0的计 数值和状态信息 锁存计数器l的状态 字节 锁存计数器2、1的 状态字节
依次序操作结果 计数器0的计数值和状 态信息被锁存 计数器l的状态信息字 节被锁存
计数器2的状态字节被锁存, 但计数器1的状态字节已在 上条命令时被锁存,此条 命令不起作用

例如:下列3条指令执行后,将把计数器1的CE内 容锁存入OL: MOV DX,TIM+3 MOV AL,01000000B OUT DX,AL 若前面初始化时,置计数器1为先读/写低字节后 读/写高字节方式,那么,完成了上述操作之后, 要用下列两条IN指令读入锁存器OL的内容: MOV DX,TIM+1 IN AL,DX MOV AH,AL IN AL,DX XCHG AH,AL 这时,AX的内容就是发出计数锁存命令瞬间 的计数值。


每N个CLK脉冲,OUT输出重复一次,其中 N一1个CLK周期输出高电平,1个CLK周期 输出低电平。 这种方式相当于一个对CLK信号进行N次分 频的分频器。


上述操作是以GATE输入端加高电平为条件 的。如果GATE端加低电平,则不进行计数 操作。 在计数期间,如果送入新的计数值,而 GATE端一直维持高电平,那么输出端OUT 将不受影响。但在下一个输出周期中,将 按新的计数值进行计数。
1 1 1 1
0 0 0 0 * 1
0 0 0 0
1 1 1 1 * 1
0 0 1 1
0 0 1 1 * *
0 1 0 1
0 1 0 1 * *
计数初值写入计数器0 计数初值写入计数器1 计数初值写入计数器2 向控制寄存器写控制字
读计数器0当前计数值 读计数器1当前计数值 读计数器2当前计数值 无操作 禁止使用 无操作
§2.5.2 8254的操作方式和编程


2.5.2.1 控制字的设置 3个计数器的控制寄存器公用一个I/O 地址,即TIM十3 (A1A0=11时)。 控制字节的格式为:


对8254的3个控制寄存器设置控制字,需 对相同地址TIM十3执行3条OUT指令才能 完成。假设INIC0、INICl和INIC2分别是 要置入计数器0、1和2的控制字节,设置时 要用下列指令: MOV DX,TIM十3 MOV AL,INIC0 OUT DX,AL MOV AL,INICl OUT DX, AL MOV AL,INIC2 OUT DX,AL




设8254的地址为0070H~0073H,即控 制寄存器端口地址为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(二进制)



如果GATE上是上升沿起作用,则GATE上的上升 沿信号使一个依靠上升沿置1的触发器置1,然后 在CLK脉冲上升沿瞬间测试这个触发器状态,测 试后这个触发器立即复位为0。这样就保证了无论 触发信号什么时间出现,总可在CLK的上升沿瞬 间检测到。 最后,初值从CR向CE装入操作和减1计数操作都 发生在CLK脉冲的下降沿瞬间。 初值的最大值为0,等效于二进制计数的2^16或 BCD码计数的10^4。计数值达到0值后,计数操 作没有停止,在方式2和方式3情况下,初值装入 和计数将周期性地进行下去;对于方式0、1、4 和5,计数值将从FFFF(十六进制)或9999(BCD) 继续计数。
6种方式的共同的特点:



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

作业:按目前的电路设计及编程运行,不 能实现题目要求,无法正常工作。经检查, 是8254芯片设计出错,请找出原因并正确 完成设计。
(3)8254的外部引脚



面向系统总线的信号有: 1.数据总线D7~D0 :三态输出/输入线。用于将 8254与系统数据总线相连,是8254与CPU接口 数据线,供CPU向8254进行读/写数据、传送命 令和状态信息。 2.片选线CS:输入信号,低电平有效。当CS为 低电平时,CPU选中8254,可以向8254进行读/ 写;当CS为高电平时,CPU未选中8254。CS由 CPU输出的地址码经译码产生。 3.读、写信号RD和WR:输入信号。它们由CPU 发出,用于对8254寄存器进行读/写操作。




控制字节的M2、M1和M0组合指明工作方 式。组合与工作方式的对应关系是: 000 方式0 001 方式l ×10 方式2 ×11 方式3 100 方式4 101 方式5 BCD位为0表示读/写的是二进制代码, 为1表示读/写的是BCD码。
2.5.2.2
8254的工作方式
§2.5 8254可编程定时 /计数器
பைடு நூலகம்


计算机系统中经常要用到定时信号。 可以用软件和硬件两种方法来获得。
1:用软件方法,一般都是根据所需要的时 间常数来设计一个延迟子程序。 2:用硬件方法,要用到计数器/定时器 (简称T/C),并令其在简单的软件控制下, 产生准确的时间延迟。 后者最突出的优点:计数时不占用CPU的 时间。


4.地址线A1和A0:它们一般分别接到系统 地址总线的A1和A0上。用于选择8254内 部寄存器,以便对它们进行读/写操作。 8254内部寄存器与地址线A1和A0的关系 如表2-10所示
表2-10 8254内部寄存器与外部端口 的关系
CS RD WR A1 A0
0 0 0 0
0 0 0 0 1 0 操 作 内 容



允许在读回命令字中设置D5和D4位同时为 0。这意味着计数值和状态信息都要读回。 这时,计数值和状态信息都被锁存起来。 计数值的读入和状态字节的读入都用输入 指令,而且I/O地址相同,都是对应的计 数器地址。 区别它们的方法是输入次序:第1次读入的 一定是状态字节;接着的一条或两条输入 指令(取决于置方式字时指定的是一个字节 还是两个字节的读/写)将读入锁存的计数 值。





RLl和RL0指明对CR(计数寄存器)写 和对OL(输出锁存器)读的规则: RLl、RL0=00 :命令,将CE(工作计 数器)的内容锁存于OL (将进一步讨论); RL1、RL0=01 :只读(OL)、写(CR) 的低位字节; RL1、RL0=10 :只读(OL)、写(CR) 的高位字节; RL1、RL0=11 :先读(OL)、写(CR) 的低位字节,后读、写其高位字节。
2.5.2.3 计数瞬时值和状态信息的读取
相关主题