微机串口通信内环自检_第1页
微机串口通信内环自检_第2页
微机串口通信内环自检_第3页
微机串口通信内环自检_第4页
微机串口通信内环自检_第5页
免费预览已结束,剩余14页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、班级:学号:姓名:日期:等级评定:课程设计报告题目:微机串口通信内环自检系(院):专业:软件工程学生姓名:学号:起迄日期:2008年6月8日6月19日课程设计地点:硬件综合室、多媒体技术室设计评语:(评阅教师填写)评阅人:第-0-页共13页班级:学号:姓名:日期:课程设计说明书1 .课程设计题目:微机用通信内环自检2 .课程设计内容:对PC机辅用口进行内环自动测试,并实现两台PC机之间的通信。3 .课程设计目的:了解PC机用口的工作原理,掌握PC机用口自动测试的编程方法。第-1-页共13页班级:学号:姓名:日期:课程设计说明书4 .课程设计要求:(1)采用查询方式将下列测试电文送到辅用口发送器

2、,经过内部自环接受,显示在屏幕上,通信速率选用4800波特,无校验传输,一帧字符有8个数据位,2个停止位,按下任意键时测试结束。测试电文如下:THEQUICKBROWNFOXJUMPSOVERLAZYDOG(2)用一条串口线将两台计算机直接相连,实现两台计算机近距离通信。在一台PC机键入字符,从8250的发送端发送给另一台PC机,另一台PC机的8250的接收端接收,然后在屏幕上显示出来。5 .设计详细说明(包括硬件原理图、流程图)利用微机系统用行口设计申行通信程序的时候,应首先根据课题要求(自发自收、单工通信还是双工通信)和欲采用的编程手段(对端口直接操作还是调用BIOS通信软件),完成RS-

3、232连接线的连接,创建正确的串行通信外部环境。8250初始化编程的步骤:1) 80H-通信线控制寄存器,是寻址位为1。2)除数高8位/低8位,除数寄存器高8位/低8位,确定通信速率。3)把D7=0的命令字写入通信线控制寄存器,确定一帧数据的格式。4)设置中断允许命令字:查询方式,置中断允许命令字为0中断方式,置中断允许寄存器的相应位为15)设置MODEM制寄存器中断方式:D3=1,允许8250送出中断请求信号。查询方式:D3=0内环自检:D4=1正常通信:D4=0(1)辅用口内环自检当8250设置为内环自检方式时,8250无法提出中断请求,而且引脚/TRS、/CTS、/DTR/DSR在芯片内

4、部似乎是被“切断”了。有鉴于此,当8350设置为内环自检方式的时候,只能采用查询方式,而且只能采用对端口直接操作的编程手段,完成数据的发送和接受。第-2-页共13页班级:学号:姓名:日期:【程序流程图】(直接访问端口寄存器,如图3-19)辅串口初始化送电文长度一工二宥键按下?”二A匚接收状态收取数据发送NSI-1显示出错信息返回DOS图3-19程序参考流程图(2)双机通信用用口电缆将两台机算机的COM21接起来,把计算机设置成空MODEM式,并为此编制了两个汇编语言程序:其一为数据发送程序;其二为数据接收程序。为了确保每个字符发送出去,并且被接收,发送接收双方的波特率设置一致,并且均采取查询方

5、式进行下一步操作。接收数据程序只需执行一次,即驻留在内存中,此后,只要R号计算机有数据要发送,则I号机随时接收并显示在屏幕上。第-3-页共13页班级:学号:姓名:日期:课程设计说明书5 .设计详细说明(包括硬件原理图、流程图)【程序流程图】(如图3-20、3-21、3-22)图3-20双机通信第-4-页共13页班级:学号:姓名:日期:保护原寄存器内,口显示提示信读键盘输入N输入缓冲器处读数发送并显示恢复原寄存器内容返回.返回图3-21发送程序图3-22接受程序第-5-页共13页班级:学号:姓名:日期:课程设计说明书6 .程序代码源程序:DISPMACROVAR定义宏,完成字符串的输出MOVAH

