对8253编程常有两种操作:初始化写操作和读当前计数值操作。
1.写操作—8253的初始化编程
在使用8253前必须对它进行初始化编程,对8253的工作方式、计数方式、操作方式的确定和通道的选择都是由控制字来确定的。不同计数器的控制字必须分别设置,但它的端口地址共用一个。控制寄存器只能写入,不能读出。
刚加电时,8253处于一种未定义状态,工作方式是不确定的,需要对它初始化编程,具体有两项内容:
一是设置控制字。需要用几个计数器,就要写几次控制字,不过控制字口地址都相同。写入控制字,还起到复位作用,使该计数器清零及OUT端变为规定的初始状态。
二是向已选定的计数器端口地址内写入计数初值,但要注意:
①编程写入时必须按相应控制字中的要求、顺序写入。例如:当CW中RL1RL0为11时,应先写入计数初值低8位,再写入计数初值高8位。如果计数初值为0,则应把初值0000H分两次顺序写入。
②正确选定初值,是二进制数还是BCD码数。(www.xing528.com)
由于3个计数器完全独立,有各自的端口地址,因此对这3个计数器分别初始化编程并没有先后次序要求。但是,对任一计数器初始化时必须先写控制字,再写计数初值。
2.读当前计数值操作
在实际应用中,常需要读出某计数器某时刻当前计数值,8253的OL寄存器就是为此功能而设计的。在计数过程中,OL实时跟随CE,并不锁存其实时值;只有接到锁存指令时,OL立即锁存,当前值不再跟随CE变化,而同时CE仍照常继续减1计数;然后CPU将锁定值用输入指令读走时,锁存器自动失锁,又跟随CE实时变化。这样就保证了在读出当前计数值的过程中不影响计数的进行。
具体编程思路:
①先写锁存命令控制字(即设置控制字的RL1RL0为00),该锁存命令控制字仅起锁存作用,不影响计数器的计数过程和工作方式。
②再读该计数器口地址。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。