实验七,双机串行通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七、双机串行通信

一、实验目的

1、熟悉微机接口实验装置的结构及使用方法

2、掌握通信接口芯片8251和8250的功能和使用方法

3、学会串行通信程序的编制方法

二、实验仪器

1、PC实验箱及连接线

2、两台计算机

3、9针接头串行电缆

三、芯片介绍(见实验七)

四、实验内容

实验原理图和接线同图4.12和4.13,不同的是要将串行电缆从实验箱上的RS-232接口连接到另外一台计算机上的串口,两台机子通过8250和8251进行字串信息的相互传输。

两台机子分别设置为发送和接收状态,发送端从键盘输入一段字符信息送8250或8251,接收端则从8251或8250接收一段字符。发送和接收结束后回到主选菜单,可进行再次通信。在发送和接收过程中,有一个出错处理过程,采用接收方回传和发送方确认来保证发送和接收正确。

五、预习要求

1、熟悉8250和8251的工作原理

2、熟悉实验原理

3、编制实验要求的汇编语言源程序

五、程序流程图和程序清单

1、主程序

1、发送子程序:

3、接收子程序:

程序清单:

;SY51-2.ASM

TIMCTL EQU 293H

TIMER0 EQU 290H

CLK EQU 3000

BPS EQU 9600

FACTOR EQU 16

DATA51 EQU 280H

CTRL51 EQU 281H

DATA50 EQU 2F8H

DRL50 EQU 2F8H

DRH50 EQU 2F9H

IER50 EQU 2F0H

IIR50 EQU 2FAH

LCR50 EQU 2FBH

MCR50 EQU 2FCH

LSR50 EQU 2FDH

MSR50 EQU 2FEH

DIVL EQU 0CH

DIVH EQU 00H

DATA SEGMENT

MESS1 DB 'PRESS 1 TO SEND MESSAGE!',0AH,0DH

DB 'PRESS 2 TO RECEIVE MESSAGE!',0AH,0DH

DB 'PRESS 3 TO QUIT!',0AH,0DH,0AH,0DH,'$' ERROR DB '*****PLEASE SELECT AGAIN!*****',0AH,0DH,'$'

MES1 DB 'Sending message......',0AH,0DH,0AH,0DH,'$'

MES2 DB 'Receiving message......',0AH,0DH,0AH,0DH,'$'

MESS2 DB 50

DB ?

MES DB 50 DUP(?)

MESS3 DB 50 DUP(?)

BUF1 DB ?

BUF2 DB ?

DATA ENDS

STACK SEGMENT PARA STACK

DB 128 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA

MOV DS,AX

CALL SETTIM

CALL INIT51

CALL INIT50

AG: LEA DX,MESS1

MOV AH,09H

INT 21H

AG1: MOV DL,0FFH ;显示提示信息,

MOV AH,06H ;进行菜单选择

INT 21H

JZ AG1

CMP AL,'1'

JZ SD

CMP AL,'2'

JZ RC

CMP AL,'3'

JZ EXIT

LEA DX,ERROR

MOV AH,09H

INT 21H

JMP AG

SD: CALL SEND

JMP AG

RC: CALL RECE

JMP AG

EXIT: MOV AX,4C00H

INT 21H

SEND PROC ;发送子程序

MOV AH,09H

LEA DX,MES1

INT 21H ;显示提示信息

MOV AH,0AH

LEA DX,MESS2

INT 21H ;从键盘输入字串信息

MOV CL,MESS2[1]

LOP1: MOV AL,CL

MOV BUF1,AL

CALL SED ;发送一个字符(字串长度) CALL REC ;接收回传字符

CMP AL,CL

JZ SKIP1

MOV AL,15H ;回传字符不同于发送字符

MOV BUF1,AL ;有错,发出错标志,重发字符

CALL SED

JMP LOP1

SKIP1: LEA SI,MES ;发送字串内容(含出错处理)

LOP2: MOV AL,[SI]

MOV BUF1,AL

CALL SED

CALL REC

MOV AL,BUF2

CMP AL,[SI]

JZ SKIP2

MOV AL,15H

MOV BUF1,AL

CALL SED

JMP LOP2

SKIP2: DEC CL

JZ EXIT1

INC SI

JMP LOP2

EXIT1: MOV CX,3

LOOP1: MOV AH,06H

MOV DL,0AH

INT 21H

MOV DL,0DH

INT 21H

LOOP LOOP1

RET

SEND ENDP

RECE PROC ;接收子程序

MOV AH,09H

LEA DX,MES2

INT 21H ;显示提示信息

LOP3: CALL REC1 ;接收一个字符;并保存在CL中 MOV CL,BUF2

MOV BUF1,CL

CALL SED1 ;回送字符

CALL REC1 ;接收字符

MOV AL,BUF2

CMP AL,15H

JZ LOP3 ;是出错标志,表明上一个接收

;字符已经出错,需要重现接收

LEA DI,MESS3

LOP4: MOV [DI],AL ;将刚才接收字符送缓冲区

MOV BUF1,AL

CALL SED1 ;回送字符

DEC CL ;判断是否接收完毕,没有则继

JZ EXIT2 ;续进行接收、回传、判断操作

CALL REC1

MOV AL,BUF2

CMP AL,15H

相关文档
最新文档