微机原理与接口串行通信.doc_第1页
微机原理与接口串行通信.doc_第2页
微机原理与接口串行通信.doc_第3页
微机原理与接口串行通信.doc_第4页
微机原理与接口串行通信.doc_第5页
免费预览已结束,剩余36页可下载查看

下载本文档

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

文档简介

课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位题 目: 编写串行通信程序 初始条件:用汇编语言编写程序,实现两台计算机之间的通信。两台计算机之间通过RS232连接。要求完成的主要任务: 使两台pc机通过串口互联,每一台的用户均可在自己的屏幕上不同区域看到自己和对方由键盘输入的字符(并由不同的颜色加以区分);若一方敲入数字(1,2,3.8,9),另一方的机器将其理解为相应的音符发出声音;一方退出该程序,能返回DOS状态,而另一方也能收到相应的信息;程序能自动将双方传送的信息自动保存在文件中(分为本机和对方两个文件);有相应的程序可将已记录的文件内容显示出来,并将其中的数字作为音符播放;撰写设计说明书及调试心得。时间安排:2009年1月5日2009年1月16日下午17:30分指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日 目录1 设计任务及要求11.1 设计题目11.2 设计要求11.3 设计分析12程序设计及说明22.1 宏定义和宏调用42.2 显示程序设计42.3数字转化为音乐的程序设计52.4 保存文件的程序设计52.5 打开文件程序设计72.6 接收程序的设计82.7 发送程序的程序设计92.8 换行程序的设计103 程序调试过程113.1 程序界面的调试113.2 发送程序、接收程序、保存程序的调试123.3 打开文件,发声程序的调试144 设计总结154.1 设计优缺点分析154.2 心得体会15参考文献17附录:18摘要本文是基于汇编语言的串口通信程序的设计,通过RS-232串口连接,实现PC机之间的串行通信。在此基础上将接收和发送的程序在不同的区域以不同颜色的字体显示出来。如果传送的字符中含有数字,则将数字转化为相应音符并发出声音。接收和发送文件的同时要实现自动保存到不同的文件中。传送完毕之后,可以再次打开保存的文件,显示接收和发送的数据或字符串。程序设计过程中大量使用了子程序调用和宏定义、宏调用等方式,已达到简化的目的。关键字: 模块化设计 RS-232串口 宏定义 II编写串行通信程序1 设计任务及要求 1.1 设计题目 用汇编语言编写程序,实现两台计算机之间的通信。两台计算机之间通过RS232连接 。 1.2 设计要求使两台pc机通过串口互联,每一台的用户均可在自己的屏幕上不同区域看到自己和对方由键盘输入的字符(并由不同的颜色加以区分);若一方敲入数字(1,2,3.8,9),另一方的机器将其理解为相应的音符发出声音;一方退出该程序,能返回DOS状态,而另一方也能收到相应的信息;程序能自动将双方传送的信息自动保存在文件中(分为本机和对方两个文件);有相应的程序可将已记录的文件内容显示出来,并将其中的数字作为音符播放;撰写设计说明书及调试心得 1.3 设计分析 程序设计采用模块化的思想,采用宏定义、宏调用的方式来实现不同功能,宏定义的方式可以减少程序的书写,提高程序的执行速度。设计要求主要是实现两台PC之间的串行通信程序,可以通过串行通信接口RS-232来实现通信。要求在屏幕不同的区域看到自己发出和接收的字符,可以通过调用int 10 BOIS中断并设定不同的显示颜色来实现。键入数字转化为相应的音符发音,可以通过查表把数字转化成相应的发音频率,再通过发音程序,输出相应的响铃。自动保存发送和接收的程序可以通过调用保存程序实现。打开、发送和接收的文件也可以通过调用打开文件的子程序实现。TxDRxDGNDTxDRxDGNDA机的RS-232B机的RS-232图1-1 两台PC机之间的串口三线制连接利用PC机的RS-232串口可以很方便的实现两台机器之间的信息互传,在实际使用RS-232时,可以采用三线制,即发送数据线TxD、接收数据线RxD及信号地线GND。连接时,双方的的地线直接相连,收发数据线交叉相连。通过以上的分析,可以确定该设计主要实现发送、接收、显示、响铃、保存和打开文件及退出这几种功能。2程序设计及说明通过以上的分析,可以确定该设计主要实现发送、接收、显示、发声、保存和打开文件及退出这几种功能。将功能划分为以下几个模块:主控模块。实现对各个子模块的调用,在主模块内定义数据区。显示模块。实现将BUF缓冲区中的数据显示到屏幕特定区域。转换音乐模块。实现将BUF缓冲区中的数字转换成音符并播放。 保存文件模块。实现将BUF缓冲区中内容存到指定的文件中。打开文件模块。实现将指定文件中的内容读入到BUF缓冲区中。出错信息显示模块。这是一个公用模块,读文件和写文件模块都需要调用。在主控模板下,通过调用各个子模块的功能,实现了程序的功能调用,从而达到设计要求的操作。这也是模块化设计的基本要求。主流程图如图2所示:图2-1 程序主流程图2.1 宏定义和宏调用宏是源程序中一段有独立功能的程序代码。它只需要在源程序中定义一次,就可以多次调用它,调用时只需要用一个宏调用语句就可以了。其格式是:Macro name MACRO dummy parameter list(宏定义体) ENDM 其中MACRO和ENDM是一对伪操作。这对伪操作之间是宏定义体是一组有独立功能的程序代码。经过宏定义后的宏指令就可以在源程序中调用。宏调用的格式是:Macro name actual parameter list 当源程序被汇编时,汇编程序将对每个宏调用做宏展开,即用宏定义体取代源程序中的宏指令名,并且用实元取代宏定义中的哑元。子程序在执行时,每调用一次都要先保护断点、保护现场;返回时先要回复现场,然后回复断点,再返回。这些操作增加了额外的时间,因而执行时间长,速度相对较慢。用宏定义和宏调用都可以免去执行时间上的这些额外开销,执行时间短,速度相对较快。在进行本设计时,大量使用了宏定义和宏调用。2.2 显示程序设计设计要求在不同的区域用不同的颜色显示接收和发送的数据信息,通过BIOS、DOS系统功能调用,实现以上的要求。调用“INT 10H”和“INT 21H”实现颜色和区域的选择显示。使用宏定义、宏调用的方式来实现程序的调用。表2-1 INT 21H 的功能调用表AH功能调用参数返回参数01H带回显的键盘输入AL=输入字符09H显示字符串DS:DX=串地址$结束字符串02H显示输出DL=输出字符表2-2 INT 10H的功能表功能号功能入口参数显示模式属性00H设置显示模式AH=00H ,AL=02H8025的16色 文本01H设置光标形状AH01HCH低四位光标的起始行CL低四位光标的终止行02H用文本坐标下设置光标位置AH02BH显示页码DH行(Y坐标)DL列(X坐标)2.3数字转化为音乐的程序设计设计要求输入字符后,程序将其转化为相应的音符,并发声。这个要求,可以通过查表实现,实现过程如下: 从键盘读入一个字符的ASCII码; 判断该字符是否是0-9的数字; 如果是0-9的数字,将其转化为相应的发声频率; 调用发声程序,驱动扬声器发声。表2-3 数字与发声频率的对应表数字0123456789频率248262294330350393441495525589在设计程序时,要加入延迟程序,以使音调可以持续一段时间,效果明显。2.4 保存文件的程序设计 程序要求在键盘输入字符过程中实现自动保存,并且在接受对方发送的文件的同时,也在本机上建立文件保存。在发送和接收文件时调用SAVE宏定义,即可实现程序的自动保存。保存之前要先建立文件,再进行写入的操作,然后再关闭建立的文件。当需要读取文件时通过该文件的标号即可读取。保存文件需要调用功能号如下表:表2-4 INT 21H 文件操作的功能号AH功能调用参数返回参数3CH建立文件DS:DX=ASCIIZ串地址CX=文件属性成功:AX=文件代号错误:AX=错误码3DH打开文件DS:DX=ASCIIZ串地址AL=0 读 =1 写 =3 读/写成功:AX=文件代号错误:AX=错误码3EH关闭文件BX=文件代号失败:AX=错误码40H写入文或设备DS:DX=数据缓冲区地址BX=文件代号CX=写入的字节数写成功: AX=实际写入的字节数写出错:AX=错误码保存文件的子程序的流程图如下:图2-2 保存文件程序流程图2.5 打开文件程序设计打开文件的程序设计顺序同保存文件程序的设计类似。程序在执行打开文件时,需要调用显示子程序、设置颜色子程序、发声子程序。其流程图如下:图2-3 打开文件程序图2.6 接收程序的设计程序设计要求:在执行主程序时,当键盘输入字符时,发送程序、接收程序同时启动,键盘每输入一个字符,经过判定不是ESC后,发送程序自动保存字符并且向另一台PC发送一个字符,此时,另一台PC的接收程序自动接收字符,并且自动保存,同时两台PC可以在屏幕的不同区域分别显示发送和接收的字符。该程序需要调用的子程序有:保存子程序、显示子程序、发声子程序等。该程序的流程图如下:图2-4 接收文件程序流程图2.7 发送程序的程序设计程序设计要求,键盘输入数据后,发送程序启动,将读入的数据发送给另一台PC,同时,也将数据显示在屏幕的一个区域并将字符保存。程序首先保护现场,然后取状态口的状态,当检测到可以发送时,便将数据送至数据口进行发送,最后将AX出栈,回到主程序。该程序需要调用的子程序有:显示子程序、设置颜色子程序等。图2-5发送文件程序流程图2.8 换行程序的设计该程序的主要作用是当输入字符达到一定数目后,使光标定位在特定位置。由于本程序在界面的左侧显示收到的字符,右侧显示发送的字符,为避免发送和接受的字符出现混淆的状况,定义该程序。换行程序执行过程: 执行INT 10H中断的03H号功能,设置屏幕的显示方式为80*25彩色文本显示方式; 定位光标的初始位置DL列数,DH行数; 当DL达到限定值时,行数DH加1; 在新的位置上继续显示字符。具体程序如下: LOCATION_P MACRO MOV AH,03H MOV BH,0 INT 10H LEA BX,P1 CMP DL,79 JZ H1 IH1: MOV BX,DX jmp SH1 H1: INC DH MOV DL,29h jmp IH1 SH1: ENDM3 程序调试过程任何程序在编写完成之后都要进行调试,以测试编写的程序是否存在错误或者不妥的地方,从而改进程序,实现序的良好运行。本程序调试过程分别对程序的各个环节进行了调试和改正,其中发现了很多错误,改正后程序可以正常运行,并能够得到正确的结果。3.1 程序界面的调试程序运行的初始状态,该状态主要是显示提示语句和界面的美化并初步验证字符的输入和保存,调试过程中发现的问题有: 定义的语句不能在预定的位置显示,原因:光标定位指令执行错误。解决办法:从新定义光标定位指令,并赋予确切的位置参数、; 屏幕颜色混乱,原因:没有执行屏幕显示方式的指令。解决办法:重新调用INT 10H中断的03H号指令; 键入ESC无法退出程序,返回系统,原因:ESC的ASCII码定义错误。解决办法:重新执行指令,并修正ESC的ASCII码值。下图为正常的程序的运行结果:图3-1 程序出示状态的界面 3.2 发送程序、接收程序、保存程序的调试该部分的程序是整个程序的核心部分,需要实现的功能有:键盘读入,显示,保存,发送,接收等。调试该部分程序时,使用9针串口线将两台PC连接起来,两台PC同时执行程序进入DOS状态。一方键入字母和数字混合字符,该字符可以在自方屏幕的右侧显示,并且将键入的字符保存在指定的文件中,屏幕下方可显示“save succeed”提示语句;另一方将在屏幕的左侧显示收到的字符,并将字符保存在指定的文件中。以上过程可逆。调试中遇到的问题: 发送和接收的字符显示混乱,原因:输入字符达到一定数量后,光标会自动向下移动一行,但是却没有定位到初始位置。解决办法:重新加入换行子程序,重置光标于指定位置; PC1发送,PC2无法接收,原因:串口线不正常。解决办法:更换串口线; INT 14H 中断方式无法进行数据传输,原因:没有找到。解决办法,使用芯片16500通过查询方式检测端口状态并进行数据的传输。以下为正常程序的运行结果: 图3-2 PC1的发送和接收状态图3-3 PC2的发送和就收状态3.3 打开文件,发声程序的调试该部分程序可以实现的功能为:将已经保存的文件打开并显示在屏幕上,同时数字字符对应应的频率发声。图3-4 打开PC1保存文件的界面图3-5 打开PC2的程序的界面以上就是程序运行时各个分支功能的调试过程,通过不断的修改和改进,最终达到了上述的效果,基本满足了设计的要求。4 设计总结4.1 设计优缺点分析本程序采用模块化设计思想,可读性强,具有很强的可移植性,便于增加新的功能。在子程序调用方面采用宏定义、宏调用的方法而不是一个个子程序的调用,原因是子程序在执行时,每调用一次都要先保护断点、保护现场;返回时先要回复现场,然后回复断点,再返回。这些操作增加了额外的时间,因而执行时间长,速度相对较慢。用宏定义和宏调用都可以免去执行时间上的这些额外开销,执行时间短,速度相对较快。尤其是本程序大量使用了显示、定义颜色、定义光标位置等功能,而宏定义、宏调用的使用节省了大量资源。设计中也有一些不足,比如在打开保存的文件时,本机发送的和接收的文件同时显示在界面上,虽然本机的发送的文件显示在前面,但实际上两段字符并没有明显的断点。对于这个问题,有两种解决方法可行: 使发送的和接收的字符分别保存在不同的文件内,在打开文件时同时打开两个文件并在不同的位置显示; 显示字符时分别给发送的字符和接收的定义以不同的颜色加以区分。 4.2 心得体会通过对本题目程序的编写,我有下面几点体会:(1) 中断是汇编语言最精彩的地方, 实时控制、故障自动处理、计算机与外围设备间的数据传送都采用中断系统。中断系统的应用大大提高了计算机效率,接口需要服务时向CPU申请中断,其他时间CPU正常工作,免去了CPU不断的查询,节约了时间。通过中断的调用,可以实现很多扩展的功能,同时中断也使得编程工作变得相对容易。汇编语言提供了各种中断功能是我们可以利用的丰富的资源,灵活利用这些功能会使工作事倍功半;(2) 书写程序时要有良好的习惯,比如缩进和随时添加程序注释等,这样不仅有利于程序的阅读也便于查找错误。子程序位置的合理设置也是重要的问题,合理的放置子程序可以增强程序的可读性,有利于模块化设计;(3) 调试工作是一项很枯燥、繁琐的工作,要做到耐心、信心、细心。通常程序不可能一次成功,需要反复的调试,以达到最优状态。在调试过程中,有的时候仅凭一个人的力量是很难完成的,需要大家的通力合作,每个人的关注的角度不同,可能会从不同的发面发现并解决问题;(4) 汇编语言是一种很复杂的语言,有的时候实现一个很简单的功能,却需要大量的代码,很长时间的运算,同时,汇编语言也是计算机系统提供给用户的最快、最有效的语言,也是对硬件直接编程的语言。(5) 这次课设收获颇丰,虽然部分程序是参考别人的,但是经过仔细的研究,已经将他人的东西为己用了,同时再一次体会到学习计算机程序语言方法的重要性,只有不断的使用才能够彻底的掌握这种工具。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。参考文献1 周佩玲.微机原理与接口技术(基于16位机).北京:电子工业出版社,20052 沈美明.IBM-PC汇编程序语言设计.北京:清华大学出版社,19913 袁新燕.计算机外设与接口简明教程.北京:北京航空航天大学出版社,20054 沈美明.IBM-PC汇编语言程序设计实验教程.北京:清华大学出版社,19925 毛明.宏汇编语言程序设计编程知道.北京:机械工业出版社,19936 王士元.IBM PC/XT286386微机汇编语言与外设编程.南京:南开大学出版社,19937 王力虎.PC控制及接口程序设计实例.北京:科学出版社,2004附录:;*;标题: 串行通信程序;功能:串行通信 区域划分 键盘读入 文件保存 文件读取;作者: 纪广杰;E-mail : ;单位: 武汉理工大学 自动化学院 自动化0608班;时间: 2009年1月10日;*; 数据段- DATAS SEGMENT aa1 db *,$ INFORMATION1 DB Transmission test designed by JI GUANGJIE! ,$ INFORMATION2 DB PRESS ESC TO EXIT ,$ INFORMATION3 DB -,$ INFORMATION4 DB TO SAVE THE MESSAGE TO SEE WHAT YOU SAVED ,$ M11 DB WHAT YOU WANT TO SEND: ,$ M22 DB WHAT YOU HAVE RECEIVED: ,$ FREG DB 40,80,120,140,160,180,200,220,240,255 BUF DB 255 DUP (0) BUF1 DB 255 DUP (0) BUF2 DB 255 DUP (0) P1 DW 0429H P2 DW 0600H FILE_SAVE DB c:WENJIAN.txt , 0 HANDLE DW ? SUCCEED_MESSAGE DB SAVE SUCCEED ,$ ERROR DB SAVE ERROR ,$ OPEN_INFO1 DB ESC to quit! ,$ OPEN_INFO2 DB press any key except ESCReturn to the serial transmission ,$ OPEN_INFO3 DB Saved message is : ,$ DATAS ENDS; -; 堆栈段 - STACKSG SEGMENT STACK S DW 64 DUP(?) STACKSG ENDS; -; 代码段- CODES SEGMENT; 初始化16550 COMRD MACRO MOV AL, 9FH MOV DX, 03FBH OUT DX, AL ; 初始化LCR MOV AL, 120 ; 分频低8位 MOV DX, 03F8H OUT DX, AL MOV AL, 0 MOV DX, 03F9H ; 高位端口 OUT DX, AL ; 系数高位填0 MOV AL, 07H ; FIFO控制字 MOV DX, 03FAH OUT DX, AL ENDM; 将LCR最高位清零 LCRCX MACRO PUSH AX MOV AL, 1FH MOV DX, 03FBH OUT DX, AL POP AX ENDM ;换行 LOCATION_P MACRO MOV AH,03H MOV BH,0 INT 10H LEA BX,P1 CMP DL,79 JZ H1 IH1: MOV BX,DX jmp SH1 H1: INC DH MOV DL,29h jmp IH1 SH1: ENDM ;显示 PUTS MACRO STRING PUSH AX MOV AH, 9 LEA DX, STRING INT 21H POP AX ENDM;定光标位置 SET_P MACRO P_XY PUSH AX MOV DX,P_XY MOV BH,0 MOV AH,02H INT 10H POP AX ENDM;保存光标位置 SAVE_P MACRO PL MOV AH,03H MOV BH,0 INT 10H LEA BX,PL MOV BX,DX ENDM;设置显示颜色 SET_C MACRO COLOR,LENGTH MOV AH, 9 MOV AL, 1 MOV BH, 0 MOV BL, COLOR MOV CX, LENGTH INT 10H ENDM ; 从串口发送一个字符 SENDS MACRO LOCAL SEND PUSH AX CMP AL,1BH JZ SEND1 CMP AL, JZ SEND1 CMP AL, JZ SEND1 SET_P P1 SET_C 0EH,1 MOV DL,SI ; 显示字符 MOV AH,2 INT 21H LOCATION_P P1 SEND1: LCRCX PUSH AX MOV DX, 03FDH ; 状态口 SEND2: IN AL, DX ; 读状态 TEST AL, 20H ; 发送就绪? JZ SEND2 POP AX MOV DX, 03F8H ; 数据口 OUT DX, AL POP AX ENDM; 从串口接收一个字符 RECVS MACRO LOCAL NEXT_R,AGAIN_R LCRCX MOV DX, 03FDH ; 状态口 IN AL, DX ; 读状态 TEST AL, 01H ; 收到数据? JZ AGAIN_R MOV DX, 03F8H ; 数据口 IN AL, DX CMP AL,1BH JZ AGAIN_R CMP AL, JZ AGAIN_R CMP AL, JZ AGAIN_R MOV DI,AL CMP AL,30H JL NEXT_R CMP AL,39H JG NEXT_R SOUND AL NEXT_R: SET_P P2 SET_C 0AH,1 MOV DL,DI MOV AH,2 INT 21H SAVE_P P2 INC DI AGAIN_R: ENDM;字符串复制 COPY MACRO LOCAL R_COPY1,COPY1,R_COPY2,COPY2 PUSH AX R_COPY1: MOV AL,$ MOV SI,AL MOV DI,AL LEA SI,BUF1 LEA DI,BUF MOV CX,0 COPY1: MOV AL,SI CMP AL,$ JZ R_COPY2 MOV DI,AL INC SI INC DI INC CX JMP COPY1 R_COPY2: LEA SI,BUF2 COPY2: MOV AL,SI CMP AL,$ JZ COPYEND MOV DI,AL INC SI INC DI INC CX JMP COPY2 COPYEND: POP AX ENDM;保存文件 SAVE MACRO PUSH AX PUSH CX MOV DX , OFFSET FILE_SAVE MOV CX , 0 MOV AH , 3CH INT 21H JC ERR1 MOV HANDLE , AX MOV BX , AX POP CX MOV DX , OFFSET BUF MOV AH , 40H INT 21H JC ERR1 MOV BX , HANDLE MOV AH , 3EH INT 21H JC ERR1 SET_P 1700H PUTS SUCCEED_MESSAGE ;操作成功后显示提示 JMP SAVE1 ERR1: SET_P 1700H PUTS ERROR ;显示错误提示 SAVE1: POP AX ENDM ;打开文件 OPEN MACRO LOCAL READO,NEXTO,LENGO,DELAYO,CLOSEO,EXITO MOV AH,0 MOV AL,3 INT 10H MOV DX,OFFSET FILE_SAVE MOV AL,0 MOV AH,3DH INT 21H ;打开文件 MOV HANDLE,AX ;保存文件号 SET_P 0 SET_C 0EH,80 PUTS OPEN_INFO1 SET_C 0EH,80 PUTS OPEN_INFO2 SET_P 0300H SET_C 0DH,80 PUTS OPEN_INFO3 SET_P 0400H MOV BX,HANDLE MOV CX,256 MOV DX,OFFSET BUF MOV AH,3FH INT 21H ;从文件中读255字节到buf MOV BX,AX MOV BUFBX,$ LEA SI,BUF READO: MOV AL,SI CMP AL,$ JZ CLOSEO CMP AL,30H JL NEXTO CMP AL,39H JG NEXTO SOUND AL NEXTO: SET_C 0EH,1 MOV DL,SI MOV AH,2 INT 21H ;显示文件内容 MOV BX,0FFFFH LENGO: MOV

温馨提示

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

评论

0/150

提交评论