微机原理实验四实验报告.docx
《微机原理实验四实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理实验四实验报告.docx(16页珍藏版)》请在冰点文库上搜索。
微机原理实验四实验报告
实验报告
课程名称
微机原理与接口技术
实验项目名称
实验四8251可编程串口与PC机通信实验
实验类型
综合与设计性实验
实验学时
2
班级
学号
姓名
指导教师
实验室名称
实验时间
实验成绩
预习部分
实验过程
表现
实验报告
部分
总成绩
教师签字
日期
实验四8251可编程串行口与PC机通信实验
一、实验要求
利用实验箱内的8251A芯片,实现与PC机的通信。
二、实验目的
1.掌握8251A芯片结构和编程方法;
2.了解实现串行通信的硬件环境,数据格式和数据交换协议;
3.了解PC机通信的基本要求。
三、实验原理
(一)8251A芯片工作方式配置:
1.8个数据位;
2.无奇偶校验位;
3.1个停止位;
4.波特率因子设为16;
5.波特率设为9600。
(二)8251A主要寄存器说明
图4-1模式字
图4-2命令字
图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_DATAEQU0600H;端口定义
M8251_CONEQU0602H
M8254_2EQU0644H
M8254_CONEQU0646H
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
CALLINIT
A1:
CALLSEND
MOVCX,0001H
A2:
MOVAX,0F00H
A3:
DECAX
JNZA3
LOOPA2
JMPA1
INIT:
MOVAL,0B6H;8254,设臵通讯时钟
MOVDX,M8254_CON
OUTDX,AL
MOVAL,1BH
MOVDX,M8254_2
OUTDX,AL
MOVAL,3AH
OUTDX,AL
CALLRESET;对8251进行初始化
CALLDALLY
MOVAL,6EH
MOVDX,M8251_CON;写8251方式字,有奇偶校验
OUTDX,AL
CALLDALLY
MOVAL,34H
OUTDX,AL;写8251控制字
CALLDALLY
RET
RESET:
MOVAL,00H;初始化8251子程序
MOVDX,M8251_CON;控制寄存器
OUTDX,AL
CALLDALLY
OUTDX,AL
CALLDALLY
OUTDX,AL
CALLDALLY
MOVAL,40H
OUTDX,AL
RET
DALLY:
PUSHCX
MOVCX,5000H
A4:
PUSHAX
POPAX
LOOPA4
POPCX
RET
SEND:
PUSHAX
PUSHDX
MOVAL,31H
MOVDX,M8251_CON
OUTDX,AL
MOVAL,55H
MOVDX,M8251_DATA;发送数据55H
OUTDX,AL
CALLDALLY
POPDX
POPAX
RET
CODEENDS
ENDSTART
发送55H:
01010101B,接收时从低位开始接收,接收到的二进制数为:
10101010B,实际接收到的二进制数为:
0(起始位)10101010(8位数据位)(无奇偶校验位)1(停止位)
3.将自己学号的后三位数字通过RS232端口的Txd管脚输出。
使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。
将结果截图保存,贴入实验报告。
(1)发送415:
M8251_DATAEQU0600H;端口定义
M8251_CONEQU0602H
M8254_2EQU0644H
M8254_CONEQU0646H
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
CALLINIT
A1:
CALLSEND
MOVCX,0001H
A2:
MOVAX,0F00H
A3:
DECAX
JNZA3
LOOPA2
JMPA1
INIT:
MOVAL,0B6H;8254,设臵通讯时钟
MOVDX,M8254_CON
OUTDX,AL
MOVAL,1BH
MOVDX,M8254_2
OUTDX,AL
MOVAL,3AH
OUTDX,AL
CALLRESET;对8251进行初始化
CALLDALLY
MOVAL,6EH
MOVDX,M8251_CON;写8251方式字
OUTDX,AL
CALLDALLY
MOVAL,34H
OUTDX,AL;写8251控制字
CALLDALLY
RET
RESET:
MOVAL,00H;初始化8251子程序
MOVDX,M8251_CON;控制寄存器
OUTDX,AL
CALLDALLY
OUTDX,AL
CALLDALLY
OUTDX,AL
CALLDALLY
MOVAL,40H
OUTDX,AL
RET
DALLY:
PUSHCX
MOVCX,5000H
A4:
PUSHAX
POPAX
LOOPA4
POPCX
RET
SEND:
PUSHAX
PUSHDX
MOVAL,31H
MOVDX,M8251_CON
OUTDX,AL
MOVAL,04H
MOVDX,M8251_DATA;发送数据55H
OUTDX,AL
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
MOVAL,01H
MOVDX,M8251_DATA;发送数据55H
OUTDX,AL
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
MOVAL,05H
MOVDX,M8251_DATA;
OUTDX,AL
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
CALLDALLY
POPDX
POPAX
RET
CODEENDS
ENDSTART
分三次分别发送04H,01H,05H
该程序发送数据时,是通过延时来让数据全部发送出去,不是通过状态字来进行判断。
通过延时,给寄存器足够的时间,将数据发送出去,然后再发送下一帧数据。
七、实验体会与心得
通过本次实验,我掌握了8251的基本应用,熟悉了其典型电路连接方法,以及他的数据传送程序。
本次实验,我切实的认识了数据帧的相关内容,以及数据是如何发送的。
数据帧是将数据加上首部和尾部所构成的数据段,首部包含起始位,尾部包含奇偶校验位和停止位等,具体的位数需要通过设定方式控制字来进行设定。
数据帧传送时,需要一定的时间,如果传送还没完成就发送下一帧,数据就会丢失。
为防止数据丢失,可以通过两种方法发送数据:
1.等待足够长的时间让数据发送出去;2.查询状态字判断数据是否发送。
后者比较精准,前者可能有误差。
数据的发送是先送高位再送低位,所以在传送学号的程序中出现了一些错误,应以5,1,4的顺序发送。