微机串口通信内环自检.docx

上传人:doc321 文档编号:12902013 上传时间:2021-12-07 格式:DOCX 页数:13 大小:134.55KB
返回 下载 相关 举报
微机串口通信内环自检.docx_第1页
第1页 / 共13页
微机串口通信内环自检.docx_第2页
第2页 / 共13页
微机串口通信内环自检.docx_第3页
第3页 / 共13页
微机串口通信内环自检.docx_第4页
第4页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《微机串口通信内环自检.docx》由会员分享,可在线阅读,更多相关《微机串口通信内环自检.docx(13页珍藏版)》请在三一文库上搜索。

1、等级评定:课程设计报告题目:微机串口通信环自检系(院):专业:软件工程学生:学号:起迄日期:2008年6月8日6月19日课程设计地点:硬件综合室、多媒体技术室设计评语: (评阅教师填写 )评阅人:年月日课程设计说明书1课程设计题目:微机串口通信环自检2课程设计容:对 PC机辅串口进行环自动测试,并实现两台PC机之间的通信。3课程设计目的:了解 PC机串口的工作原理,掌握PC机串口自动测试的编程方法。课程设计说明书4课程设计要求:( 1)采用查询方式将下列测试电文送到辅串口发送器,经过部自环接受,显示在屏幕上,通信速率选用 4800 波特,无校验传输,一帧字符有 8 个数据位, 2 个停止位,按

2、下任意键时测试结束。测试电文如下:THE QUICK BROWN FOX JUMPS OVER LAZY DOG(2)用一条串口线将两台计算机直接相连,实现两台计算机近距离通信。在一台PC 机键入字符,从 8250 的发送端发送给另一台 PC 机,另一台 PC 机的 8250 的接收端接收,然后在屏幕上显示出来。5设计详细说明(包括硬件原理图、流程图)利用微机系统串行口设计串行通信程序的时候,应首先根据课题要求(自发自收、单工通信还是双工通信)和欲采用的编程手段(对端口直接操作还是调用BIOS 通信软件),完成 RS-232 连接线的连接,创建正确的串行通信外部环境。8250 初始化编程的步骤

3、: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 设置为环自检方式的时候,只能采用查询方式,而且只能采用对端口直接操作的编程手段,完成数据的发送和接受。【程序流程图】(直接访问端口寄存器,如图3-19 )开始辅串口初始化送电文长度有键按下?YN接收状态字N发送保持寄存器空闲?Y取数据发送接收状态字接收数据N准备好?Y接收数据送屏幕显示BX+1N一桢送完了吗Y图3-19程序参考流程图( 2)双机通信SI-1NSI=0?Y显示出错信息返回 DOS用串口电缆将两台机算机的COM2连接起来,把计算机设置成空MODEM方式,并为此编制了两个汇编语言程序:其一为数据发送程序;其二为数据接收程序。为了确保每个字符发送

5、出去,并且被接收,发送接收双方的波特率设置一致,并且均采取查询方式进行下一步操作。接收数据程序只需执行一次,即驻留在存中,此后,只要号计算机有数据要发送,则号机随时接收并显示在屏幕上。课程设计说明书5设计详细说明(包括硬件原理图、流程图)续 2【程序流程图】(如图 3-20 、3-21 、3-22 )开始程序初始初始化 8250,设定传输率显示提示信息N有键入 ?YY选 1?调用发送程序NY选 2?调用接受程序N提示出错图 3-20 双机通信开始开始保护原寄存器内容保护原寄存器内容显示接收信息显示提示信读状态寄存器 ,发送器为空?接收有错 ?NYN有键入 ?接收到数据?读键盘输入输入缓冲器处读

6、数发送并显示显示接收内容YY是 esc 键?是Nesc?N是 enter?是 enter?YNNY恢复原寄存器内容换 行返回恢复原寄存器内容图 3-21发送程序返回图 3-22接受程序课程设计说明书6程序代码源程序:DISP MACRO VAR 定;义宏 , 完成字符串的输出MOV AH,9MOV DX,OFFSET VARINT 21HENDMDATA SEGMENTTEXT DB'THE QUICK BROWN FOX JUMPS OVER LAZY DOG', 0DH, 0AHLLL EQU $-TEXT ; 电文长度 ->LLL ERROR DB 'COM

