push dx
mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h pop dx
je start ;若没有转START mov ah,4ch ;退出 int 21h
disp proc near ;显示子程序 mov dl,al
cmp dl,9 ;比较DL是否>9
jle ddd ;若不大于则为'0'-'9',加30h为其ASCII码 add dl,7 ;否则为'A'-'F',再加7 ddd: add dl,30h ;显示 mov ah,02 int 21h ret
disp endp code ends end start
五、串行通讯
一、实验目的
1、 进一步了解串行通信的基本原理。
2、 掌握串行接口芯片8250的工作原理和编程方法。 3、 熟悉PC机串行口的基本连接方法
二、实验内容
1、PC机RS-232串口自发自收。
按照PC机串口自发自收的连接方法连线。编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。 2、 两台PC机间RS-232串口通信。
按照PC机RS-232串口直接互连的方法连接两台PC机。 编写PC机直接互连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。当键入感叹号“!”,结束收发过程。
21
三.实验原理
1)本实验为异步通信:以字符为单位进行传送,每传送一个字符,以起始位作为开始标志,以停止位作为结束标志。
异步串行通信的工作过程是:传送开始后,接收设备不断地检测传输线是否有起始位到来,当接收到一系列的“1”(空闲或停止位)之后,检测到第一个“0”,说明起始位出现,就开始接收所规定的数据位、奇偶校验位及停止位。经过接收器处理,将停止位去掉,把数据位拼装成一字节数据,并且经奇偶校验无错误,才算是正确地接收到了一个字符。当一个字符接收完毕,接收设备又继续测试传输线,监视“0”电平的到来(下一个字符的开始),直到全部数据接收完毕。
帧 Dn?D0 D1 数据位 起 空闲位 始 位 奇 偶 校验位 停 止 位 空闲位
2)8250各部分功能说明
8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(LCR)的最高位DLAB来决定。各寄存器的地址和格式如下所示:.
22
3)数据发送和接收:
四.程序清单 1.自发自收
DATA SEGMENT CHL
STACK1 SEGMENT STACK DW 100 DUP(0) STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX
;--------------INIT----------------
23
DB 0AH,0DH,'$' ;换行字符串
DATA ENDS
MOV DX,3FBH ; MOV AL,80H ;DLAB=1
OUT DX,AL
MOV AX,0CH ;N=12 BAUD=9600bps MOV DX,3F8H ;低位
MOV AL,AH INC DX
OUT DX,AL
OUT DX,AL
MOV AL,03H ;八位数据,1停止,无校验 MOV DX,3FBH ;线路控制REG
OUT DX,AL
MOV AL,0 ;屏蔽全部中断 MOV DX,3F9H
OUT DX,AL
WAIT1: MOV DX,3FDH ;读线路状态寄存器
CHAR: PUSH AX
MOV DL,AL MOV AH,02H INT 21H
MOV DX,OFFSET CHL;输出字符串换行 MOV AH,09H
24
IN AL,DX
TEST AL,1EH ;判断是否有错 JNZ ERROR
TEST AL,01H ;判断是否收到 JNZ RECEIVE
TEST AL,20H ;判断发送端是否空 JZ WAIT1
MOV DL,0FFH ;六号功能调用读入待发送数据 MOV AH,06H INT 21H JZ WAIT1
MOV DX,3F8H ;写发送REG OUT DX,AL JMP WAIT1
;返回 WAIT1
;显示接收
相关推荐: