ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:104.25KB ,
资源ID:7551410      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7551410.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新微机串口通信内环自检.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

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

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

3、调用BIOS通信软件),完成RS-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无法提出中断请求,而且引脚/TR

4、S、/CTS、/DTR、/DSR在芯片内部似乎是被“切断”了。有鉴于此,当8350设置为内环自检方式的时候,只能采用查询方式,而且只能采用对端口直接操作的编程手段,完成数据的发送和接受。【程序流程图】(直接访问端口寄存器,如图3-19) (2)双机通信用串口电缆将两台机算机的COM2连接起来,把计算机设置成空MODEM方式,并为此编制了两个汇编语言程序:其一为数据发送程序;其二为数据接收程序。为了确保每个字符发送出去,并且被接收,发送接收双方的波特率设置一致,并且均采取查询方式进行下一步操作。接收数据程序只需执行一次,即驻留在内存中,此后,只要号计算机有数据要发送,则号机随时接收并显示在屏幕上

5、。课 程 设 计 说 明 书5设计详细说明(包括硬件原理图、流程图) 续2【程序流程图】(如图3-20、3-21、3-22) 课 程 设 计 说 明 书6程序代码 源程序:DISP MACRO VAR ;定义宏,完成字符串的输出 MOV AH,9 MOV DX,OFFSET VAR INT 21H ENDMDATA SEGMENTTEXT DB THE QUICK BROWN FOX JUMPS OVER LAZY DOG, 0DH, 0AHLLL EQU $-TEXT ;电文长度-LLLERROR DB COM BAD !, 0DH, 0AH, $ N EQU 24 DUP( )MESG1

6、DB 0DH,0AH DB N, MENU ,0DH,0AH DB N, -,0DH,0AH DB N,| | ,0DH,0AH DB N,| 1.COM2 INTERNAL LOOP | ,0DH,0AH DB N,| 2.SHUANG JI | ,0DH,0AH DB N,| 3.EXIT | ,0DH,0AH DB N,| |,0DH,0AH DB N, -,0DH,0AH DB N, CHOICE(1,2,3):$ ,0DH,0AHMESG2 DB 0DH,0AH DB N, MENU ,0DH,0AH DB N, -,0DH,0AH DB N,| |,0DH,0AH DB N,| 1

7、.SENT |,0DH,0AH DB N,| 2.RECIEVE |,0DH,0AH DB N,| |,0DH,0AH DB N, - ,0DH,0AH DB N, CHOICE(1,2):$ ,0DH,0AH MESG3 DB 0DH,0AH,PLEASE INPUT THE MESSEGE:,0DH,0AH,$MESG4 DB 0DH,0AH,THE MESSAGE YOU INPUT ARE:,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXLAST: DISP MESG1

8、;显示操作信息,选择是内环自检还是双机通信 MOV AH,01H INT 21H ;等待键入一个字符,有回显,响应Ctrl_C CMP AL,1 JE NEXT1 ;如果输入1,转测辅串口内环自检 CMP AL,2 JE NEXT2 ;如果输入2,转双机通信 CMP AL,3 JNE LAST JMP EXIT ;测试结束,退出;PC机辅串口的内环自检NEXT1: CALL I8250 ;辅串口初始化AGAIN: MOV CX, LLL ;电文长度CX MOV BX, OFFSET TEXT ;BX指向TEXT的首地址SCANT: MOV AH, 01H INT 16H ;查询键盘缓冲区 JN

9、Z EXIT ;有键入,转退出 MOV DX, 2FDH IN AL,DX ;从DX指向的端口中读一个字节到AL TEST AL,20H ;检查发送保持寄存器是否空闲 JZ SCANT ;若不空闲,转SCANT输入检查 MOV DX, 2F8H ;发送保持寄存器辅串口地址-DX MOV AL, BX OUT DX,AL ;将字符送辅串口数据寄存器 MOV SI, 0 SCANR: MOV DX, 2FDH IN AL, DX ;读取通信线状态字 TEST AL,00011110B ;检查有无错误标志 JNZ DISPERR ;有错,显示出错信息 TEST AL,01H ;无错,检查接收数据是否

10、准备好 JNZ RECEIVE ;准备好,转接收程序 DEC SI JNZ SCANR JMP DISPERR RECEIVE: MOV DX, 2F8H ;接收缓冲器辅串口地址-DX IN AL,DX ;接收一个数据 MOV AH, 2 MOV DL, AL INT 21H ;送屏幕显示一个字符 INC BX LOOP SCANT ;一个电文长度计数 JMP AGAIN ;重复内环自检DISPERR: DISP ERROR ;显示出错信息 EXIT: MOV AH, 4CH INT 21H ;返回DOSI8250 PROC MOV AX, 00C7H ;波特率4800,无校验传输,2个停止位

11、,一桢字符有8个数据位,即为11000111B MOV DX,1 ;对辅串口进行初始化 INT 14H MOV DX, 2FCH ;MODEM控制寄存器辅串口地址-DX MOV AL, 00010000B ;D4=1,8250工作在内部自环方式 OUT DX,AL RETI8250 ENDP;双机通信NEXT2: DISP MESG2 ;显示操作信息,发送还是接收信息 MOV AH,1 INT 21H ;等待键入一个字符,有回显,响应Ctrl_C CMP AL,1 JE SENDM ;当输入为1时,转发送信息 CMP AL,2 JE RECEM ;当接受为2时,转接收信息 JMP NEXT2S

