带缓冲区的PC机查询式串行通信实验(共7页)_第1页
带缓冲区的PC机查询式串行通信实验(共7页)_第2页
带缓冲区的PC机查询式串行通信实验(共7页)_第3页
带缓冲区的PC机查询式串行通信实验(共7页)_第4页
带缓冲区的PC机查询式串行通信实验(共7页)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、PAGE 6PAGE 8带缓冲区的PC机查询(chxn)式串行通信实验实验(shyn)目的:掌握(zhngw)对通用异步收发器的编程进一步熟悉利用系统功能调用从键盘上读取字符的方法实验设备和相关软件:386以上微机一台;串行通信电缆一条;操作系统:MS-DOS或者WINDOWS95以上的MS-DOS环境;汇编和连接:TASM.EXE,TLINK.EXE;文本编辑工具:记事本、EDIT、BORLAND C+或者PWB;调试程序:TD.EXE。实验内容:编写程序实现:接收键盘输入的一个字符串并存于发送缓冲区TRBUFF(以回车符0DH结束),当输入回车时启动查询式发送;查询式接收来自串行口输入的一

2、个字符串并存于接收缓冲区DIBUFF,当收到回车符时,启动显示,显示接收的字符串并换行;要求当按ESC键时退出该程序的运行,返回操作系统,其中ESC键的ASCII码为1BH。实验步骤:编写带缓冲区的PC机查询式串行通信实验,实现接收键盘输入的一个字符串并存于发送缓冲区TRBUFF(以回车符0DH结束),当输入回车时启动查询式发送;查询式接收来自串行口输入的一个字符串并存于接收缓冲区DIBUFF,当收到回车符时,启动显示,显示接收的字符串并换行;要求当按ESC键时退出该程序的运行,返回操作系统,其中ESC键的ASCII码为1BH。通信程序帧格式和波特率与同组同学协商后定义,先按MODEM控制字为

3、循环方式工作,进行测试程序通过与否。在通过(tnggu)的基础上MODEM控制字改为禁止循环方式工作(gngzu),用通信电缆将两台PC机串口对接(du ji),测试程序通过与否。两台PC机串口通信实现后,分别改变一方程序中定义的帧格式和波特率,观察和记录通信效果,说明产生此现象的原因。设计思想提示:在程序中,将用到缓冲区和标志位,注意要事先将收发缓冲满标志和接收标志清零;还将用到关于键盘动作的访问方法。其中系统功能调用中INT 16H的AH=01H号子功能是检查键盘缓冲队列中有无输入字符,如果有输入字符,则零标志位清零,如果无,零标志位置1,利用AH=00H号子功能可以读取已经存在的键值。过

4、程分析如下:1)、调用初始化子程序,初始化INS8250芯片2)、扫描键盘,有无输入,无,转到8)3)、有, 测试字符是否为ESC,是,退出,转12)4)、显示该字符,判断发送缓冲满标志是否为1,是转8)5)、把字符放到发送缓冲,指针加1 6)、测试字符是否为回车,不是,转到8)7)、一次发送结束,发送缓冲满标志置1,发送缓冲区复位8)、调用收发子程序,测试接收结束标志是否为0,是,转2)9)、提示接受数据,显示一个字符,直到遇到回车符10)、复位SI,调用收发子程序11)、提示继续接收12)、退出应用程序,返回操作系统。收发子程序的编写提示:1)、测试接收结束标志是否为1,是转5)2)测试线

5、路状态寄存器,是否接收准备就绪,否,转5)3)、接收字符串,判断,字符是否为回车符,否,转5)4)、接收结束标志置1,接收缓冲区复位5)、判断收发满标志是否为1,否,转9)6)、查线路状态寄存器是否发送保持寄存器为空,否,转9)7)、发送字符串,判断发送的字符是否为回车符时,否,转9)8)、发送缓冲满标志清零,发送缓冲区复位9)、退出子程序实验报告要求:画出程序框图,写出汇编语言源程序。若帧格式和波特率不一致,观察和记录通信情况,说明产生此现象的原因。参考(cnko)程序:COM1EQU3F8HDATASEGMENTREBUFFDB 100 DUP(0);定义(dngy)串口接收缓冲区TRBU

6、FFDB100 DUP (0);定义(dngy)键盘接收缓冲区TRFLAGDB0DIFLAGDB0MSG1DB 0DH,0AH,INPUT A STRING:$MSG2DB 0DH,0AH,RECEIVE A STRING:$MSG3DB 0DH,0AH,CONTINUE A STRING:$DATA ENDS CODESEGMENT ASSUME CS:CODE,DS:DATASTART:MOVAX,DATA MOV DS,AX CALL INI_COM1 ;串口初始化 LEA DX,MSG1 MOV AH,09H INT 21H LEA DI,TRBUFF LEA SI,REBUFFMN6

7、:MOV AH,1;扫描键盘 INT 16H JZ MN2 MOV AH,0 ;接受键盘输入 INT 16H CMP AL,1BH ;判断是否为ESC键,是则退出 JZ QUIT MOV DL,AL MOV AH,02H INT 21H CMP TRFLAG,1 JZ MN2 MOV DI,AL ;字符(z f)放入缓冲区 INC DI CMP AL,0DH ;判断(pndun)是否一串结束 JNZ MN2 MOV TRFLAG,1 LEA DI,TRBUFF LEA DX,MSG1 MOV AH,09H INT 21HMN2:CALLREORTR;进行一次接收(jishu)出串口接收和发送

8、CMP DIFLAG,0 JZ MN6 LEA DX,MSG2 MOV AH,09H INT 21HMN5:MOVDL,SI INC SI CMP DL,0DH JZ MN4 MOV AH,02H INT 21H JMP MN5MN4:MOVDIFLAG,0 LEA SI,REBUFF CALL REORTR MOV DX,OFFSET MSG3 MOV AH,09H INT 21H LEA BX,TRBUFFMN7:CMPBX,DI JZ MN6 MOV DL,BX INC BX MOV AH,02H INT 21H JMP MN7QUIT:MOVAH,4CH;退出(tuch) INT 21

9、HREORTR PROC CMP DIFLAG,1 JZ RT1 MOV DX,COM1+5 ;查询(chxn)串口是否接收好一个字符 IN AL,DX TEST AL,01H JZ RT1 MOV DX,COM1 ;接收一个(y )字符 IN AL,DX MOV SI,AL INC SI CMP AL,0DH JNZ RT1 MOV DIFLAG,1 LEA SI,REBUFFRT1:CMPTRFLAG,1 JNZ RT2 MOV DX,COM1+5 ;查询串口是否(sh fu)发送完一个字符 IN AL,DX TEST AL,20H JZ RT2 MOV AL,DI INC DI MOV

10、DX,COM1 ;发送(f sn)一个字符 OUT DX,AL CMP AL,0DH JNZ RT2 MOV TRFLAG,0 LEA DI,TRBUFFRT2: RETREORTRENDP INI_COM1 PROC MOV DX,COM1+3 MOV AL,80H OUT DX,AL MOV DX,COM1;波特率为19200bps MOV AL,06H OUT DX,AL MOV DX,COM1+1 MOV AL,00H OUT DX,AL MOV DX,COM1+3;7位数据位,2位停止(tngzh)位,偶检验 MOV AL,1EH OUT DX,AL MOV DX,COM1+4 MOV AL,03H OUT DX,AL MOV DX,COM1+1;关闭(gunb)中断 MOV AL,00H OUT DX,AL MOV DX,COM1+5 IN AL,DX RETINI_COM1 ENDPCODEENDS END START内容

温馨提示

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

评论

0/150

提交评论