8251A有一个方式寄存器、一个命令寄存器、一个状态寄存器和两个同步字符寄存器,再加上数据发送和数据接收缓冲器,一共有7个用户可访问的寄存器。而8251A芯片只提供2个分别用于命令寄存器和数据寄存器的可访问地址。不难想到,编程8251A的方式字、命令字必须遵循芯片设计的有关约定,按照规定的先后次序来进行设置。芯片设计约定:
- 凡是初始化有关的方式、命令和同步字或者读取状态字,访问芯片的奇地址,凡是传送数据,访问芯片的偶地址。两个端口一个奇地址,一个偶地址,用这两个端口就可以完成对数据的读/写、对状态寄存器的读出以及对方式、命令、同步字符寄存器的写入。具体地说:用奇地址端口进行写入时,是写入命令字、方式选择字或者同步字符,而用奇地址端口读出时,是从状态寄存器中读出状态。用偶地址端口读出时,是从数据输入缓冲器中读取数据,用偶地址端口写入时,是往数据输出缓冲器中写入数据。
- 复位以后,第一次写入奇地址端口的值被作为方式选择字存入方式寄存器。
- 如果编程8251A的工作方式为同步方式,紧接着写入到奇地址端口的是同步字符,被放入同步字符寄存器。在前面写入的方式选择字中,还规定了同步字的个数,所以在这里必须根据方式字的设定,向奇地址写入1个或按顺序写入2个同步字。如果是两个,则先后分别写入第一个和第二个同步字符寄存器。这也是为什么要先写入方式字的原因。
- 之后,写入奇地址的数据一概被认为是命令字,被存入命令寄存器。命令字中如果包含复位命令,8251A被复位。其后送入奇地址的字节又被认为是方式字,重新执行上述流程。命令字中如果不包含复位命令,初始化完毕,便可以开始使用偶地址传送数据。
|