6、,9MOVDX,OFFSETVARINT21HENDMDATASEGMENTTEXTDB'THEQUICKBROWNFOXJUMPSOVERLAZYDOG',0DH,0AHLLLEQU$-TEXT;电文长度->LLLERRORDB'COMBAD!',0DH,0AH,'$'NEQU24DUP('')MESG1DB0DH,0AHDBN,'MENU',0DH,0AHDBN,'',0DH,0AHDBN,'|',0DH,0AHDBN,'|1.COM2INTERNALLOOP|&#

7、39;,0DH,0AHDBN,'|2.SHUANGJI|',0DH,0AHDBN,'|3.EXIT|',0DH,0AHDBN,'|',0DH,0AHDBN,'',0DH,0AHDBN,'CHOICE(1,2,3):$',0DH,0AHMESG2DB0DH,0AHDBN,'MENU',0DH,0AHDBN,'',0DH,0AHDBN,'|',0DH,0AHDBN,'|1.SENT|',0DH,0AHDBN,'|2.RECIEVE|',0D

8、H,0AHDBN,'|',0DH,0AHDBN,'',0DH,0AHDBN,'CHOICE(1,2):$',0DH,0AHMESG3DB0DH,0AH,'PLEASEINPUTTHEMESSEGE:',0DH,0AH,'$'MESG4DB0DH,0AH,'THEMESSAGEYOUINPUTARE:',0DH,0AH,"$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLAST:第-6-页共13页班级:学号:姓

9、名:日期:DISPMESG1;显示操作信息,选择是内环自检还是双机通信MOVAH,01HINT21H;等待键入一个字符,有回显,响应Ctrl_CCMPAL,'1'JENEXT1;如果输入1,转测辅用口内环自检CMPAL,'2'JENEXT2;如果输入2,转双机通信CMPAL,'3'JNELASTJMPEXIT;测试结束,退出;PC机辅用口的内环自检NEXT1:CALLI8250;辅用口初始化AGAIN:MOVCX,LLL;电文长度一CXMOVBX,OFFSETTEXT;BX旨向TEXTB首地址SCANT:MOVAH,01HINT16H;查询键盘缓

10、冲区JNZEXIT;有键入,转退出MOVDX,2FDHINAL,DX;从DX旨向的端口中读一个字节到ALTESTAL,20H;检查发送保持寄存器是否空闲JZSCANT;若不空闲,转SCANT俞入检查MOVDX,2F8H;发送保持寄存器辅用口地址->DXMOVAL,BXOUTDX,AL;将字符送辅用口数据寄存器MOVSI,0SCANR:MOVDX,2FDHINAL,DX;读取通信线状态字TESTAL,00011110B;检查有无错误标志JNZDISPERR;有错,显示出错信息TESTAL,01H;无错,检查接收数据是否准备好JNZRECEIVE;准备好,转接收程序DECSIJNZSCANR

11、JMPDISPERRRECEIVE:MOVDX,2F8H;接收缓冲器辅用口地址->DXINAL,DX;接收一个数据MOVAH,2MOVDL,ALINT21H;送屏幕显示一个字符第-7-页共13页班级:学号:姓名:日期:INCBXLOOPSCANT;一个电文长度计数JMPAGAIN;重复内环自检DISPERR:DISPERROR;显示出错信息EXIT:MOVAH,4CHINT21H;返回DOSI8250PROCMOVX,00C7H;波特率4800,无校验传输,2个停止位,一桢字符有8个数据位,即为11000111BMOVDX,1;对辅用口进行初始化INT14HMOVDX,2FCH;MODE

12、jM制寄存器辅用口地址->DXMOVAL,00010000B;D4=1,8250工作在内部自环方式OUTDX,ALRETI8250ENDP;双机通信NEXT2:DISPMESG2;显示操作信息,发送还是接收信息MOVAH,1INT21H;等待键入一个字符,有回显,响应Ctrl_CCMPAL,'1'JESENDM;当输入为1时,转发送信息CMPAL,'2'JERECEM;当接受为2时,转接收信息JMPNEXT2SENDM:;发送信息MAIN:;对8250主用口进行初始化。通信速率选用4800波特,无校验传输,一桢字符有8个数据位,2个停止位MOVAL,80H

