实验题目 : 串行接口芯片 8251 实验目的 : 1. 掌握 8251 的工作方式及应用 2. 了解有关串口通讯的知识 串行接口芯片 8251 3. 掌握使用 8251 实现双机通讯的软件编程和电路连接 实验设备 : IA-32 架构的微机系统及应用教学平台两套 实验原理 : 1. 8251 的基本性能 性能 : 8251 是可编程的串行通信接口, 可以管理信号变化范围很大的串行数据通信 有下列基本 (1) 通过编程, 可以工作在同步方式, 也可以工作在异步方式 (2) 同步方式下, 波特率为 0~64K, 异步方式下, 波特率为 0~19.2K (3) 在同步方式时, 可以用 5~8 位来代表字符, 内部或外部同步, 可自动插入同步字符 (4) 在异步方式时, 也使用 5~8 位来代表字符, 自动为每个数据增加 1 个启动位, 并能够 根据编程为每个数据增加 1 个 1.5 个或 2 个停止位 (5) 具有奇偶 溢出和帧错误检测能力 (6) 全双工, 双缓冲器发送和接收器 注意,8251 尽管通过了 RS-232 规定的基本控制信号, 但并没有提供规定的全部信号 2. 8251 的内部结构及外部引脚 8251 的内部结构图如图 4-3-1 所示, 可以看出,8251 有 7 个主要部分, 即数据总线缓冲器 读 / 写控制逻辑电路 调制 / 解调控制电路 发送缓冲器 发送控制电路 接收缓冲器和接收控 制电路, 图中还标识出了每个部分对外的引脚
图 4-3-1 8251 内部结构图 8251 的外部引脚如图 4-3-2 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示
图 4-3-2 8251 外部引脚图 3.8251 在异步方式下的 TXD 信号上的数据传输格式 图 4-3-3 示意了 8251 工作在异步方式下的 TXD 信号上的数据传输格式 数据位与停止位的位数可以由编程指定 图 4-3-3 8251 工作在异步方式下 TXD 信号的数据传输格式 4.8251 的编程对 8251 的编程就是对 8251 的寄存器的操作, 下面分别给出 8251 的几个寄存器的格式 (1) 方式控制字 方式控制字用来指定通信方式及其方式下的数据格式, 具体各位的定义如图 4-3-4 所示 图 4-3-4 8251 的方式控制字 (2) 命令控制字命令控制字用于指定 8251 进行某种操作 ( 如发送 接收 内部复位和检测同步字符等 ) 或处于某种工作状态, 以便接收或发送数据 图 4-3-5 所示的是 8251 命令控制字各位的定义 (3) 状态字 图 4-3-5 8251 的命令控制字
CPU 通过状态字来了解 8251 当前的工作状态, 以决定下一步的操作,8251 的状态字如图 4-3-6 所示 图 4-3-6 8251 的状态字格式 (4) 系统初始化 8251 的初始化和操作流程如图 4-3-7 所示 图 4-3-7 8251 初始化流程图
5. 与 80X86 系统应用总线内部连接图下图为 IP 核与 80X86 系统应用总线内部连接图, 这里的 CLK_1M 是 1M 的系统驱动时钟, CLK_184 为 1.8432M 的时钟, 经过 12 分频后作为 8251 的收发时钟使用, 片选 (ncs1) 地址为 3020H~303FH, 而 TXD,RXD 也通过 JP2 座可以引到实验扩展板上来供你做实验 内部已经将 DSR 与 DTR 相连,CTS 与 RTS 相连 为 CTS 端提供低电平输入信号,8251 就可以进行正常发送 DTR 表示 8251 准备就绪, 通常用于对 MODEM 的控制 图 4-3-8 8251 核与总线内部连线图实验内容 : 1. 用示波器观察不同设置下波形, 并记录 2. 自收自发实验 3. 双机通讯实验 ( 负责接收 ) 程序及图像 : 1 程序 CS1 EQU 3020H MY8251H_DATA EQU CS1+00H; 数据寄存器 MY8251H_MODE EQU CS1+01H; 方式控制字寄存器 DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX MOV DX,MY8251H_MODE ; 复位, 写入第一个 0 MOV AL,00H ; 延时 ; 写入第二个 0 ; 写入第三个 0 MOV AL,40H ; 写入 40h MOV AL,7Eh ; 写入方式字,1 个停止位, 偶校验, 字符长度为 8, 异步方式 *16 MOV AL,31h ; 写入命令字, 允许发送 MOV BL,0 WAIT1: IN AL,DX ; 读入状态 TEST AL,01H ;TxRDY 有效吗 JZ WAIT1 ; 无效, 等待 MOV DX,MY8251H_DATA ; 有效, 写入数据 MOV AL,0 INC BL MOV DX,MY8251H_MODE CMP BL,80H ; 循环 80 次 JB WAIT1 MOV AX,4C00H INT 21H DELAY PROC ; 延时子程序 PUSH CX; MOV CX,02 D0: LOOP D0 POP CX RET DELAY ENDP CODE ENDS END START
图像 2 程序 CS1 EQU 3020H MY8251_DATA EQU CS1+00H ;8251 数据寄存器 MY8251_MODE EQU CS1+01H ;8251 方式控制寄存器 DATA SEGMENT STR1 DB 'GOOD TEST!' ; 字符串 DATA ENDS CODE SEGMENT
START: WAIT1: WAIT2: ASSUME CS:CODE,DS:DATA MOV AX, DATA MOV DS, AX CALL INIT ; 初始化 8251 MOV AL,7EH ; 写入方式字,1 个停止位, 偶校验, 字符长度为 8, 异步方式 *16 MOV DX, MY8251_MODE MOV AL, 34H ; 写入命令字, 允许接收 MOV CX, 10 ; 发送 10 个数 MOV DI, OFFSET STR1 MOV AL, 37H ; 写入命令字, 允许发送, 允许接收 MOV DX, MY8251_MODE IN AL, DX ;TxRDY 有效吗 TEST AL, 01H JZ WAIT1 ; 无效, 等待发送 MOV AL, [DI] MOV DX, MY8251_DATA ; 发送数据 MOV DX, MY8251_MODE IN AL, DX ;RxRDY 有效吗 TEST AL, 02H JZ WAIT2 ; 无效, 等待接收 MOV DX, MY8251_DATA IN AL, DX ; 读取接收的数据 MOV DL,AL ; 显示数据 MOV AH,02H INT 21H INC DI ; 指向下一个字符 LOOP WAIT1 MOV AX,4C00H INT 21H INIT PROC ; 复位 8251 子程序 PUSH DX PUSH AX
MOV DX, MY8251_MODE MOV AL, 00H MOV AL, 40H POP AX POP DX RET INIT ENDP DELAY PROC ; 延时子程序 PUSH CX MOV CX,02H A5: LOOP A5 POP CX RET DELAY ENDP 3 CODE ENDS END START 接收 程序 CS1 EQU 3020H MY8251_DATA EQU CS1+00H ;8251 数据寄存器 MY8251_MODE EQU CS1+01H ;8251 方式控制寄存器 DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX CALL INIT ; 初始化 8251 MOV AL,7EH ; 写入方式字,1 个停止位, 偶校验, 字符长度为 8, 异步方式 *1 MOV AL,34H ; 写入命令字, 允许接收
WAIT2: IN AL, DX ;RxRDY 有效吗 TEST AL, 02H JZ WAIT2 ; 无效, 等待接收 MOV DX, MY8251_DATA IN AL, DX ; 读取接收的数据 MOV DL,AL ; 显示数据 MOV AH,02H INT 21H LOOP WAIT2 MOV AX,4C00H INT 21H INIT PROC ; 复位 8251 子程序 PUSH DX PUSH AX MOV DX, MY8251_MODE MOV AL, 00H MOV AL, 40H POP AX POP DX RET INIT ENDP DELAY PROC ; 延时子程序 PUSH CX MOV CX,02H A5: LOOP A5 POP CX RET DELAY ENDP CODE ENDS END START 实验总结 : 1 通过本实验, 进一步了解了 8251 的特性, 其异步方式编程步骤为 :
1) 先写入 3 个 0, 一个 40H 复位 ; 2) 写入方式字; 3) 写入命令字; 4) 检查状态字; 5) 写入/ 接收数据 2 通过对异步方式的发送数据波形的显示查看, 可以看出发送数据的特点是 : 1) 发送前是高电平空闲位; 2) 发送时先出现一低电平起始位; 3) 之后是要发送的数据(5-8 位 ); 4) 之后是奇偶校验位; 5) 之后是停止位(1-2 位 ), 至此发送结束 ; 6) 发送后是高电平空闲位 停止位长度, 奇偶校验, 发送数据长度和异步方式时长可以在方式字中设置