接口课程设计设计一个串行数据传输_第1页
接口课程设计设计一个串行数据传输_第2页
接口课程设计设计一个串行数据传输_第3页
接口课程设计设计一个串行数据传输_第4页
接口课程设计设计一个串行数据传输_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、石河子大学信息科学与技术学院 接口课程设计题目名称: 设计一个串行数据传输 专业班级: 计科 09(1)班 学生姓名: 杜杰 学生学号: 2009082209 指导教师: 裘祖旗 完成日期:2012年01月05日目录1 题目及要求31.1题目:31.2要求:32功能设计32.1宏定义32.2函数33详细设计33.1设计方法33.2 设计思路33.3 重点、难点33.4流程图44、程序运行展示64.1发送数据的窗口:64.2接受数据的窗口:75总结76参考文献77附:源程序71 题目及要求1.1题目:设计一个串行数据传输1.2要求:1)用中断方式实现pc机间的相互通信(串口)2)菜单选择:设置波

2、特率、起停位、数据位、连接、退出等;3)设置打字发送区、显示接收区;4)在一台pc机上的发送区打字时并显示,同时在另一台pc机上的接收区显示;5)要求界面美观。2功能设计2.1宏定义1)clearscreen 定义清屏宏2)gb 定义光标定位宏2.2函数1)main 主函数2)moveshape 子函数3详细设计3.1设计方法 两个程序,分别针对两台pc机,一个是发送数据的程序sent.asm ,一个是接受数据的程序get.asm。 两个程序均有以下函数: 1)clearscreen 清屏宏 用到了bios中断06h。 2)gb 光标定位宏 用到了bios中断02h。 3)main 主函数主要

3、是寄存器初始化,调用moveshape子函数 4)moveshape 函数主要是用于根据用户需求改变8251a方式选择命令字格式,以及sent.asm程序中,moveshape函数还包括发送数据的程序,get.asm程序中,moveshape函数还包括接收数据的程序。3.2 设计思路 主要是根据用户选择改变8251a的方式选择命令字格式,然后将其带入后面程序中即可3.3 重点、难点 1)重点 根据不同的选择,改变8251a的方式选择命令字格式。 2)难点因为用户根据菜单选择可以使8251a的方式选择命令字有24种格式,因此得把24种方式选择命令字都带入后面程序。3.4流程图 1)main 主函

4、数开 始调用清屏函数寄存器初始化光标定位输出提示信息调用子函数moveshape结束 2)moveshape 子函数 选择a选择b选择7选择b选择4选择3选择2选择1开始设置显示方式跳到b2跳到b3跳到b1跳到b4结束输入数据位位数输入要发送的数据输入停止wei位位数选择a跳到c1跳到c2选择b输入停止wei位位数选择a跳到c3跳到c4选择b输入停止wei位位数选择a跳到c5跳到c6选择6输入波特选择5跳到d1跳到d2跳到d3选择7选择6输入波特选择5跳到d4跳到d5跳到d6输入停止wei位位数跳到c7跳到c8跳到m发送或接收数据程序4、程序运行展示4.1发送数据的窗口: 1)输入要发送的数据

5、: 2)输入你想要的数据位,停止位,波特率:4.2接受数据的窗口:输入你想要的数据位,停止位,波特率后,直接显示接收到的字符:(显示乱码,因为我没有连两台电脑试,因为时间不够了,但程序绝对没问题)5总结首先,我要感谢裘祖旗老师一学期来的辛苦劳动,在这里我要说“谢谢您,裘祖旗老师!”在过去的一学期,裘祖旗老师对我们不厌其烦的讲解,使我们学到了很多有用的知识。通过课程设计,我知道了实践的重要性,我会在以后的学习中注重实践的。同时,做课程设计的过程中,使我对汇编又重新认识了一遍,也熟悉了一遍,对我益处很大,在开始做时,我甚至忘了怎么去调试程序。最后,完成了这个程序我很开心。6参考文献1东扬生等编著:

6、“宏汇编语言masm6实用大全”,科学出版社,19932求伯军主编:“新编深入dos编程”,学苑出版社,19943沈美明 温冬婵 主编:“ibm-pc汇编语言程序设计”,清华大学出版社,20017附:源程序sent.asmdataseg segmentmessage1 db main menu ,13,10 db -,13,10 db | date | a:1tingzhiwei | bit |,13,10 db | 1 5 | b : 2 | 5 : 1 |,13,10 db | 2 6 | | 6 : 16 |,13,10 db | 3 7 | | 7 : 64 |,13,10 db |