13、MOVDX,3FBHOUTDX,AL;80H->通信线控制寄存器,使寻址位为1MOVDX,3F9HMOVAL,0OUTDX,AL;除数高8位,除数寄存器高8位MOVDX,3F8HMOVAL,18HOUTDX,AL;除数低8位->除数寄存器低8位MOVAL,00000111B;把命令字写入通信线控制寄存器MOVDX,3FBHOUTDX,ALMOVDX,3F9H第-8-页共13页班级:学号:姓名:日期:MOVAL,0OUTDX,AL;查询方式,置中断允许命令字为0WAIT0:MOVAH,0BHINT21H;查询有无键盘输入,响应Ctrl_CCMPAL,0;AL=0时无输入,AL=0FF

14、HM有输入JEWAIT0;当无输入时,返回等待MOVAH,0INT16H;读取键入的一个字符,无回显,响应Ctrl_C,无键入则等待PUSHAXMOVAH,02HMOVDL,ALINT21H;DOS功能调用,显示一个字符,DL彳寺显示的ASCII码POPAXCALLSENTCHARJMPWAIT0;传输字符;从本机向对方发送字符串,同时在两个屏幕上都显示;按回车键,则双方都换行,按ESC1,双方都退出。SENTCHARPROCNEARPUSHAXPUSHDSMOVAX,DATAMOVDS,AXPUSHBXPUSHCXPUSHDXDISPMESG3;显示提示信息STATUE:;读取通信线路状态,

15、查询工作MOVDX,3FDHINAL,DX;读通信线状态字TESTAL,20H;检测发送保持寄存器是否为空JNZKBOARD;已空,转发送程序KBOARD:MOVAH,0BHINT21H;查询有无键盘输入,响应Ctrl_CCMPAL,0JZKBOARD;无字符输入,循环等待MOVAH,0;有字符输入则读取字符INT16H;读取键入的一个字符,无回显,响应Ctrl_CMOVDX,3F8HOUTDX,AL;将字符写入到发送保持寄存器CMPAL,1BH;ESC的ASCII码为0011011BJZDONE1;输入为ESCa,则退出程序返回DOS同时对方也返回DOS第-9-页共13页班级:学号:姓名:日

16、期:PUSHAXMOVAH,02HMOVDL,ALINT21H;DOSPOPAXCMPAL,0DH;JNZSTATUE;MOVDL,0AH;MOVAH,02HINT21H;JMPSTATUE;DONE1:POPDX;出栈POPCX功能调用,显示输一个字符继续检查是否是ENTEF®,ENTER勺ASCII码为0001101B如果不是ENTER1则继续输入下一个字符换行的ASCII码为00001010B显示换行换行后继续输入下一个字符POPBXPOPDSPOPAXRETSENTCHARENDPRECEM:接收信息START1:;通信速率选用4800波特,无校验传输,一桢字符有8个数据位,

17、2个停止位MOVAL,80HMOVDX,3FBHOUTDX,AL;80H->通信线控制寄存器,使寻址位为1MOVDX,3F9HMOVAL,0OUTDX,AL;除数高8位->除数寄存器高8位MOVDX,3F8HMOVAL,18HOUTDX,AL;除数低8位->除数寄存器低8位MOVAL,00000111BMOVDX,3FBHOUTDX,AL;把D7=0的命令字写入通信线控制寄存器,确定一帧数据的格式MOVDX,3F9HMOVAL,0OUTDX,AL;查询方式,置中断允许命令字为0CALLRECEIVE1MOVAX,4C00H;返回DOSINT21HRECEIVE1PROCNEA

18、RPUSHAXPUSHBX第-10-页共13页班级:学号:姓名:日期:PUSHDXDISPMESG4;屏幕显示信息,接收到得字符串REC:MOVDX,3FDHINAL,DX;读通信线路状态寄存器TESTAL,1EH;判断接收是否有错JNZERROR1;有错,则转出错处理TESTAL,01H;无错,检查接收数据是否准备好JNZRECEIVE2;准备好转接收程序JMPREC;继续读取下个数RECEIVE2:MOVDX,3F8HINAL,DX;从输入缓冲寄存器读数据ANDAL,7FH;传送标准ASCII码PUSHAX;保存数据MOVDL,ALMOVAH,02HINT21H;屏幕显示该数据POPAX;恢复数据CMPAL,1BH;判断是否为ESC建JZDONE2;如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论