微机接口实验报告-16550串口控制器应用实验Word下载.doc
《微机接口实验报告-16550串口控制器应用实验Word下载.doc》由会员分享,可在线阅读,更多相关《微机接口实验报告-16550串口控制器应用实验Word下载.doc(8页珍藏版)》请在冰豆网上搜索。
被访问的寄存器
0
000
接收数据寄存器(读),发送保持寄存器(写)
001
中断允许寄存器IER
1
波特率除数寄存器(低字节)
波特率除数寄存器(高字节)
X
010
中断识别寄存器IIR(只读),FIFO控制器FCR(只写)
011
线路控制寄存器LCR
100
MODEM控制寄存器MCR
101
线路状态寄存器LSR
110
MODEM状态寄存器MSR
111
Scratch寄存器
2.寄存器控制字说明
(1)线路控制寄存器(LCR),主要用于指定异步串行通信的数据格式。
见表11-2。
表11-2LCR格式
D6
D5
D4
D3
D2
D1
D0
DLAB
SB
SP
EPS
PEN
STB
WLS1
WLS0
除数存器访问允许
中止
设定
附加奇偶标志位选择
奇偶
校验
选择
允许
停止位选择
字符长度选择
1:
0:
禁止
正常
附加1位
不附加
11:
偶校验
01:
奇校验
X0:
无校验
1位停止位
1.5或2位停止位(根据D1D0)区分)
00:
5位01:
6位
10:
7位11:
8位
(2)线路状态寄存器(LSR),主要是向处理器提供有关数据传输的状态。
见表11-3。
表11-3LSR格式
D7
TSRE
THRE
B1
FE
PE
OE
DR
FIFO中接收数据错误
发送移位寄存器空
发送保持寄存器空
中止识别指示
接收格式错
接收奇偶错
接收重叠错
接收缓冲区满
(3)波特率除数寄存器,用该寄存器设置串行数据的传送波特率。
除数寄存器值=基准时钟频率÷
(16×
波特率)
16550芯片输入的基准时钟频率为1.8432MHz,若波特率为9600b/s,则除数寄存器值为000CH,DLH中应填00H,DLL中应填0CH。
16550常用波特率参数见表11-4。
表11-4常用的波特率参数表
(4)中断允许寄存器(IER),16550共有4级中断,按优先级从高到低依次为:
接收出错中断、接收缓冲器满中断、发送保持寄存器空中断和MODEM输入状态改变中断。
这些中断的允许或屏蔽由IER来控制。
见表11-5。
表11-5IER格式
D7
D6
D3
D2
D1
D0
I0E
I3E
I1E
I2E
类型0中断
MODEM状态改变
1-允许
0-屏蔽
类型3中断
接收出错
类型1中断
发送保持器空
类型2中断
接收缓冲区满
(5)中断标识寄存器(IIR),当16550处于中断处理方式,IIR指出有无待处理的中断发生及其类型,并且封锁比此类优先级低的所有类型中断。
见表11-6。
表11-6IIR格式
D0-
FIFO指示标志
超时中断
中断类型标识
未决中断指示
00-无FIFO
01-允许FIFO,但不可用
11-允许FIFO
0-不超时
1-超时
11-接收出错
10-接收缓冲器满
01-发送保持器空
00-MODEM状态改变
0-有
1-无
(6)MODEM控制寄存器(MCR),MCR控制芯片的4个引脚的输出和芯片的环路检测。
见表11-7。
表11-7MCR格式
D5
D4
环路检测
输出2
输出1
请求发送
数据终端就绪
0-正常收发
1-内部自循环
1-OUT2置0
1-OUT1置0
1-RTS置0
1-DTR置0
(7)MODEM状态寄存器(MSR),MSR反映UART与通信设备(如MODEM)之间联络信号的当前状态以及这些信号的变化情况。
见表11-8。
表11-8MSR格式
RLSD
RI
DSR
CTS
△RLSD
TERI
△DSR
△CTS
收到“接收线载波检测”
收到“振铃指示”
收到“数传机就绪”
收到“清除发送”
RLSD位发生改变
收到“振铃指示后沿”
DSR位发生变化
CTS位发生变化
说明:
D7=1表示输入引脚RLSD=0,MODEM收到来自电话线的载波信号。
D6=1表示输入引脚RI=0,MODEM收到振铃信号。
D5=1表示输入引脚DSR=0,MODEM做好了发送准备,请16550准备接收。
D4=1表示输入引脚CTS=0,MODEM做好了接收准备,16550可以发送数据。
D3,D1,D0位为“1”是说明在上次读取MSR之后,MSR的D7,D5,D4中相应位发生了变化。
D2位为“1”是说明输入到芯片的RI已由逻辑“1”状态变成逻辑“0”状态。
(8)FIFO控制寄存器(FCR),16550增加了一个FIFO缓冲器,用于缓冲正在发出或接收的数据,这是早期的UART器件所没有的。
FCR各位意义见表11-9。
表11-9FCR格式
位
意义
允许FIFO缓冲器工作
4
保留
1
清除接收FIFO缓冲器
5
不用
2
清除发送FIFO缓冲器
6
接收端中断触发器水平(LSB)
3
DMA方式
7
接收端中断触发器水平(MSB)
【实验说明及步骤】
对16550进行编程,不断向发送寄存器写数,用示波器观察TXD信号脉冲变化,仔细分析波形,理解波形原理。
串行传输的数据格式可设定如下:
传输波特率为9600baut,每个字节有一个逻辑“0”的起始位,8位数据位,1位逻辑“1”的停止位,如图11-3所示。
实验步骤如下:
(1)确认从PC机引出的两根扁平电缆已经连接在实验平台上;
(2)首先运行CHECK程序,查看I/O空间始地址;
(3)利用查出的地址编写程序,连续向发送寄存器写55H,然后编译链接;
(4)参考图11-5所示连接实验线路。
并将TXD与实验装置GND同示波器相连接;
(5)运行程序,在示波器上观察波形;
(6)可以改变发送的数据,再仔细观察波形。
图11-316550串口应用实验参考程序流程图
图11-4串行传输的数据格式
图11-516550串口应用实验参考接线图
【汇编源程序】
第8页
I0Y0 EQU 0DC00H
MY16550_0 EQU I0Y0+00H*4
MY16550_1 EQU I0Y0+01H*4
MY16550_3 EQU I0Y0+03H*4
STACK1 SEGMENT STACK
DW 256 DUP(?
)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:
CODE
START:
MOV DX,MY16550_3
MOV AL,80H
OUT DX,AL
MOV DX,MY16550_0
MOV AL,0CH
MOV DX,MY16550_1
MOV AL,00H
MOV AL,1BH
SEND:
MOV AL,53H
CALL DALLY
MOV AH,1
INT 16H
JZ SEND
QUIT:
MOV AX,4C00H
INT 21H
DALLY PROC NEAR
PUSH CX
PUSH AX
MOV CX,0100H
D1:
MOV AX,1000H
D2:
DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALLY ENDP
CODE ENDS
END START
【实验结果】
截图:
53H奇校验波形图53H偶校验波形图
57H奇校验波形图