10.2.3 8253 的编程
8253的三个计数器在工作前必须分别进行初 始化编程。每个计数器的编程步骤均由写入控制 字开始,选定一种工作方式,然后写入计数初值。 8253的编程主要包括设置控制字、赋初值、发锁 存命令和读计数值。 1. 设置控制字 控制字的格式及各位的含义如下:
D7 SC1 D6 SC0 D5 RW1 D4 RW0 D3 M2 D2 M1 D1 M0 D0 BCD
10.2.5 8253的应用
(4) 初始化程序如下 MOV AL,71H MOV DX,3F86H OUT DX,AL MOV DX,3F82H MOV AL,00
;控制字 ;控制口地址 ;控制字送8253控制寄存器 ;计数器1端口地址 ;将计数初值N=1000的低8位 写入计数器1 ;将N的高8位写入计数器1
OUT DX,AL MOV AL,1读计数值即CPU通过执行输入指令来获取 指定计数器的当前计数值。读计数值时,必须 符合控制字的有关规定,即只读低位字节还是 只读高位字节或高低位字节都读。 10.2.4 8253的工作方式 8253的计数器有六种工作方式供选择。不 同的工作方式下,计数过程的启动不同,OUT 端的输出波形不同,自动重复功能、GATE的控 制作用以及更新计数初值的影响也不完全一样。
10.2.5 8253的应用
例1 将8253的计数器1作为5ms定时器,设输入时钟频 率为200kHz,试编写8253的初始化程序。 (1)计数初值N计算 已知输入时钟CLK频率为200kHz,则时钟周期为5us, 于是计数初值N=5ms/T=1000。 (2) 确定控制字 按题意选计数器1,按BCD码计数,工作于方式0, 由于计数初值N=1000,控制字D5D4应为11,于是8253 的控制字为:01110001B=71H。 (3) 选择8253各端口地址 设计数器1的端口地址为3F82H,控制口地址 为3F86H。