通信程序课程设计-PC机双机串行通信

上传人:lis****210 文档编号:168288677 上传时间:2022-11-09 格式:DOCX 页数:8 大小:139.69KB
返回 下载 相关 举报
通信程序课程设计-PC机双机串行通信_第1页
第1页 / 共8页
通信程序课程设计-PC机双机串行通信_第2页
第2页 / 共8页
通信程序课程设计-PC机双机串行通信_第3页
第3页 / 共8页
点击查看更多>>
资源描述
串行通信程序课程设计本串行通信程序利用汇编语言通过BIOS中断调用和DOS功能调用实现PC机双机串 行通信。其中,上位机和下位机串行口均为辅串口 COM2 (口地址为2FXH),对外用9针 连接器与令一台PC机连接;BIOS通过TNT 14H” 4个中断服务子程序,分别完成串口初 始化编程、发送一帧数据、接受一帧数据以及测试通信线状态。本程序分为PC机串口自动 测试程序(目的是测试串口好坏)和PC机全双工双机通信程序两个部分。一. PC机串口自动测试对 PC 机主串口进行外环自动测试,要求:(1) 调用 BIOS 通信软件,采用查询方式编程,将下列测试电文10行由主串口发出, 经外环连接线再由主串口接受送屏幕显示。测试电文如下:THE QUICK BROWN FOX JUMPS OVER LAZY DOG(2) 通信速率为 1200波特,一帧字符有8 个数据位, 1 个停止位,无校验。1. 设计思路由于调用BIOS通信软件发送和接受数据,因此主串口 RS-232C连接器必须按图1 (a) 连线。(a)有联络线自发自收(b)有联络线全双工通信图 1 串行通信 RS-232C 连接器连线方式测试电文译为:狡猾的褐色狐狸越过懒狗的背。它是国际电报通信常用的测试电文,电 文包含了 26 个字母,又称狐狸电文。在一条报路上长时间的循环发送这条电文,接收方统 计在一定时间内的差错率,即可知道报路的通信质量。2. 程序框图程序框图如图 2 所示。图 2 PC 机串口自动测试程序框图3. 程序清单DATASEGMENTTEXTDBTHE QUICK BROWN FOX JUMPS OVER LAZY DOG,0DH,0AHLLLEQU $TEXTERRORDBCOM2 BAD!,0DH,0AH, $DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATABEG:MOVAX, DATAMOVDS, AXCALLI8250;辅串口初始化MOVCH,10;电文行数送 CHAGAIN:MOVCL,LLL;电文长度送 CLMOVBX, OFFSET TEXTSEND:MOVAL, BX;取数据MOVAH, 1;BIOS 调用MOVDX, 1INT14H;发送一个数据TESTAH, 80H;发送成功否?JNZDISPERR;否,转出错处理RECEIVE:MOVAH, 2;BIOS 调用MOVDX, 1INT14H;接受一个数据TESTAH, 80H;接受成功否?JNZDISPERR;否,转出错处理DISP:MOVAH, 2MOVDL, ALINT21H;接受字符送屏幕显示INCBXDECCL;电文长度计数JNZSENDDECCH;行计数JNZAGAINJMPEXITDISPERR:MOVAH, 9MOVDX, OFFSET ERRORINT21H;显示出错信息EXIT:MOVAH, 4CHINT21H;返回 DOSI8250PROCMOVAX, 0083HMOVDX, 1INT14HRETI8250ENDPCODEENDSENDBEG;波特率1200,无校验,8 位;使用辅串口如果辅串口是好的,程序执行后自动屏显10行测试电文,否则将屏显“COM2 BAD!”。二. PC机全双工双机通信利用汇编语言进行编程,实现两台计算机间数据的异步串行发送和接受,要求:(1)上位机接收键盘输入的a、b两个参数,将参数的值通过计算机的串行口传输到下 位机,同时接受下位机的计算结果;下位机接受到a、b值后,计算y = ax+b,同时将结果 传输到上位机。(2) 上位机在线修改a、b的值,下位机能随之相应。(3) 界面能够清晰的反映操作步骤和操作结果。1. 设计思路( 1)数据发送采用查询方式,数据接受采用中断方式,对端口直接操作编写通信程序。(2)上位机传输a、b两个参数时,回车后方为有效参数。( 3) Esc 为通信结束字符,当双方都键入 Esc 的时候结束通信,各自返回 DOS 。通信结 束时,双方不可能同时按下Esc键,必然是有先有后,反送方必须保证通信字符能够完整的 传送到对方,这些都必须在程序中考虑进去。( 4 )通信速率2400波特,一帧字符有8个数据位, 1个停止位,无校验。2. 程序框图 程序框图如图 3 所示。图 3 PC 机全双工双机通信从机程序框图3. 从机程序清单DISPACRO MOV MOV INT ENDMVARAH, 9DX, OFFSET VAR21HDATASEGMENT0LD0BDD?MESG1DBPlease wait a minute., 0DH, 0AH, $MESG2DB Communication line bad!, 0DH, 0AH, $MESG3DB Ok! , 0DH, 0AH, $ TTTDD1000000DATAENDSCODESEGMENTBUFDB?ASSUMES: CODE, DS: DATABEGMOVAX, DATAMOVDS, AXCLICALLI8250;8250 初始化CALLI8259;开放辅串口中断CALLRW0B;置换 0BH 型中断向量STIMOVSI, 10AGA:DISPMESG1;显示等待信息MOVDX, 2FEH;读MODEM状态寄存器INAL, DXANDAL, 00110000BCMPAL,30H;DSR、CTS引脚为逻辑0?JEOK;联络成功,转 OKCALLDELAY;延时 1sDECSIJNZAGADISPMESG2;显示通信线路坏JMPRETURNOK:DISPMESG3;显示 OKSCANT:MOVDX, 2FDH;读通信线状态寄存器INAL, DXTESTAL, 20H;发送保持寄存器空闲否?JZSCANT;否,转 SCANTMOVAH, 1INT16H;有键入否?JZSCANT;否,转 SCANTMOVAH, 0INT16H;取键入字符x的ASCII送ALSUBAL, 60H;将x变换为十六进制数MULCL;计算 a*xADDAL, CH;计算 y=ax+bADCAX, 3030H;将y变换为ASCII码MOVDX, 2F8HOUTDX, AL;发送 y 的低字节MOVAL, AHOUTDX, AL;发送 y 的高字节CMPAL, 1BH;是 Esc 否?JNZSCANT;否,转 SCANTWWW:MOVDX, 2FDHINAL, DX;读通信状态寄存器TESTAL, 40H;发送移位寄存器是否为空?JZWWW;否,转 WWWLAST:CMPCS: BUF, 1BH;受到对方 Esc 否?JNZLAST;否,转 LASTRETURN:CALLRESETMOVAH, 4CHINT21HRECEIVE PROCPUSHAX;保护现场PUSHDX;保护现场MOVDX, 2F8HINAL, DX;接受数据MOVCX: BUF, AL;送 BUF 单元保存NEXT:MOVAH, 0EHINT10H;屏幕显示CMPAL, 0DH;是否回车?JNEEXIT;否,转 EXITMOVCH, CL;是,参数 a 、 b 顺次MOVCL, AL;存入 CL、CHMOVAL, 0AHINT10H;补送换行EXIT:MOVAH, 20H;中断结束命令OUT20H, AL;送 8259 命令寄存器POPDX;恢复现场POPAX;恢复现场IRET;中断返回RECEIVE ENDPI8250PROCMOVAX, 00A3HMOVDX, 1INT14HMOVDX, 2F9HMOVAL, 01HOUTDX, AL;允许接收中断MOVDX, 2FCHMOVAL, 00001011BOUTDX, AL;令RTS、DTR端为逻辑0RETI8250ENDPI8259PROC;开放辅串口中断INAL, 21HANDAL, 11110111BOUT21H, ALRETI8259ENDPRW0BPROC;置换 0BH 型中断向量MOVAX, 350HBHINT21HMOVWORD PTR 0LD0B, BXMOVWORD PTR 0LD0B+2, ESPUSHDSMOVAX, CODEMOVDS, AXMOVDX, OFFSET RECEIVEMOVAX, 250BHINT21HPOPDSRETRW0BENDPRESETPROC;恢复 0BH 型中断向量MOVDX, WORD PTR 0LD0BMOVDS, WORD PTR 0LD0B+2MOVAX, 250BHINT21HMOVDX, 2FCHMOVAL, 0OUTRETDX, ALRESETENDPDELAYPROCMOVAH,86HMOVCX, WORD PTR TTT+2MOVDX, WORD PTR TTTINT15HRETDELAYENDPCODEENDSENDBEG主机程序与从机程序类似,这里不在螯述。;令RTS、DTR端为逻辑1;延时 1s4. 程序分析进行通信联络要采取两项措施:其一,在8250初始化子程序中,响MODEM控制寄存器写入命令字时,令D位为1,D0位为1,从而使RS-232C的RTS端子、DTR端子输出 逻辑 0,通知对方本端已经做好了数据发送和数据接受的准备工作;其二,对方在程序执行 后,读取MODEM状态寄存器的内容,检查D5、D4位,这两位都为1,说明线路畅通,可 以运行通信程序。三. 调试步骤程序调试要分两步进行,首先在单机上调试,按照图1 (a)连线,使辅串口具有自发自 收的外部环境,在这个环境下调试PC机串口自动测试程序”,调试成功后,再在双机连同 的环境下调试“PC机全双工双机通信程序”双机连通实验时,先在一端执行程序,令一端 暂不运行,以便观察屏幕的错误信息。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!