实验十
串行通信
【实验名称】
串行通信
【实验目的】
了解串行通信原理,会编写串行通信程序。
【实验原理】见教材。
实验连线图
实验内容和实验连线
【实验内容】
编写串行通信程序,使两台微机之间按串行通信
标准协议使用COM1进行串行通信。
【实验连线】
两台微机都使用COM1连线。连线方法链接。
流程图
流程图第一部分
流程图
第二部
分
实验程序
CODECODE SEGMENTSEGMENT ' 'CODECODE''
STARTSTART PROCPROC FAR FAR
ASSUMEASSUME CS: CS:CODECODE
MOV DX,3FBH MOV DX,3FBH ;;设置波特率设置波特率
MOV AL,80H MOV AL,80H
OUT DX,AL OUT DX,AL
MOV DX,3F8H MOV DX,3F8H
MOV AL,12 MOV AL,12
OUT DX,AL OUT DX,AL
INC DX INC DX
MOV AL,0 MOV AL,0
OUT DX,AL OUT DX,AL
MOV DX,3FBH MOV DX,3FBH ;;设置数据位设置数据位,,停止位停止位,,是否校验是否校验,,奇奇//偶校验选择偶校验选择
MOV AL,0AH MOV AL,0AH
OUT DX,AL OUT DX,AL
MOV DX,3FCH MOV DX,3FCH ;;设置一方发送设置一方发送,,另一方接收另一方接收
MOV AL,03H MOV AL,03H
OUT DX,AL OUT DX,AL
MOV DX,3F9H MOV DX,3F9H ;;设置以查询方式进行串行通信设置以查询方式进行串行通信
MOV AL,0 MOV AL,0
OUT DX,AL OUT DX,AL
FOREVER:MOV DX,3FDH ;读串口状态
IN AL,DX ;00100001B
TEST AL,01H ;测试串口数据位状态
JNZ RECEIVE ;若对方有数据到,转到RECEIVE接收
TEST AL,20H ;测试本方的发送缓冲区是否为空
JZ FOREVER ;若不空,继续查询等待
MOV AH,1 ;若空,判断本方是否有键盘动作
INT 16H
JZ FOREVER ;若本方无键盘动作,继续查询等待
MOV AH,0 ;若本方有键盘动作,从键盘得到其
INT 16H ;ASIIC代码
MOV DX,3F8H ;向数据口发送
OUT DX,AL
MOV AH,2 ;利用2号中断在本方屏幕上显示
MOV DL,AL
INT 21H
NEXT: JMP FOREVER
实验程序(续)
实验程序(续)
RECEIVE:MOV DX,3F8HRECEIVE:MOV DX,3F8H ;;接收数据接收数据
IN AL,DX IN AL,DX
AND AL,7FH AND AL,7FH ;;取出低取出低77位有效数据位有效数据
DISP: MOV AH,2DISP: MOV AH,2 ;;利用利用22号中断在本方屏幕上显示号中断在本方屏幕上显示
MOV DL,AL MOV DL,AL
INT 21H INT 21H
JMP FOREVER JMP FOREVER ;;继续查询等待继续查询等待
STARTSTART ENDPENDP
CODECODE ENDSENDS
ENDEND STARTSTART
思考题
1.修改程序,使之能接收回车控制码,在发送端和
接收端都能看到换行的效果。
2.修改程序,使之能接收Esc控制码,控制程序结束。
提示:回车控制码是0DH,换行控制码是0AH, Esc
控制码是1BH。