- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北理工微机实验三.
实验三串行通信一、实验目的1.了解串行通信的基本原理。2.掌握串行接口芯片8251的工作原理和编程方法。3.掌握串行接口芯片8250的工作原理和编程方法。4. 掌握对串行接口芯片的初始化编程,学会串行通信半双工和全双工的编程技巧。二、实验内容及步骤1、利用PC机系统的串行通信接口实现与实验系统的双机通信,PC机的串行通信接口的端口地址为3F8H,并画出三线连接,七线连线通信接口的连线图,接口为标准RS-232(25芯)插座。2、按图1连接好电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在九针接口处。图1 串口通信电路3、接线(参考):CLK0 /8254接1M时钟CLK /8251接1M时钟GATE0 /8254接+5VOUT0 /8254接TX/RXCLK /8251CS /8254接Y0/IO地址CS /8251接Y7/IO地址RXD /8251接TXD /九针接口TXD /8251接RXD /九针接口4、 8254计数器的计数初值=时钟频率 /(波特率X波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52.5、设串行通信的波特率为1200、偶校验、数据位为7位、一位停止位,利用查询方式实现单工通信。要求发送方将任一文件传送到收方,收方收到后将源程序写入磁盘。分别编写收方和发方的通信程序。6、上述参数不变,用中断方式实现半双工通信,编写程序。7、PC机寄存器的端口地址如表1所示:表1 PC机寄存器的端口地址I/O端口IN/OUT寄存器名称3F8*OUT发送保持寄存器3F8*IN接收数据寄存器3F8**OUT波特率因子(LSB)3F9**OUT波特率因子(MSB)3FBOUT线路控制寄存器3FAIN中断标志寄存器3FCOUTMODEM控制寄存器3FDIN线路状态寄存器3FEINMODEM状态寄存器* 线路控制寄存器第七位 DLAB = 0** 线路控制寄存器第七位DLAB = 1波特率和除数因子对应关系如表2所示:表2 波特率和除数因子对照表波特率单位/Hz因子值波特率单位/Hz因子值MSBLSBMSBLSB50090018000040750600200000350359360000201500300480000183000180720000106000012000060三、编程提示1. 可以首先采用查询方式,实现单工PC机系统与实验系统的双机通信,之后再实现双工方式通信;2. 再尝试实现利用中断方式,实现单工PC机系统与实验系统的双机通信,之后再实现双工方式通信;3. 要求能够实现字符和文件的传输。四、实验流程图双工收发实验代码的主流程图,如图3所示:图3 双工收发实验代码主程序流程图PC机串行通讯初始化参考流程:五、实验代码;PC端程序代码STACK SEGMENT PARA STACKDB 256 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:MOV DX,3FBH;传输线路控制寄存器LCR,最高位为DLAB=1MOV AX,80HOUT DX,ALMOV DX,3F8H;DLAB=1,除数锁存器(低字节)DLLMOV AX,60HOUT DX,ALMOV DX,3F9H;DLAB=1,除数锁存器(高字节)DLHMOV AX,0OUT DX,AL;高字节DLH:00H,低字节:60H,设置波特率为1200MOV DX,3FBH;传输线路控制寄存器LCR,最高位为DLAB=0MOV AX,0AH;DLAB=0,0=禁止中断,0=无附加奇偶标志位,0=奇校验,1=有奇偶校验,0=1位停止位,10=7位OUT DX,ALMOV DX,3FCH;MOV AX,03H;正常工作状态,rts引脚为低电平,DTR引脚低电平OUT DX,ALMOV DX,3F9H;DLAB =0,禁止中断MOV AX,0OUT DX,ALFOREVER:MOV DX,3FDH;从线路状态寄存器读状态IN AL,DXTEST AL,1EH;检测是否即BI=1,检测中断,FE=1,帧错,PE=1,奇偶错,OE=1,溢出错JNZ ERROR;传输线状态寄存器全部都是0TEST AL,01H;检测接受数据是否准备好了JNZ RECEIVE;等于0则表示数据没有准备好TEST AL,20H;数据没有准备好JNZ send;没有,则跳转等待JMP FOREVERsend:MOV AH,1;检测键盘按下INT 16HJZ FOREVER;有键盘按下MOV AH,0;读键盘INT 16HMOV DX,3F8H;将键盘的数据输出发送到缓冲器OUT
文档评论(0)