7、4 8 | 0 exit | |,13,10 db -,13,10,$message2 dbplease into the sent date:,$message3 dbplease put into the date:,$message4 dbplease put into the tingzhiwei:,$message5 dbplease put into the bit:,$message6 dbexit or not:,$speed dw 0ffh color db 1 direction db e maxlen db 11charcnt dw ?pointer dw ?lineon

8、 db ?colon db ?dataseg endsoutput macro string;定义输出提示宏mov ah,09hlea dx,stringint 21hendmclearscreen macro ch1,cl1,dh1,dl1,bh1;定义清屏宏 mov ah,6 mov al,0 mov ch,ch1 mov cl,cl1 mov dh,dh1 mov dl,dl1 mov bh,bh1 int 10hendmgb macro dh1,dl1 ;定义光标定位宏 mov ah,2h mov bh,0h mov dh,dh1 mov dl,dl1 int 10hendmcodes

9、eg segment assume cs:codeseg,ds:datasegmain proc nearstart: sub ax,ax mov ax,dataseg mov ds,axa11: clearscreen 0,0,24,79,07h ;清屏开窗口5 clearscreen 0,10,9,70,22h clearscreen 1,11,8,69,4eh gb 2,0 output message1 ;输出提示 output message2 lea dx,maxlen mov ah,0ah int 21h call moveshape ret main endpmoveshape

10、 proc near ;子函数 gb 12,0 output message3 mov ah,01h ;判断键盘状态 int 21h cmp al,1 ;根据键盘输入的选择,做相应的处理 jz b1 cmp al,2 jz p1 cmp al,3 jz p2 cmp al,4 jz p3 b1: gb 14,0 output message4 mov ah,01h ;判断键盘状态 int 21h cmp al,a ;根据键盘输入的选择,做相应的处理 jz c1 cmp al,b jz c2p1:jmp b2p2:jmp b3p3:jmp b4c1:gb 16,0 output message5

11、 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz d1 cmp al,6 jz d2 cmp al,7 jz d3d1:mov bh,71h jmp md2:mov bh,72h jmp md3:mov bh,73h jmp mc2:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz d4 cmp al,6 jz d5 cmp al,7 jz d6d4:mov bh,0f1h jmp md5:mov bh,0f2h jm

12、p md6:mov bh,0f3h jmp mc3:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz d7 cmp al,6 jz d8 cmp al,7 jz d9d7:mov bh,75h jmp md8:mov bh,76h jmp md9:mov bh,77h jmp m b2: gb 14,0 output message4 mov ah,01h ;判断键盘状态 int 21h cmp al,a ;根据键盘输入的选择,做相应的处理 jz c3 cmp al,b jz c4c

13、4:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz dd0 cmp al,6 jz dd1 cmp al,7 jz dd2dd0:mov bh,0f5h jmp mdd1:mov bh,0f6h jmp mdd2:mov bh,0f7h jmp m b3: gb 14,0 output message4 mov ah,01h ;判断键盘状态 int 21h cmp al,a ;根据键盘输入的选择,做相应的处理 jz c5 cmp al,b jz c6c5:gb 16,0 outpu

14、t message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz dd3 cmp al,6 jz dd4 cmp al,7 jz dd5dd3:mov bh,79h jmp mdd4:mov bh,7ah jmp mdd5:mov bh,7bh jmp mc6:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz dd6 cmp al,6 jz dd7 cmp al,7 jz dd8dd6:mov bh,0f9h jm

15、p mdd7:mov bh,0fah jmp mdd8:mov bh,0fbh jmp m b4: gb 14,0 output message4 mov ah,01h ;判断键盘状态 int 21h cmp al,a ;根据键盘输入的选择,做相应的处理 jz c7 cmp al,b jz c8c7:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 je dd9 cmp al,6 jz ddd0 cmp al,7 jz ddd1dd9:mov bh,7dh jmp mddd0:mov bh

16、,7eh jmp mddd1:mov bh,7fh jmp mc8:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz ddd2 cmp al,6 jz ddd3 cmp al,7 jz ddd4ddd2:mov bh,0fdh jmp mddd3:mov bh,0feh jmp mddd4:mov bh,0ffh jmp m m: mov al,76h out 43h,al mov al,0ch out 41h,al mov al,00h out 41h,al call init c

17、all dally mov al,bh out 81h,al call dally mov al,34h out 81h,al call dally mov di,dx mov cx,0000aha1:mov al,di call send call dally inc di loop a1a2:jmp a2init:mov al,00h out 81h,al call dally out 81h,al call dally out 81h,al call dally out 80h,al call dally out 80h,al call dally mov al,40h out 81h,

