课程设计任务书学生姓名: xxx 专业班级: xxx指导教师: xxx 工作单位: xxx题目: 串行通信程序设计初始条件:用汇编语言编写程序,实现两台计算机之间的通信。
要求完成的主要任务:①制作RS-232C通信线,并用它连接两台计算机;②在计算机上用不同的颜色设置接收、发送区域;③能设置发送、接收的数据长度,并能显示接收的数据;④能选择通信校验方式(奇校验、偶校验或无校验);⑤可以将接收的数据作为文件保存起来;⑥撰写设计说明书及调试心得。
时间安排:第一阶段: 查阅相关资料第二阶段: 课程设计第三阶段: 撰写课程设计报告第四阶段: 课程设计答辩指导教师签名:年月日系主任(或责任教师)签名:年月日串行通信程序设计1方案论证首先,要能进行串行通信,串口是基础。
使用RS-232 DB-9串口,实现基本通信时,只需将其5号线(地线)相连,2、3号线(接收、发送数据线)分别交叉相连即可。
根据要求,此程序可分为界面显示、参数设置、发送数据、接收数据和保存文件五部分。
以下将从这五个方面进行方案论证。
1.1 界面显示一般情况下显示器的屏幕为25行、82列,不妨把整个屏幕看成25*80个存储单元。
屏幕坐上角存储单元的坐标为(0,0),即行号为0,列号为0。
因此可通过设置不同的行号和列号定位屏幕上的存储单元。
用不同颜色设置发送和接收区域,即用不同颜色的空格填充发送和接收区域。
这就需要调用BIOS系统中断,先置光标位置,再写当前字符和属性。
这两项功能都可调用BIOS显示输出10H号中断服务程序实现,详见表1-1 10H号中断服务程序部分功能。
表1-1 10H号中断服务程序部分功能IBM PC的标准显示器适配器,有单色和彩色之分,其中后者能以文本和图形两种工作方式,既可以显示黑白图形又可以显示有16种颜色的彩色图形。
彩色文本方式下,设置不同的属性字节即可实现不同前景和不同背景的组合。
例如,0111表示灰白,1110表示黄,设置灰白底黄字的属性为01111110,十六进制表示为7EH。
显示发送和接收两个区域的方案大体分两种,一是两个带状区域,一是两个并排的矩形。
从美观的角度来讲,后者更胜一筹。
显示标题、提示、设置等信息时,只需先将光标定到合适位置,再调用21H中断服务输出字符串即可。
1.2 参数设置此处的参数设置主要指设置数据长度和设置奇偶校验,通过修改串口初始化参数字达到设置目的,串口初始化参数字功能如下:D1D0=10 : 7位字长 D1D0=11 : 8位字长D2=0 : 1位中止位 D2=1 : 2位中止位D4D3=01 : 奇校验 D4D3=11 : 偶校验D4D3=00/10 : 无校验D7D6D5=000 : 110bps D7D6D5=001 : 150bpsD7D6D5=010 : 300bps D7D6D5=011 : 600bpsD7D6D5=100 : 1200bps D7D6D5=101 : 2400bpsD7D6D5=110 : 4800bps D7D6D5=111 : 9600bps初始化串行通信口格式如下:调用参数: AL=初始化参数DX=通信口号,0:COM1,1:COM2返回参数: AH=通信口状态AL=调制解调器状态通过读取键盘输入的数据对串口初始化参数字做出相应的修改,实现参数设置。
1.3 发送数据该过程包括从键盘读取输入并发送数据,读取键盘数据可以以单字符为单位一个一个读取也可以读取字符串,发送数据则是将字符一个个发送到串口数据缓冲区。
读取键盘数据时,可使用常用DOS输入输出功能调用21H中断来实现。
INT 21H是功能齐全、使用方便的一个中断服务程序,主要包括设备管理、目录管理和文件管理三个方面的功能。
表1-2给出了21H号中断服务程序的部分功能。
所有“INT 21H”中断调用的格式都一样,一般按如下四步进行:①在AH寄存器中设置子功能号②在指定的寄存器中设置入口参数③用INT 21H指令执行功能调用④根据出口参数分析功能调用的执行情况表1-2 21H号中断服务程序的部分功能与串行通信口相关操作可通过调用串口中断14H实现,14H号中断服务程序的部分功能见表1-3,能实现初始化通信口、读写通信口状态等功能。
表1-3 14H号中断服务程序的部分功能1.4 接收数据接收部分需要完成接收和显示两个功能,数据接收与发送类似,也是一个字符一个字符从串口读取。
读取的字符将存入定义好的数据段中,再在屏幕上显示。
显示也有两种方案,可以循环显示字符也可以直接显示字符串,都可以调用21H号中断实现。
1.5 保存文件DOS提供的磁盘文件管理包括文件的建立、打开、读、写、关闭、删除等操作以及子目录的建立和删除等目录管理,这些都可以用“INT 21H”指令调用DOS中的功能子程序实现。
此处的保存文件,需要用到文件的建立、打开、写和关闭功能,表1-4给出了DOS提供的部分磁盘文件管理功能。
表1-4 DOS提供的部分磁盘文件管理功能要注意的是,当标明文件名或路径名时要使用ASCⅡZ字符串,这种字符串是用DB伪指令语句定义的ASCⅡ编码的字符串,最后以一个值为0的字节结尾。
字符串中的字符组成一个文件的标识符:盘符、路径、文件名和扩展名。
2 程序设计2.1 界面显示显示标题、提示、设置等信息时只需先将光标定位,再输出字符串,用顺序结构程序。
显示两不同颜色的发送、接收区域时,由于在DOS下运行程序输入字符到最右侧时会自动换行,因此只要字符重复次数选择合理,实现两带状区域的显示很容易。
而要显示两个并排的矩形区域时,则需要以一定宽度的行为单位,对区域逐行进行填充,这就要用到循环或分支结构程序。
显示发送数据区域时,先置光标到开始位置,填充CX个空格,行号和循环次数加1,判断循环次数,若未完则在下一行继续填充,直到填充完为止。
由于区域列数(CX)在38-40之间,而设定数据缓冲区最多接收255个字符,故循环次数设为8就足以显示发送数据。
显示发送数据区的流程图如图2-1所示,显示接收数据区域流程图与其类似,在此省略不画。
图2-1 显示发送数据区的流程图2.2 参数设置参数设置主要利用CMP语句判断键盘输入数据,再对串口初始化参数字进行相应的修改,从而达到设置目的。
例如,要设置数据字长,先判断键盘输入的是7还是8,再用跳转语句跳到相应修改处。
串口初始化入口参数用AL表示参数字,但在读取键盘输入时AL用以返回输入字符的ASCⅡ码,因此要先将AL备份。
修改参数字时,先将其高6位保存低2位清零,再对其低2位赋值,如8位字长则赋11。
采用顺序和分支结构进行程序设计,定义串口初始化为子程序,参数设置后对其进行调用,设置奇偶校验流程图如图2-2所示,设置数据长度流程图与其类似,在此省略不画。
图2-2 设置奇偶校验流程图其中,CL为默认初始化参数字,即为AL备份值,设置修改后再将其值赋给AL,进行串口初始化。
2.3 发送数据发送数据前要先读取键盘输入,为方便起见,可直接从键盘读取字符串,调用INT 21H 的10号功能即可实现,字符串以回车结束,并显示在屏幕的发送区。
每读完一串字符,光标自动下移一行,继续读下一串字符。
数据发送时,先检测读通信口状态,当检测到“发送保存寄存器空”位即AH.5位有效时,可以写入一个数据到通信口。
因此,数据的发送过程是先调用14H的3号功能取通信口状态,再调用14H的1号功能将字符一个个地发送到通信口。
为与接收程序相对应,每发送完一串字符,在其后加上回车换行符,并加’$’表示字符串结束。
发送完一串字符后,再读取键盘输入,发送下一串字符。
采用顺序结构和分支结构设计接收数据主程序,流程图如图2-3所示。
左侧为主流程图,右侧为发送数据子程序流程图。
图2-3 发送数据流程图2.4 接收数据此过程包括接收和显示两部分,从通信口接收数据与发送类似,先调用14H的3号功能取通信口状态,“数据准备好”位即AH.1位有效则表明通信口收到一个数据。
再调用14H 的2号功能读通信口数据,将字符读入AL中。
为了方便,显示过程也以字符为单位一个个显示。
上文已提到发送完一串字符后发回车换行以及’$’符,此时可判断字符是否为’$’,若是则跳到文件保存设置区,否则表示该串字符未接收完,继续接收。
每接收完一串字符,则询问用户是否保存文件。
显示数据时可直接在接收后将字符一个个显示在接收区,因每串字符后都有回车换行符,字符串将一行行显示在接收区。
但由于此时数据显示利用了其自动换行功能,接收区应放在屏幕左侧而发送区应放在屏幕右侧,否则接收的数据换行后将在发送区显示。
采用顺序结构和分支结构设计接收数据程序,流程图如图2-4所示。
图2-4 接收数据流程图2.5 保存文件首先设置是否保存接收到的字符串,若选择保存则保存,否则继续接收。
保存过程直接采用顺序结构,按照建立文件、打开文件、写文件和关闭文件的顺序进行程序设计,最后显示提示信息告诉用户所保存文件的路径。
2.6 总体设计按照图2-5串行通信程序流程图来编写程序,首先显示界面,接着设置字符长度和通信校验方式。
然后读键盘输入,若输入的是“Tab”键,则跳到接收数据区,否则跳到数据发送区。
每接收到一串字符(约定每串字符都以'$'符结束)都判断是否保存,若选择保存则建立一文件将该字符串保存,若不选择保存则继续接收数据。
此程序能实现两台计算机间的单工通信,在屏幕上用不同颜色区域显示发送数据区和接收数据区,能设置数据长度和通信校验方式,显示接收到数据并将其作为文件保存。
图2-5 串行通信程序流程图3 程序调试使用编译器对源程序进行编译,生成扩展名为“.obj”的目标文件,再连接目标码,最后运行生成扩展名为“.exe”的可执行文件。
若无法生成目标文件,则说明程序存在错误,双击窗口提示信息,可找到相应的错误语句,根据提示信息修改程序后再进行编译,直至成功生成目标文件,并连接运行生成可执行文件为止。
3.1 调试结果运行程序,输入'7','n'及空格键,则进入数据发送过程,输入若干字符串,同时接收机输入'7','n'及'Tab'键,进入接收数据过程。
参数设置相同时的发送、接收界面分别如图3-1和3-2所示。
图3-1 参数设置相同时的发送界面图3-2 参数设置相同时的接收界面图3-3 参数设置不同时的发送界面图3-4 参数设置不同时的接收界面图3-5 选择文件保存的接收界面再次运行程序,输入'8','e'及回车键,则进入数据发送过程,输入若干字符串,同时接收机输入'7','n'及'Tab'键,进入接收数据过程。