8251串行通讯实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

安徽师范大学数计学院实验报告专业名称11计科课程微机原理实验名称串行通信实验姓名学号1107040128251可编程串行口与PC机通讯实验一、实验目的(1)掌握8251芯片的结构和编程,掌握微机通讯的编制。(2)学习有关串行通讯的知识。(3)学习PC机串口的操作方法。二、实验说明1、8251信号线8251是CPU与外设或Mode之间的接口芯片,所以它的信号线分为两组:一组是用于与CPU接口的信号线,另一组用于与外设或Mode接口。(1)与CPU相连的信号线:除了双向三态数据总线(D7~D0)、读(RD)、写(WR)、片选(CS)之外,还有:RESET:复位。通常与系统复位相连。CLK:时钟。由外部时钟发生器提供。C/D:控制/数据引脚。TxRDY:发送器准备好,高电平有效。TxE:发送器空,高电平有效。RxRDY:接收器准备好,高电平有效。SYNDET/BRKDET:同步/中止检测,双功能引脚。(2)与外设或Mode相连的信号线:DTR:数据终端准备好,输出,低电平有效。DSR:数据装置准备好,输入,低电平有效。RTS:请求发送,输出,低电平有效。CTS:准许传送,输入,低电平有效。TxD:发送数据线。RxD:接收数据线。TxC:发送时钟,控制发送数据的速率。RxC:接收时钟,控制接收数据的速率。2、8251的初始化编程和状态字8251是一个可编程的多功能串行通信接口芯片,在使用前必须对它进行初始化编程。初始化编程包括CPU写方式控制字和操作命令字到8251同一控制口,在初始化编程时必须按一定的顺序。如下面的流程图:三、实验原理图四、实验内容本实验由实验器发送一串字符0~9,PC机串口接收并在超级终端上显示。五、实验步骤与PC机通讯应用实验(1)实验连线:a.用串口线把实验机8251模块的RS232通讯口与PC机相连,把串口旁边的短路块SW1短路在2-2/3-3上,SW2短路在RS232上。b.把8251实验区TxD、RxD分别与RS232实验区中的TxD、RxD相连。c.8254定时器电路的CLK0和8251的CLOCK连到信号源CLK1(短路在1.5MHz)。d.8254定时器电路的OUT0接8251的TxC和RxC,8254定时器电路的GATE接+5Ve.8251选通线CS与ISA总线接口模块的0000H相连,8254选通线CS与ISA总线接口模块的0020H相连。f.8251及8254的WR连到8086主模块的,8251及格8254的RD连8086主模块的RD。g.8251及8254模块的数据(D0~D7)、地址线(A0~A7)分别连到主模块的数据(AD0~AD7)、地址线(A0~A7)。(2)PC机设置:进入WINDOWS附件——通讯——超级终端。进入终端后在“连接时使用”下拉框选择你所使用的COM口,波特率设置为4800,数据位8位,奇偶校验位无,停止位1位,流量控制无。等待接收数据。(3)编译、运行程序(8251xp.asm),运行程序前先按硬件复位,正常运行后应在PC机屏幕上循环显示“QingdongMicrocomputerInstitute”六、实验代码MY_STACKSEGMENTPARA'STACK'DB100DUP(?)MY_STACKENDSMY_DATASEGMENTPARA'DATA'IO_9054base_addressDB4DUP(0);PCI卡9054芯片I/O基地址暂存空间IO_base_addressDB4DUP(0)pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror!!!',0DH,0AH,'$'GOODDB0DH,0AH,'TheProgramisExecuting!',0DH,0AH,'$'D8251_0DW0000H;DLAB=0:接收数据寄存器,发送保持寄存器;DLAB=1:波特率除数寄存器低位D8251_1DW0001H;DLAB=0:中断允许寄存器;DLAB=1:波特率除数寄存器高位P8254_T0DW0020HP8254_MODEDW0023HPC16550_0EQU03F8H;DLAB=0:接收数据寄存器,发送保持寄存器;DLAB=1:波特率除数寄存器低位PC16550_1EQU03F9H;DLAB=0:中断允许寄存器;DLAB=1:波特率除数寄存器高位PC16550_3EQU03FBH;线路控制寄存器LCRPC16550_4EQU03FCH;MODEM控制寄存器MCRPC16550_5EQU03FAH;线路状态寄存器LSRDELAY_SETEQU01FFH;延时参数MESDB'PCICARDNOTFOUND!$'MES0DB'***********************PCICONFIGINFO*****************************',13,10,'$'MES1DB'PCIBIOSNOTFOUND!',10,13,'$'MES2DB'PCICONFIGREADERROR!$'DIS1DB'PCIADDRESS0$';DIS5DB'BIOSNOTSUPPER!$'DIS6DB'READPCIBOARDFAIL!$';-------PCIConfigurationSpaceRegisters-------------------------------BNDB?;BUSNUMBERDN_FNDB?;DeviceNumberandFunctionNumberMY_DATAENDsMY_CODESEGMENTPARA'CODE'MY_PROCPROCFARASSUMECS:MY_CODE,DS:MY_DATA,SS:MY_STACK.386;386模式编译START:MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_STACKMOVSS,AXCALLFINDPCI;查找PCI卡资源并显示MOVCX,wordptrIO_base_addressANDCX,0FFFCHADDD8251_0,CXADDD8251_1,CXADDP8254_T0,CXADDP8254_MODE,CXMOVDX,PC16550_3;DLAB为1允许访问波特率寄存器MOVAL,82HOUTDX,ALMOVDX,PC16550_0;波特率除数寄存器低位MOVAL,18HOUTDX,ALMOVDX,PC16550_1;波特率除数寄存器高位MOVAL,00HOUTDX,ALMOVDX,PC16550_3;DLAB为0MOVAL,03H;附加奇偶标志位选择,无校验,1位停止位,8位字符03OUTDX,ALMOVDX,PC16550_4;RTS、DTR置0:请求发送、数据终端就绪MOVAL,03HOUTDX,ALMOVDX,PC16550_1;中断允许寄存器IER,屏蔽中断MOVAL,00HOUTDX,ALMOVDX,P8254_MODEMOVAL,36H;计时器0,先低后高,方式3,二进制计数OUTDX,ALMOVDX,P8254_T0MOVAL,13H;计数初值晶振6MHz波特率4800BIT,分频频率为(6000/76.8=4EH)OUTDX,ALMOVAL,00HOUTDX,ALMOVDX,D8251_1MOVAL,4EH;异步1个停止位,无奇偶校验,8位字符,波特率为=发送(接收)时钟/16OUTDX,ALMOVAL,37H;不搜索,不内复位,请求发送,错误标志复位,正常通信,允许接收,数据准备好,允许发送OUTDX,ALAGAIN:MOVAH,30H;发送初值NEXT:MOVDX,D8251_1NEXT1:INAL,DXRCRAL,1;检测TXRDY是否为0,即判断发送是否准备好JNCNEXT1CALLDELAYMOVDX,D8251_0MOVAL,AHOUTDX,ALINCAHCALLRECEIVECMPAH,39H;为9赋初值JBENEXTJMPAGAIN;ERROR:MOVDX,OFFSETMES2;显示读错误信息MOVAH,09HINT21HEXIT:MOVAX,4C00HINT21HMY_PROCENDpDELAYPROCNEAR;延时程序PUSHFPUSHAXPUSHDXPUSHCXMOVCX,-1LOOP$;延时POPCXPOPDXPOPAXPOPFRETDELAYENDpRECEIVEPROCNEARPUSHFPUSHAXPUSHDXPUSHCXRECEIVE1:MOVDX,PC16550_5;接收缓冲区是否满INAL,DXANDAL,01HJZRECEIVE1;为0未满,继续CALLDELAYMOVDX,PC16550_0;PC机接收数据INAL,DXMOVDL,ALMOVAH,02HINT21HPOPCXPOPDXPOPAXPOPFRETRECEIVEENDp;BREAKPROCNEAR;按任意键退出PUSHFPUSHAXPUSHDXMOVAH,06HMOVDL,0FFHINT21HJERETURNMOVAX,4C00HINT21HRETURN:POPDXPOPAXPOPFRETBREAKENDP;;*****************************************************************************;/*找卡子程序*/;*****************************************************************************;;FUNCTIONCODEIO_port_addreEQU0CF8H;32位配置地址端口IO_port_dataEQU0CFCH;32位配置数据端口IO_PLX_IDEQU200810B5H;PCI卡设备及厂商IDBADR0=10H;基地址寄存器0BADR1=14H;基地址寄存器1BADR2=18H;基地址寄存器2BADR3=1CH;基地址寄存器3FINDPCIPROCNEAR;查找PCI卡资源并显示PUSHADPUSHFDMOVEBX,080000000HFINDPCI_next:ADDEBX,100HCMPEBX,081000000HJNZfindpci_continueMOVDX,offsetpcicardnotfind;显示未找到PCI卡提示信息MOVAH,09HINT21HMOVAH,4CHINT21H;退出findpci_continue:MOVDX,IO_port_addreMOVEAX,EBXOUTDX,EAX;写地址口MOVDX,IO_port_dataINEAX,DX;读数据口CMPEAX,IO_PLX_IDJNZfindpci_next;检查是否发现PCI卡MOVDX,IO_port_addreMOVEAX,EBXADDEAX,BADR1OUTDX,EAX;写地址口MOVDX,IO_port_dataINEAX,DX;读数据口MOVdwordptrIO_9054base_address,EAXANDEAX,1JZfindPCI_next;检查是否为i/o基址信息MOVEAX,dwordptrIO_9054base_addressANDEAX,0fffffffehMOVdwordptrIO_9054base_address,EAX;去除i/o指示位并保存MOVDX,IO_port_addreMOVEAX,EBXADDEAX,BADR2OUTDX,EAX;写地址口MOVDX,IO_port_dataINEAX,DX;读数据口MOVdwordptrIO_base_address,EAXANDEAX,1JZfindPCI_next;检查是否为i/o基址信息MOVEAX,dwordptrIO_base_addressANDEAX,0fffffffehMOVdwordptrIO_base_address,EAX;去除i/o指示位并保存MOVDX,offsetgood;显示开始执行程序信息MOVAH,09H

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功