7、 BAD !', 0DH, 0AH, '$' N EQU 24 DUP(' ')MESG1 DB 0DH,0AHDB N,'MENU',0DH,0AHDB N,'-',0DH,0AHDB N,'| ',0DH,0AHDB N,'|1.COM2 INTERNAL LOOP | ',0DH,0AHDB N,'|2.SHUANG JI| ',0DH,0AHDB N,'|3.EXIT| ',0DH,0AHDB N,'|',0DH,0AHDB N,

8、9;-',0DH,0AHDB N,'CHOICE(1,2,3):$',0DH,0AHMESG2 DB 0DH,0AHDB N,'MENU',0DH,0AHDBN,'-',0DH,0AHDB N,'|',0DH,0AHDB N,'|1.SENT|',0DH,0AHDB N,'|2.RECIEVE|',0DH,0AHDB N,'|',0DH,0AHDB N,'-',0DH,0AHDB N,'CHOICE(1,2):$',0DH,0AHMESG3 D

9、B 0DH,0AH,'PLEASE INPUT THE MESSEGE:',0DH,0AH,'$' MESG4 DB 0DH,0AH,'THE MESSAGE YOU INPUT ARE:',0DH,0AH,"$"DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLAST:DISP MESG1 ;显示操作信息, 选择是环自检还是双机通信MOV AH,01HINT 21H ;等待键入一个字符,有回显,响应Ctrl_CCMP AL,'1

10、'JE NEXT1 ;如果输入1,转测辅串口环自检CMP AL,'2'JE NEXT2 ;如果输入2,转双机通信CMP AL,'3'JNE LASTJMP EXIT ;测试结束, 退出;PC 机辅串口的环自检NEXT1:CALL I8250;辅串口初始化AGAIN:MOV CX, LLL ;电文长度 CXMOV BX, OFFSET TEXT ;BX指向 TEXT的首地址SCANT:MOV AH, 01HINT 16H;查询键盘缓冲区JNZ EXIT ;有键入,转退出MOV DX, 2FDHIN AL,DX;从 DX指向的端口中读一个字节到TEST AL

11、,20H ;检查发送保持寄存器是否空闲ALJZSCANT ;若不空闲,转 SCANT输入检查MOV DX, 2F8H ; 发送保持寄存器辅串口地址 ->DX MOV AL, BXOUT DX,AL;将字符送辅串口数据寄存器MOV SI, 0SCANR:MOV DX, 2FDHINAL, DX;读取通信线状态字TEST AL,00011110B ; 检查有无错误标志JNZ DISPERR; 有错,显示出错信息TEST AL,01H ; 无错,检查接收数据是否准备好JNZ RECEIVE; 准备好,转接收程序DEC SIJNZ SCANRJMP DISPERRRECEIVE:MOV DX,

12、2F8H ; 接收缓冲器辅串口地址 ->DX IN AL,DX ; 接收一个数据MOV AH, 2MOV DL, ALINT21H; 送屏幕显示一个字符INC BXLOOP SCANT; 一个电文长度计数JMP AGAIN ; 重复环自检DISPERR:DISP ERROR ;显示出错信息EXIT:MOV AH, 4CHINT 21H;I8250PROCMOVAX, 00C7H8 个数据位,即为11000111BMOV DX,1;INT 14H返回 DOS; 波特率 4800,无校验传输,对辅串口进行初始化2 个停止位,一桢字符有MOV DX, 2FCH ;MODEM控制寄存器辅串口地址

13、 ->DXMOV AL, 00010000B ;D4=1,8250工作在部自环方式OUT DX,ALRETI8250ENDP; 双机通信INT 21H ;等待键入一个字符,有回显,响应Ctrl_CCMP AL,'1'JE SENDM ;当输入为 1 时,转发送信息CMP AL,'2'JE RECEM ;当接受为 2 时,转接收信息JMP NEXT2SENDM: ; 发送信息MAIN: ; 对 8250 主串口进行初始化。通信速率选用4800 波特,无校验传输,一桢字符有 8 个数据位, 2 个停止位MOV AL,80HMOV DX,3FBHOUT DX,A

14、L;80H->通信线控制寄存器 , 使寻址位为 1MOV DX,3F9HMOV AL,0OUT DX,AL ;除数高 8 位 -> 除数寄存器高 8 位MOV DX,3F8HMOV AL,18HOUT DX,AL;除数低 8 位-> 除数寄存器低 8 位MOV AL,00000111B ;把命令字写入通信线控制寄存器MOV DX,3FBHOUT DX,ALMOV DX,3F9HMOV AL,0OUT DX,AL;查询方式 , 置中断允许命令字为0WAIT0:MOV AH,0BHINT21H;查询有无键盘输入,响应Ctrl_CCMPAL,0;AL=0时无输入, AL=0FFH时

