串行口补充部分.doc_第1页
串行口补充部分.doc_第2页
串行口补充部分.doc_第3页
串行口补充部分.doc_第4页
串行口补充部分.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

串行口补充部分80x86兼容机可连接4个串行口,其编号分别为COM1COM4(相应的BIOS编号为COM0COM3)若微机系统设置了COM端口,则设置的每个端口的地址就写到BIOS数据区的0040:00007H中。其中每个COM端口占2个字节。COM0:0040:0000 0001COM1:0040:00020003COM2:0040:00040005COM3:0400:00060007 可用DEBUG 查看端口地址 CDEBUG_D 0040:0000 L08 0040:0000 F8 03 F8 02 00 00 00 00 即端口COM0的地址为:3F8H,COM1的地址为2F8H 一、 BIOS 串行通信功能 INT 14H 调用ROM BIOS 串行通信例行程序,该通信例行程序包括:串行口的初始化(波特率、帧格式等),检查控制器的状态等,读和写(接收和发送)等功能。 表 一 串行口通信BIOS功能(INT 14H) AH 功能 入口参数 出口参数 0 初始化串行通信口 (AL)=初始化参数 (AH)=通信口状态 (DX)=通信段口号 (AL)=调制解调器的状态 COM1=0 COM2=1,etc 1 向串行口写字符 (AL)=所写字符 写字符成功: (DX)=通信口号 (AH)=0,(AL)=字符 COM1=0 写字符失败 COM2=1 (AH)7=1,(AH)0-6=口状态 2 从串行口读字符 (DX)=通信口号 读成功: COM1=0 (AH)7=0,(AH)0-6=口状态 COM2=1 读失败: (AH)7=1,(AH)0-6=口状态3 取通信口状态 (DX)=通行口号 (AH)=通信口状态 COM1=0 (AL)=调制解调器状态 COM2=1.etc 串行口初始化参数7 6 5 4 3 2 1 0 000=110波特 校验 01=奇校验 终止位 字长 10=7 位001=150波特 11=偶校验 0=1位 11=8位010=300波特 X0=无校验 1=2位 011=600111=9600波特 串行通信端口状态字7 6 5 4 3 2 1 0超时 发送位移器空 发送空 间断 帧格式错 奇偶错 超越错 数据准备好 奇偶错:通信线上的噪声引起数据位的改变会产生奇偶错,检测到奇偶措时,发送放应在发送一次。超越错:在上一个字符还没被取走,又有字符传送过来,则会引起超越错。帧格式错:当接收器没收到一个字符的停止位,会引起帧格式错。引起的原因可能是噪声引起停止位的丢失,或由于收发双方初始化参数不匹配所致。间断:在某些通信环境中设置的“空格”状态,它占一个字符的传输时间,当器超过一个字符的传输时间时,间断位为1。利用BIOS INT 14H,可通过COM端口与另一台微机通信,通信程序的编写过程如下:1、 用INT 14,AH=0,(DX)=通信端口号,(AL)=初始化参数;设置通行双方的初始化参数。2、 用INT 14H,AH=1,(AL)=字符,(DX)=通信段口号;发送一个字符。3、 为了接收字符,用INT 14H,AH=3来获得端口的状态,出口参数在AH中。4、 检查端口状态值的第0位,若为1,说明已经收到一个字符并送到了8250的数据缓冲寄存器。5、 用INT 14H ,AH=2来读取字符,被读取的字符放在AL中。例:对主串行口进行外环自动测试,测试电文为:THE QUICH BROWN FOX JUMPS LAZY DOG(狡猾的狐狸越过懒狗的背)程序流程:调1号功能发送数据、若发送成功调2号功能接收数据,否则转出错处理;若接收成功,把接收的字符送显示器显示。DATA SEGMENTTEXT DB THE QUICK BROWN FOX JUMPS OVER LAZY DOG DB 0DH,0AHLLL EQU $-TEXTERROR DB COM1 BAD!,0DH,0AH,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CALL I8250 MOV CH,10AGAIN:MOV CL,LLL MOV BX,OFFSET TEXTSEND: MOV AL,BX MOV AH,1 MOV DX,0 INT 14H TEST AH,80H JNZ DISPERRRECE: MOV AH,2 MOV DX,0 INT 14H TEST AL,80H JNZ DISPERR AND AL,7FHDISP: MOV AH,2 MOV DL,AL INT 21H INC BX DEC CL JNZ SEND DEC CH JNZ AGAIN JMP RETURNDISPERR: MOV AH,9 MOV DX,OFFSET ERROR INT 21HRETURN: MOV AH,4CH INT 21HI8250 PROC MOV AX,0083H MOV DX,0 INT 14H RETI8250 ENDPCODE ENDS END START例:两台pc机通过串行端口进行通信,要求从一台pc机上键入的字符能从传送到另一台上,若按下ESC键则退出程序。 要求使用COM2端口,并初始化为4800波特,8位数据位,无校验,1位终止位。 按题意要求需要以下几个步骤:1、 检测按键,如按下一个键,则获取字符码将其从COM端口输出,同时也要检查有ESC键按下(又则退出)。2、 如无键按下,检测COM端口的状态,如果收到一个字符,则读取并显示在屏幕上。DATA SEGMENTMESSAGE DB SERIAL COMMUNICATION VIA COM2,4800,NO P,8 BIT,0DH,0AHDB ANY KEY PRESS IS SENT TO OTHER PC 0DH,0AHDB PRESS ESC TO EXIT,$DATA ENDSDB ANY KEY PRESS IS SENT TO OTHER PC 0DH,0AHDB PRESS ESC TO EXIT,$DATA ENDSDB ANY KEY PRESS IS SENT TO OTHER PC 0DH,0AHDB PRESS ESC TO EXIT,$DATA ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AH,9MOV DX,OFFSET MESSAGEINT 21H ;SHOW THE MESSAGEMOV AH,0 ;INITIALIZE COM PORTMOV DX,1 ;COM2MOV AL,0C3H ;4800,N,1,8 INT 14H ;CALL BIOSAGAIN:MOV AH,1 ;Read the keyboard state for checking key press INT 16H JZ NEXT ;if zf=1,ther is no key press MOV AH,0;ther is a key press ,get it INT 16H ;call bios CMP AL,1BH;1BH is scan number for press key JE EXIT MOV AH,1;Send char to COM port MOV DX,1;COM2 INT 14HNEXT: MOV AH,3 ;Read COM states to AH MOV DX,1 INT 14H AND AH,1 CMP AH,1 JNE AGAIN MOV AH,2 MOV DX,1 INT 14H MOV DL,AL MOV AH,2 INT 21H JMP AGAINEXIT: MOV AH,4CH INT 21HCODE ENDS END START计算机原理综合实验 通过本试验,进一步熟悉和掌握本课程的主要内容,能够对计算机系统配置的资源(中断控制器8259、平行接口8255、计数定时器8253、串行通信接口8250 、8251等)进行编程和控制,了解计算机在工业控制中的应用,能够编写简单的控制程序。 例:某一温度控制环节有 2台主、从式分布的计算机,主机向从机发出命令,从机解析主机发来的命令后,将现场的设备的工作情况传送给主机。主机接收到从机送来的信息后从数据库获得决策方案,再把决策方案以指令机的形式处送给从机。 模拟现场: 主机发送命令“1“:指挥从机把步进电机控制的燃料阀门旋转90度, 主机发送命令“2“:要求从机返回现场的电机的运行情况 。 主机发送命令“3”: 指挥从机启动告警装置(利用系统自身的资源8255、8253等) 从机接收到命令1:调用控制电机旋转90度的子程序 从机接收到命令2: 从机接收到命令2: 从机接收到命令2:. 从机接收到命令N:DATA SEGMENTt1 db The serial communication with com2,4800,no p,1 stop,8 bit data,0dh,0ah db press 1 send a string,press 2 check statuse for moter,0dh,0ah db press 3 start ring,0dh,0ah,$T2 DB PRESS END KEY STOP RING,0DH,0AH,$TEXT DB THE QUICK BROWN FOX JUMPS OVER LAZY DOG DB 0DH,0AHLLL EQU $-TEXTTEXT1 DB THE MOTOR IS RUNING DB 0DH,0AHLL1 EQU $-TEXT1ERROR DB THE COMMAND ERR !PLEASE REENTER THE NUMBER 1 OR 2 OR 3,0DH,0AH,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,0 MOV AL,3 INT 10H MOV DX,OFFSET T1 MOV AH,9 INT 21H CALL I8250 AG1: MOV AH,0 INT 16H CMP AH,4FH JZ RETURN MOV AH,1 MOV DX,1 INT 14H TEST AH,80H JNZ DISPERR MOV AH,2 MOV DX,1 INT 14H TEST AL,80H JNZ DISPERR CALL CLEAR AND AL,7FH CMP AL,31H JZ A1 CMP AL,32H JZ A2 CMP AL,33H jz a3 JMP DISPERRa3: CALL RING1 CALL RING JMP AG1A1: CALL G1 MOV DH,9 MOV DL,5 MOV AH,2 INT 10H MOV CL,LLL MOV BX,OFFSET TEXT JMP SENDA2:CALL G2 MOV DH,9H MOV DL,5 MOV AH,2 INT 10H MOV CL,LL1 MOV BX,OFFSET TEXT1SEND: MOV AL,BX MOV AH,1 MOV DX,1 INT 14H TEST AH,80H JNZ DISPERRRECE: MOV AH,2 MOV DX,1 INT 14H TEST AL,80H JNZ DISPERR AND AL,7FHDISP: MOV AH,2 MOV DL,AL INT 21H INC BX DEC CL JNZ SEND JMP AG1RETURN:MOV AH,4CH INT 21HDISPERR: MOV AH,9 MOV DX,OFFSET ERROR INT 21H JMP AG1I8250 PROC MOV AX,0083H MOV DX,1 INT 14H RETI8250 ENDPG1 PROC MOV AH,6 MOV AL,0 MOV CH,8 MOV CL,1 MOV DH,12 MOV DL,79 MOV BH,24H INT 10H MOV DH,9 MOV DL,2 MOV AH,2 INT 10H RET G1 ENDP G2 PROC MOV AH,6 MOV AL,0 MOV CH,8 MOV CL,1 MOV DH,12 MOV DL,79 MOV BH,64H INT 10H MOV DH,9 MOV DL,2 MOV AH,2 INT 10H RET G2 ENDP CLEAR PROC PUSHF PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6 MOV AL,0 MOV CH,00 MOV CL,50 MOV DH,24 MOV DL,79 MOV BH,07H INT 10H POP DX POP CX POP BX POP AX

温馨提示

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

评论

0/150

提交评论