合工大微机原理实验报告全解

《微机原理与接口技术》课程实验报告

实验名称 姓 名 实验日期 实验一 8251可编程通信实验(与微机) 系院专业 2015.5.20 你的专业 班 级 指导教师 你的专业 学 号 13-5班 成 绩 一、实验目的和要求 1、了解8251的内部结构、工作原理;了解8251与8086的接口逻辑;掌握对8251的初始化编程方法,学会使用8251实现设备之间的串行通信。 二、实验内容(包括实验步骤和代码) (一)实验内容 1、编制程序:实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发时钟。 2、连接线路,从微机接收一批数据,接收完毕,再将它们回送给微机。 (二)实验步骤 1、连线说明: C4区:CS(8253)、A0、A1 C4区:CLK0 C4区:GATE C4区:OUT0 C3区:CS(8251)、C/D C3区:CLK C3区:RXD、TXD —— A3区:CS2、A0、A1 —— B2区:2M —— C1区的VCC —— C3区:RxC TxC —— A3区:CS4、A0 —— B2区:4M —— D7区:RXD、TXD 2、运行程序 3、运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8251发送10个字节数据(输入数据之间用空格分隔),是否能接收到10个字节数据,接收到的数据是否与发送数据一致。 4、改变传输数据的数目,重复实验,观察结果。 (三)实验代码 .MODEL TINY ;使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bps CTL_ADDR EQU 0241H ;控制字或状态字 DATA_ADDR EQU 0240H ;读写数据 W_8253_T0 EQU 0260H ;计数器0地址 W_8253_C EQU 0263H ;控制字 .STACK 100

1

Receive_Buffer Send_Buffer START: START1: INIT_8253 INIT_8253 INIT_8251 INIT_8251 Reset_8251 .DATA DB EQU .CODE MOV MOV MOV NOP CALL CALL MOV CALL MOV CALL JMP PROC MOV MOV OUT MOV MOV OUT MOV OUT RET ENDP PROC CALL MOV MOV OUT CALL MOV OUT CALL RET ENDP PROC MOV MOV OUT CALL OUT CALL 10 DUP(0) Receive_Buffer AX,@DATA DS,AX ES,AX INIT_8253 INIT_8251 CX,10 Receive_Group CX,10 Send_Group START1 NEAR DX,W_8253_C AL,37H DX,AL DX,W_8253_T0 AL,26H DX,AL AL,0 DX,AL NEAR RESET_8251 DX,CTL_ADDR AL,7EH DX,AL DLTIME ;接受缓冲器 ;发送缓冲器 ;定时器0,方式3 ;BCD码26(2000000/26)=16*4800 ;波特率系数为16,8个数据位 ;一个停止位,偶校验 ;延时 AL,15H ;允许接收和发送发送数据,清错误标志 DX,AL DLTIME NEAR DX,CTL_ADDR AL,0 DX,AL ;向控制口写入\DLTIME ;延时,等待写操作完成 DX,AL ;向控制口写入\DLTIME ;延时 2 Reset_8251 OUT CALL MOV OUT CALL RET ENDP DX,AL DLTIME AL,40H DX,AL DLTIME ;向控制口写入\;延时 ;向控制口写入复位字40H ;接受一组数据,CX--接受数目 Receive_Group PROC LEA Receive_Group1: CALL STOSB LOOP RET Receive_Group ENDP ;接受一个字节 Receive_Byte Receive_Byte1: Receive_Byte PROC MOV IN TEST JZ MOV IN RET ENDP NEAR DI,Receive_Buffer Receive_Byte Receive_Group1 NEAR DX,CTL_ADDR AL,DX ;读入状态 AL,2 Receive_Byte1 ;有数据吗? DX,DATA_ADDR ;有 AL,DX NEAR SI,Send_Buffer SendByte Send_Group1 NEAR AX DX,CTL_ADDR AL,DX AL,1 Sendbyte1 AX DX,DATA_ADDR 3

;发送一组数据,CX--发送数目 Send_Group PROC LEA Send_Group1: Send_Group ;发送一个字节 Sendbyte Sendbyte1:

LODSB CALL LOOP RET ENDP PROC PUSH MOV IN TEST JZ POP MOV ;读入状态 ;允许数据发送吗? ;发送

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4