微机原理实验四实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验四 8251可编程串行口与PC机通信实验一、实验要求
利用实验箱内的8251A芯片,实现与PC机的通信。
二、实验目的
1.掌握8251A芯片结构和编程方法;
2.了解实现串行通信的硬件环境,数据格式和数据交换协议;
3.了解PC机通信的基本要求。
三、实验原理
(一)8251A芯片工作方式配置:
1. 8个数据位;
2.无奇偶校验位;
3.1个停止位;
4.波特率因子设为16;
5. 波特率设为9600。
(二)8251A主要寄存器说明
图4-1 模式字
图4-2 命令字
CO MMAN D I NSTR UCT ION FO RMA T
图4-3 状态字
(三)8251编程
对8251 的编程就是对8251 的寄存器的操作,下面分别给出8251 的几个寄存器的格式。
(1)方式控制字
方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4-4所示。
图4-4 方式控制字说明
(2)命令控制字
命令控制字用于指定8251 进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。
图4-5 所示的是8251 命令控制字各位的定义。
图4-5命令控制字说明
(3)状态字
CPU 通过状态字来了解8251 当前的工作状态,以决定下一步的操作,8251 的状态字如
图4-6所示。
图4-6 状态字说明
四、实验电路连接:
1.CS8251接228H,CS8279已固定接至238H;
2.扩展通信口18中的232RXD连8251RXD ,232TXD连8251TXD;
3.计算机的两个RS232通信口,一个连至仿真机通信口,一个连至扩展通信口18(所有通信口均为DB9)。
注意:RS232通信口必须在设备断电状态下插拔!
图4-7 连线图
五、实验内容及要求
1. 将例程从PDF文档中导入到WMD86软件编辑环境中,调试通过。
使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。
将结果截图保存,贴入实验报告。
2.剔除例程中冗余部分,实现对例程的精简和优化。
将精简内容与相应理由写入实验报告。
3.将自己学号的后三位数字通过RS232端口的Txd管脚输出。
使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。
将结果截图保存,贴入实验报告。
4.通过读状态寄存器的方法,获得发送移位寄存器是否为空的信息,实现学号后三位数字的循环发送。
将结果截图保存,贴入实验报告。
5.给每帧数据间添加固定的时间间隔,时间间隔为10000个指令周期。
将结果截图保存,
贴入实验报告。
六、实验程序及结果
1.
起始位0,8位数据:10101010,由于发送的数据是从低到高,所以实际数据是01010101,即55H。
无校验位。
2.精简化程序
M8251_DATA EQU 0600H ;端口定义
M8251_CON EQU 0602H
M8254_2 EQU 0644H
M8254_CON EQU 0646H
SSTACK SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: CALL INIT
A1: CALL SEND
MOV CX, 0001H
A2: MOV AX, 0F00H
A3: DEC AX
JNZ A3
LOOP A2
JMP A1
INIT: MOV AL, 0B6H ; 8254, 设臵通讯时钟
MOV DX, M8254_CON
OUT DX, AL
MOV AL, 1BH
MOV DX, M8254_2
OUT DX, AL
MOV AL, 3AH
OUT DX, AL
CALL RESET ; 对8251 进行初始化
CALL DALLY
MOV AL, 6EH
MOV DX, M8251_CON ; 写8251 方式字,有奇偶校验OUT DX, AL
CALL DALLY
MOV AL, 34H
OUT DX, AL ; 写8251 控制字
CALL DALLY
RET
RESET: MOV AL, 00H ; 初始化8251 子程序
MOV DX, M8251_CON ; 控制寄存器
OUT DX, AL
CALL DALLY
OUT DX, AL
CALL DALLY
OUT DX, AL
CALL DALLY
MOV AL, 40H
OUT DX, AL
RET
DALLY: PUSH CX
MOV CX, 5000H
A4: PUSH AX
POP AX
LOOP A4
POP CX
RET
SEND: PUSH AX
PUSH DX
MOV AL, 31H
MOV DX, M8251_CON
OUT DX, AL
MOV AL, 55H
MOV DX, M8251_DATA ; 发送数据55H
OUT DX, AL
CALL DALLY
POP AX
RET
CODE ENDS
END START
发送55H:01010101B,接收时从低位开始接收,接收到的二进制数为:10101010B,实际接收到的二进制数为:
0(起始位)10101010(8位数据位)(无奇偶校验位)1(停止位)
3.将自己学号的后三位数字通过RS232端口的Txd管脚输出。
使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。
将结果截图保存,贴入实验报告。
(1)发送415:
M8251_DATA EQU 0600H ;端口定义
M8251_CON EQU 0602H
M8254_2 EQU 0644H
M8254_CON EQU 0646H
SSTACK SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: CALL INIT
A1: CALL SEND
MOV CX, 0001H
A2: MOV AX, 0F00H
A3: DEC AX
LOOP A2
JMP A1
INIT: MOV AL, 0B6H ; 8254, 设臵通讯时钟MOV DX, M8254_CON
OUT DX, AL
MOV AL, 1BH
MOV DX, M8254_2
OUT DX, AL
MOV AL, 3AH
OUT DX, AL
CALL RESET ; 对8251 进行初始化
CALL DALLY
MOV AL, 6EH
MOV DX, M8251_CON ; 写8251 方式字
OUT DX, AL
CALL DALLY
MOV AL, 34H
OUT DX, AL ; 写8251 控制字
CALL DALLY
RET
RESET: MOV AL, 00H ; 初始化8251 子程序MOV DX, M8251_CON ; 控制寄存器
OUT DX, AL
CALL DALLY
OUT DX, AL
CALL DALLY
OUT DX, AL
CALL DALLY
MOV AL, 40H
OUT DX, AL
RET
DALLY: PUSH CX
MOV CX, 5000H
A4: PUSH AX
POP AX
LOOP A4
POP CX
RET
SEND: PUSH AX
PUSH DX
MOV AL, 31H
MOV DX, M8251_CON
MOV AL, 04H
MOV DX, M8251_DATA ; 发送数据55H OUT DX, AL
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
MOV AL, 01H
MOV DX, M8251_DATA ; 发送数据55H OUT DX, AL
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
MOV AL, 05H
MOV DX, M8251_DATA ; OUT DX, AL
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
CALL DALLY
POP DX
POP AX
RET
CODE ENDS
END START
分三次分别发送04H,01H,05H
该程序发送数据时,是通过延时来让数据全部发送出去,不是通过状态字来进行判断。
通过延时,给寄存器足够的时间,将数据发送出去,然后再发送下一帧数据。
七、实验体会与心得
通过本次实验,我掌握了8251的基本应用,熟悉了其典型电路连接方法,以及他的数据传送程序。
本次实验,我切实的认识了数据帧的相关内容,以及数据是如何发送的。
数据帧是将数据加上首部和尾部所构成的数据段,首部包含起始位,尾部包含奇偶校验位和停止位等,具体的位数需要通过设定方式控制字来进行设定。
数据帧传送时,需要一定的时间,如果传送还没完成就发送下一帧,数据就会丢失。
为防止数据丢失,可以通过两种方法发送数据:1.等待足够长的时间让数据发送出去;2.查询状态字判断数据是否发送。
后者比较精准,前者可能有误差。
数据的发送是先送高位再送低位,所以在传送学号的程序中出现了一些错误,应以5,1,4的顺序发送。