资源描述
学生实验报告
系别
电子工程系
课程名称
微计算机实验
班级
实验名称
可编程串行通信(8250)
姓名
实验时间
2010年 12 月 15 日
学号
指导教师
报 告 内 容
一、实验目的
1.了解串行通信的基本原理。
2.掌握串行接口芯片8250的工作原理和编程方法。
二、实验内容
利用8250的循环回送特性,将PC机作为发送和接收机,从键盘输入一个字符,将其ASCII码发送出去,再接收回来在屏幕上显示,实现自发自收。
三、实验步骤
微型计算机本身配置了两个串行通信接口,分别为串行口1(COM1)和串行口2(COM2),I/O端口地址分别为3F8H~3FFH和2F8H~2FFH,对外接口采用9针插座。串行通信接口采用8250。
8250寄存器的端口地址如表10-1所示。
表10-1
I/O端口
IN/OUT
DLAB
寄存器名称
3F8H
OUT
0
数据发送寄存器
3F8H
IN
0
数据接收寄存器
3F8H
OUT
1
除数寄存器低字节
3F9H
OUT
1
除数寄存器高字节
3F9H
OUT
0
中断允许寄存器
3FAH
IN
×
中断识别寄存器
3FBH
OUT
×
线路控制寄存器
3FCH
OUT
×
MODEM控制寄存器
3FDH
IN
×
线路状态寄存器
3FEH
IN
×
MODEM状态寄存器
3FFH
×
不用
1.传输线路控制寄存器LCR(3FBH)如图10-1所示。
图10-1
2.除数寄存器DLL、DLH(3F8H,3F9H)
常用波特率及除数对照表如表10-2所示。
表10-2
除数寄存器
波特率(BIT/S)
高字节
低字节
04H
17H
110
03H
00H
150
01H
80H
300
00H
C0H
600
00H
60H
1200
00H
30H
2400
00H
18H
4800
00H
0CH
9600
3.中断允许寄存器IER(3F9H)如图10-2所示。
图10-2
4.MODEM控制寄存器MCR(3FCH)如图10-3所示。
图10-3
5.9针串口插座(DB-9)外形如图10-4所示,引脚说明如表10-3所示。
图10-4
表10-3
9芯引脚号
引脚名称
RS-232C信号说明
1
空
2
RXD
接收数据
3
TXD
发送数据
4
DTR
数据终端就绪
5
GND
信号地
6
DSR
数据装置就绪
7
RTS
发送请求
8
CTS
发送允许
9
保护地
6.编程提示
(1)程序流程图如图10-5所示。
图10-5 程序流程图
四、实验参考程序
STACK SEGMENT PARA STACK 'STACK'
DB 256 DUP(?)
STACK ENDS
CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE
START PROC FAR
PUSH DS ;保存PSP 地址
XOR AX,AX
PUSH AX ;初始化8250为7位数据位,1位停止位,奇校
;验,波特率1200,并设定为内部连接方式
MOV DX,3FBH
MOV AL,80H
OUT DX,AL ;设传输线控制寄存器D7为1
MOV DX,3F8H ;设波特率为1200
MOV AL,60H
OUT DX,AL
MOV DX,3F9H
MOV AL,0
OUT DX,AL
MOV DX,3FBH ;设奇校验,1位停止位,7位数据位
MOV AL,0AH
OUT DX,AL
MOV DX,3FCH ;设MODEM控制寄存器发DTR和RTS信号,
;内部输出输入反接,中断禁止
MOV AL,13H
OUT DX,AL
MOV DX,3F9H ;设中断允许寄存器为0,使4种中断被屏蔽
MOV AL,0H
OUT DX,AL ;把接收到的字符显示出来,把键盘输入的字符发
;送出去
FOREVER: MOV DX,3FDH ;输入线状态寄存器内容,测试接收是否出错
IN AL,DX
TEST AL,1EH
JNZ ERROR
TEST AL,01H ;测试是否“接收数据准备好”
JNZ RECEIVE
TEST AL,20H ;测试是否“输出数据缓冲区空”
JZ FOREVER
MOV AH,1 ;测试是否“键盘缓冲区空”
INT 16H
JZ FOREVER
MOV AH,0 ;从键盘缓冲区取一个字符送AL
INT 16H
MOV DX,3F8H ;把字符发送到输出数据缓冲区
OUT DX,AL
JMP FOREVER
RECEIVE: MOV DX,3F8H ;接收数据准备好,输入字符送AL,取出低7位
IN AL,DX
AND AL,7FH
CMP AL,27 ;检查是否为ESC键
JZ EXIT ;是则退出
PUSH AX
MOV BX,0
MOV AH,14 ;显示收到的字符(即按键对应的字符)
INT 10H
POP AX
CMP AL,0DH ;测试是否回车字符?
JNZ FOREVER
MOV AL,0AH ;显示换行
MOV AH,14
MOV BX,0
INT 10H
JMP FOREVER
ERROR: MOV DX,3F8H ;输入错误字符,清除准备好标志
IN AL,DX
MOV AL,‘?’
MOV BX,0
MOV AH,14 ;显示“?”
INT 10H
JMP FOREVER
EXIT: MOV AH,4CH ;返回DOS
INT 21H
START ENDP
CODE ENDS
END START
五、实验结论与心得
成绩
教师签名
批改时间
年 月 日
6 / 6
展开阅读全文