12、ENDM: ;发送信息 MAIN: ;对8250主串口进行初始化。通信速率选用4800波特,无校验传输,一桢字符有8个数据位,2个停止位 MOV AL,80H MOV DX,3FBH OUT DX,AL ;80H-通信线控制寄存器,使寻址位为1 MOV DX,3F9H MOV AL,0 OUT DX,AL ;除数高8位-除数寄存器高8位 MOV DX,3F8H MOV AL,18H OUT DX,AL ;除数低8位-除数寄存器低8位 MOV AL,00000111B ;把命令字写入通信线控制寄存器 MOV DX,3FBH OUT DX,AL MOV DX,3F9H MOV AL,0 OUT D

13、X,AL ;查询方式,置中断允许命令字为0 WAIT0: MOV AH,0BH INT 21H ;查询有无键盘输入,响应Ctrl_C CMP AL,0 ;AL=0时无输入,AL=0FFH时有输入 JE WAIT0 ;当无输入时,返回等待 MOV AH,0 INT 16H ;读取键入的一个字符,无回显,响应Ctrl_C,无键入则等待 PUSH AX MOV AH,02H MOV DL,AL INT 21H ;DOS功能调用,显示一个字符,DL=待显示的ASCII码 POP AX CALL SENTCHAR JMP WAIT0 ;传输字符;从本机向对方发送字符串,同时在两个屏幕上都显示;按回车键,

14、则双方都换行,按ESC键,双方都退出。SENTCHAR PROC NEAR PUSH AX PUSH DS MOV AX,DATA MOV DS,AX PUSH BX PUSH CX PUSH DX DISP MESG3 ;显示提示信息 STATUE: ;读取通信线路状态,查询工作 MOV DX,3FDH IN AL,DX ;读通信线状态字 TEST AL,20H ;检测发送保持寄存器是否为空 JNZ KBOARD ;已空,转发送程序KBOARD: MOV AH,0BH INT 21H ;查询有无键盘输入,响应Ctrl_C CMP AL,0 JZ KBOARD ;无字符输入,循环等待 MOV

15、AH,0 ;有字符输入则读取字符 INT 16H ;读取键入的一个字符,无回显,响应Ctrl_C MOV DX,3F8H OUT DX,AL ;将字符写入到发送保持寄存器 CMP AL,1BH ;ESC的ASCII码为0011011B JZ DONE1 ;输入为ESC键,则退出程序返回DOS,同时对方也返回DOS PUSH AX MOV AH,02H MOV DL,AL INT 21H ;DOS功能调用,显示输一个字符 POP AX CMP AL,0DH ;继续检查是否是ENTER键,ENTER的ASCII码为0001101B JNZ STATUE ;如果不是ENTER键则继续输入下一个字符

16、MOV DL,0AH ;换行的ASCII码为00001010B MOV AH,02H INT 21H ;显示换行 JMP STATUE ;换行后继续输入下一个字符DONE1: POP DX ;出栈 POP CX POP BX POP DS POP AX RETSENTCHAR ENDPRECEM: ;接收信息START1: ;通信速率选用4800波特,无校验传输,一桢字符有8个数据位,2个停止位 MOV AL,80H MOV DX,3FBH OUT DX,AL ;80H-通信线控制寄存器,使寻址位为1 MOV DX,3F9H MOV AL,0 OUT DX,AL ;除数高8位-除数寄存器高8位

17、 MOV DX,3F8H MOV AL,18H OUT DX,AL ;除数低8位-除数寄存器低8位 MOV AL,00000111B MOV DX,3FBH OUT DX,AL ;把D7=0的命令字写入通信线控制寄存器,确定一帧数据的格式 MOV DX,3F9H MOV AL,0 OUT DX,AL ;查询方式,置中断允许命令字为0 CALL RECEIVE1 MOV AX,4C00H ;返回DOS INT 21HRECEIVE1 PROC NEAR PUSH AX PUSH BX PUSH DX DISP MESG4 ;屏幕显示信息,接收到得字符串 REC: MOV DX,3FDH IN A

18、L,DX ;读通信线路状态寄存器 TEST AL,1EH ;判断接收是否有错 JNZ ERROR1 ;有错,则转出错处理 TEST AL,01H ;无错,检查接收数据是否准备好 JNZ RECEIVE2 ;准备好转接收程序 JMP REC ;继续读取下个数RECEIVE2: MOV DX,3F8H IN AL,DX ;从输入缓冲寄存器读数据 AND AL,7FH ;传送标准ASCII码 PUSH AX ;保存数据 MOV DL,AL MOV AH,02H INT 21H ;屏幕显示该数据 POP AX ;恢复数据 CMP AL,1BH ;判断是否为ESC键 JZ DONE2 ;如果是则退出DOS CMP AL,0DH ;判断是否为回车符 JNZ REC ;如果不是ENTER键,则继续循环 MOV DL,0AH MOV AH,02H INT 21H ;输出换行 JMP REC ;循环,检测下个数ERROR1: MOV DX,3F8H IN AL,DX ;读出接收有误的数据,丢掉 MOV DL,? MOV AH,02H INT 21H ;显示问号 JMP REC ;继续查询DONE2: POP DX POP BX POP AX RETRECEIVE1 ENDPCODE ENDS END START课 程 设 计 说 明 书7主要参考文献:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1