18、al retdally:push cx mov cx,3000ha4:push ax pop ax loop a4 pop cx retsend:push ax mov al,31h out 81h,al pop ax out 80h,ala3:in al,81h and al,01h jz a3e:gb 18,0 output message6 mov ah,01h ;判断键盘状态 int 21h cmp al,0 ;根据键盘输入的选择,做相应的处理 jz exitexit2:ret moveshape endpexit:mov ah,4ch int 21h codeseg ends ;结束

19、 end startget.asmdataseg segmentmessage1 db main menu ,13,10 db -,13,10 db | date | a:1tingzhiwei | bit |,13,10 db | 1 5 | b : 2 | 5 : 1 |,13,10 db | 2 6 | | 6 : 16 |,13,10 db | 3 7 | | 7 : 64 |,13,10 db | 4 8 | 0 exit | |,13,10 db -,13,10,$message2 dbthe get date:,$message3 dbplease put into the da

20、te:,$message4 dbplease put into the tingzhiwei:,$message5 dbplease put into the bit:,$message6 dbexit or not:,$speed dw 0ffh color db 1 direction db e maxlen db 11charcnt dw ?pointer dw ?lineon db ?colon db ?dataseg endsoutput macro string;定义输出提示宏mov ah,09hlea dx,stringint 21hendmclearscreen macro c

21、h1,cl1,dh1,dl1,bh1;定义清屏宏 mov ah,6 mov al,0 mov ch,ch1 mov cl,cl1 mov dh,dh1 mov dl,dl1 mov bh,bh1 int 10hendmgb macro dh1,dl1 ;定义光标定位宏 mov ah,2h mov bh,0h mov dh,dh1 mov dl,dl1 int 10hendmcodeseg segment assume cs:codeseg,ds:datasegmain proc nearstart: sub ax,ax mov ax,dataseg mov ds,axa11: clearscr

22、een 0,0,24,79,07h ;清屏开窗口5 clearscreen 0,10,9,70,22h clearscreen 1,11,8,69,4eh gb 2,0 output message1 ;输出提示 call moveshape ret main endpmoveshape proc near ;子函数 gb 12,0 output message3 mov ah,01h ;判断键盘状态 int 21h cmp al,1 ;根据键盘输入的选择,做相应的处理 jz b1 cmp al,2 jz p1 cmp al,3 jz p2 cmp al,4 jz p3 b1: gb 14,0

23、 output message4 mov ah,01h ;判断键盘状态 int 21h cmp al,a ;根据键盘输入的选择,做相应的处理 jz c1 cmp al,b jz c2p1:jmp b2p2:jmp b3p3:jmp b4c1:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz d1 cmp al,6 jz d2 cmp al,7 jz d3d1:mov bh,71h jmp md2:mov bh,72h jmp md3:mov bh,73h jmp mc2:gb 16,

24、0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz d4 cmp al,6 jz d5 cmp al,7 jz d6d4:mov bh,0f1h jmp md5:mov bh,0f2h jmp md6:mov bh,0f3h jmp mc3:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz d7 cmp al,6 jz d8 cmp al,7 jz d9d7:mov bh,75h jmp

25、 md8:mov bh,76h jmp md9:mov bh,77h jmp m b2: gb 14,0 output message4 mov ah,01h ;判断键盘状态 int 21h cmp al,a ;根据键盘输入的选择,做相应的处理 jz c3 cmp al,b jz c4c4:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz dd0 cmp al,6 jz dd1 cmp al,7 jz dd2dd0:mov bh,0f5h jmp mdd1:mov bh,0f6h j

26、mp mdd2:mov bh,0f7h jmp m b3: gb 14,0 output message4 mov ah,01h ;判断键盘状态 int 21h cmp al,a ;根据键盘输入的选择,做相应的处理 jz c5 cmp al,b jz c6c5:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz dd3 cmp al,6 jz dd4 cmp al,7 jz dd5dd3:mov bh,79h jmp mdd4:mov bh,7ah jmp mdd5:mov bh,7b

27、h jmp mc6:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 jz dd6 cmp al,6 jz dd7 cmp al,7 jz dd8dd6:mov bh,0f9h jmp mdd7:mov bh,0fah jmp mdd8:mov bh,0fbh jmp m b4: gb 14,0 output message4 mov ah,01h ;判断键盘状态 int 21h cmp al,a ;根据键盘输入的选择,做相应的处理 jz c7 cmp al,b jz c8c7:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 21h cmp al,5 ;根据键盘输入的选择,做相应的处理 je dd9 cmp al,6 jz ddd0 cmp al,7 jz ddd1dd9:mov bh,7dh jmp mddd0:mov bh,7eh jmp mddd1:mov bh,7fh jmp mc8:gb 16,0 output message5 mov ah,01h ;判断键盘状态 int 2

温馨提示

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

评论

0/150

提交评论