实验八 8250可编程通信实验.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:5 大小:140KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验八 8250可编程通信实验.doc

实验八8250可编程通信实验.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验八8250可编程通信实验(与微机)一、实验目的了解8250的内部结构、工作原理;了解8250与PCI9052的接口逻辑;掌握对8250的初始化编程方法,学会使用8250实现设备之间的串行通信。二、实验内容及要求1、编写程序:通过初始化8250,设置波特率为4800bps(或其它,但与微机部分一致),数据格式为8数据位,1停止位,偶校验;然后打开PC机的串行通信测试软件,向8250发送一批数据,8250接收完数据之后,再将数据依次发送回去。2、按图连线,运行程序,观察实验结果,掌握8250的各项功能及编程方法。三、实验电路四、试验程序与流程图.MODELTINYPCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,;也为DMA&32BITRAM板卡上的8237提供基地址)Vendor_IDEQU10EBH;厂商ID号Device_IDEQU8376;设备ID号.STACK100.DATAReceive_BufferDB10DUP(0);接受缓冲器Send_BufferEQUReceive_Buffer;发送缓冲器RHRDW00f0H;接收数据缓冲区THRDW00f0H;发送数据缓冲区IERDW00f1H;中断控制寄存器FCRDW00f2H;FIFO控制寄存器ISRDW00f2H;中断状态寄存器LCRDW00f3H;串行口控制寄存器MCRDW00f4H;MODEM控制寄存器LSRDW00f5H;串行口状态寄存器MSRDW00f6H;MODEM状态寄存器DLLDW00f0H;波特率除数锁存器低位DLMDW00f1H;波特率除数锁存器高位ADRDW00E0H;用于清除PCI9052上一次写操作产生的地址IO_Bit8_BaseAddressDW?msg0DB‘BIOS不支持访问PCI$’msg1DB‘找不到StarPCI9052板卡$’msg2DB‘读8位I/O空间基地址时出错$’.CODESTART:MOVAX,@DATAMOVDS,AXNOPCALLInitPCICALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址CALLINIT8250START2:MOVCX,10;接收数据(接收完设定的数据个数)CALLRECEIVE_GROUPMOVCX,10;发送数据(发完设定的数据个数)CALLSEND_GROUPJCWARNING1CALLIfExitJZSTART2JMPExitWARNING1:JMPExit;*************发送一组字符子程序,个数在CX中***********Send_GroupPROCNEARLEASI,Send_BufferSend_Group1:LODSBCALLSend_ByteJCSend_Group2LOOPSend_Group1CLCSend_Group2:RETSend_GroupENDP;*************接收一组字符子程序,存放首地址在DPTR中,个数在R6R7中***********Receive_GroupPROCNEARMOVDX,ADROUTDX,AL;用于清除PCI9052上一次写操作产生的地址LEADI,Receive_BufferReceive_Group1:CALLReceive_ByteSTOSBLOOPReceive_Group1CLCRETReceive_GroupENDPINIT8250PROCNEARMOVDX,ISRMOVAL,06HOUTDX,ALMOVDX,LCRMOVAL,83H;允许访问波特率因子寄存器OUTDX,ALMOVDX,DLLMOVAL,40;除法除数低位寄存器,波特率设为;4800=(3.072*1000000/16)/DLMDLLOUTDX,ALMOVDX,DLM;00H送高字节寄存器MOVAL,00HOUTDX,ALMOVDX,LCR;不允许访问波特率因子寄存器MOVAL,1BH;数据格式为8数据位,1停止位,偶校验OUTDX,ALRETINIT8250ENDP;*********发送一个字节子程序,发送A中的数,失败置1CY*********Send_BytePROCNEARPUSHCXPUSHAXMOVCX,1000MOVDX,LSRREP11:INAL,DXTESTAL,20HJNZOUTPORT1LOOPREP11POPAXSTCJMPEXIT8250OUTPORT1:POPAXMOVDX,RHROUTDX,ALMOVDX,ADROUTDX,AL;清除PCI9052产生的RHR地址CLCEXIT8250:POPCXRETSend_ByteENDP;*********接收一个字节子程序,接收字节在A中,接收失