文档详情

微型计算机系统原理(第五版)周明德 第11章.ppt

发布:2017-03-09约字共81页下载文档
文本预览下载声明
11.2.4 8251的编程 8251是一个可编程的多功能通信接口。所以在具体使用时必须对它进行初始化编程,以确定它的具体工作方式。例如: 规定工作于同步还是异步方式;传送的波特率;字符格式等。 初始化编程必须在系统复位(RESET)以后,在USART工作以前进行,即USART不论工作于任何方式,都必须先经过初始化。 初始化编程过程的流程图如图11-22所示。 1. 方式选择指令 方式选择指令格式如图11-23所示。 指令可以分为四组,每组两位。首先,由D1D0确定是工作于同步方式还是异步方式。当D1D0=00时,则为同步方式;而在D1D0≠00时,则为异步方式,且D1D0的三种组合用以选择输入时钟频率与波特率之间的系数。 D3D2用以确定字符的位数,D5D4用以确定奇偶校验的性质,它们的规定都是很明确的。D7D6在同步和异步方式时的意义是不同的,异步时用以规定停止位的位数;同步时用以确定是内同步还是外同步,以及同步字符的个数。 在同步方式时,紧跟在方式指令后面的是由程序输入的同步字符。它是用与方式指令类似的方法由CPU输给USART的。 2. 命令指令 在输入同步字符后,或在异步方式时,在方式选择指令后应由CPU输给命令指令,其格式如图11-24所示。 方式选择指令是规定8251的工作方式,而命令指令直接使8251处于规定的工作状态,以准备接收或发送数据。 3. 状态寄存器 8251上还有状态寄存器,CPU可通过I/O读操作把8251的状态字读入CPU,用以控制CPU与8251 之间的数据交换。 读状态字时,C/D#端为“1”。状态字的格式如图11-25所示。 状态寄存器的TxRDY,只要数据缓冲器一空就置位;而引脚TxRDY只能当条件: 数据缓冲器空·CTS#·TxEN 成立时,才置位。 11.2.5 8251应用举例 我们以两台微型计算机之间进行双机串行通信的硬件连接和软件编程来说明,8251在实际中是如何应用的。 1. 要求: 在A、B两台微机之间进行串行通信,A机发送,B机接收。要求把A机上开发的应用程序(其长度为2DH)传送到B机中去。采用异步方式,字符长度为8位,2个停止位,波特率因子为64,无校验,波特率为4800。CPU与8251之间采用查询方式交换数据。端口地址分配是: 命令/状态口为309H,数据口为308H。 2. 分析 由于是近距离传输,可以不用MODEM,而直接互连。同时采用查询方式,故接收/发送程序中只需要检查发送/接收的准备好状态位是否置位,在准备好时就发送或者接收一个字节。 3. 设计 (1) 硬件连接 根据以上分析把两台微机都当作DTE。它们之间只需TxD、RxD和SG(信号地)三根线连接就能通信。采用8251A作为接口的主芯片再配置少量的附加电路,如波特率发生器、RS-232C与TTL电平转换电路、地址译码器电路等就可构成一个串行通信接口。如图11-21所示。 (2) 软件编程 接收程序和发送程序分开编写,每个程序段中包括8251A初始化、命令字、状态查询和输入输出几部分。 ① 发送程序(略去堆栈STACK和数据DATA段) CSEG SEGMENT ASSUME CS:CSEG TRA PROC FAR START: MOV DX,309H;控制口地址 MOV AL,00H OUT DX,AL MOV AL,40H;内部复位 OUT DX,AL NOP MOV AL,0CFH;方式字(异步、2个停止 位、字符长度 OUT DX,AL;为8位,无校验,波特率因子 为64) MOV AL,37H;命令字(RTS#、RR、RxE、 DTR#和TxEN均置“1”) OUT DX,AL MOV CX,2DH ;传送字节数 MOV SI,300H ;发送区首地址 L1: MOV DX,309H ;状态口地址 IN AL,DX ;输入状态 TEST AL,38H ;检查三个出错标志位 JNZ ERR ;有错,转出错处理 AND AL,01H JZ L1 ;发送未准备好,则等待 MOV DX,308H;数据口地址 MOV AL,[SI];取发送数据 OUT DX,AL;输出 INC SI DEC CX JNZ L1;未发送完,循环 ERR:(略) MOV AX,4C00H INT 21H;发送完则返回DOS TRA E
显示全部
相似文档