15、有输入JEWAIT0 ;当无输入时,返回等待MOV AH,0INT 16H;读取键入的一个字符,无回显,响应Ctrl_C ,无键入则等待PUSH AXMOV AH,02HMOV DL,ALINT21H ;DOS功能调用,显示一个字符,DL=待显示的 ASCII 码POP AXCALL SENTCHARJMPWAIT0; 传输字符; 从本机向对方发送字符串,同时在两个屏幕上都显示; 按回车键,则双方都换行,按 ESC键,双方都退出。PUSH AXPUSH DSMOVAX,DATAMOVDS,AXPUSH BXPUSH CXPUSH DXDISP MESG3 ;显示提示信息STATUE: ;读取通

16、信线路状态,查询工作MOV DX,3FDHIN AL,DX;读通信线状态字TEST AL,20H ;检测发送保持寄存器是否为空JNZ KBOARD ;已空,转发送程序KBOARD:MOV AH,0BHINT 21H ;查询有无键盘输入,响应Ctrl_CCMP AL,0JZ KBOARD ;无字符输入,循环等待MOV AH,0;有字符输入则读取字符INT 16H ;读取键入的一个字符,无回显,响应Ctrl_CMOV DX,3F8HOUT DX,AL;将字符写入到发送保持寄存器CMP AL,1BH ;ESC的 ASCII 码为 0011011BJZ DONE1 ;输入为 ESC键,则退出程序返回D

17、OS,同时对方也返回DOSPUSH AXMOV AH,02HMOV DL,ALINT 21H ;DOSPOP AXCMP AL,0DH ;JNZ STATUE ;MOV DL,0AH ;MOV AH,02HINT 21H;JMP STATUE ;DONE1:POP DX ;出栈POP CXPOP BXPOP DSPOP AXRETSENTCHAR ENDP功能调用,显示输一个字符继续检查是否是ENTER键, ENTER的 ASCII如果不是 ENTER键则继续输入下一个字符换行的 ASCII 码为 00001010B显示换行换行后继续输入下一个字符码为0001101BRECEM: ;接收信息S

18、TART1: ; 通信速率选用4800 波特,无校验传输,一桢字符有8 个数据位,2个停止位MOV AL,80HMOV DX,3FBHOUT DX,AL ;80H->通信线控制寄存器 , 使寻址位为 1MOV DX,3F9HMOV AL,0OUT DX,AL ;除数高 8 位-> 除数寄存器高 8 位MOV DX,3F8HMOV AL,18HOUT DX,AL;除数低 8 位 -> 除数寄存器低 8 位MOV AL,00000111BMOV DX,3FBHOUT DX,AL;把 D7=0 的命令字写入通信线控制寄存器, 确定一帧数据的格式MOV DX,3F9HMOV AL,0

19、OUT DX,AL;查询方式 , 置中断允许命令字为0CALL RECEIVE1MOV AX,4C00H ;返回DOSINT 21HRECEIVE1 PROC NEARPUSH AXPUSH BXPUSH DXDISP MESG4 ;屏幕显示信息 , 接收到得字符串REC:MOV DX,3FDHIN AL,DX ;读通信线路状态寄存器TEST AL,1EH ;判断接收是否有错JNZ ERROR1 ;有错,则转出错处理TEST AL,01H ;无错,检查接收数据是否准备好JNZ RECEIVE2 ;准备好转接收程序JMP REC;继续读取下个数RECEIVE2:MOV DX,3F8HIN AL,

20、DX ;从输入缓冲寄存器读数据AND AL,7FH ;传送标准 ASCII 码PUSH AX ;保存数据MOV DL,ALMOV AH,02HINT 21H;屏幕显示该数据POP AX ;恢复数据CMP AL,1BH ;判断是否为 ESC键JZ DONE2 ;如果是则退出DOSCMP AL,0DH ;判断是否为回车符JNZ REC;如果不是 ENTER键,则继续循环MOV DL,0AHMOV AH,02HINT 21H;输出换行JMP REC ;循环,检测下个数ERROR1:MOV DX,3F8HIN AL,DX ;读出接收有误的数据,丢掉MOV DL,'?'MOV AH,02HINT 21H ;显示问号JMP REC ;继续查询DONE2:POP DXPOP BXPOP AXRETRECEIVE1 ENDPCODE ENDSEND START课程设计说明书7主要参考文献:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1