接口的技术08-2串行通信接口8250
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.8432MHZ基准时钟,进行1 ~ 65535次分频后由BAUDOUT引脚输出的频率为 16×b/s的时钟。8250初始化时,必须将16位的分频次数分两次写入高低两个8位 分频次数锁存器DLH和DLL 分频次数 = 1843200HZ / 16×波特率 (基准时钟)
4、调制解调控制寄存器MCR(100B 3FCH)
MR:主复位输入信号,高电平有效 ADS-:地址选通信号=AEN DISTR、DISTR-:数据输入选通信号 DOSTR、DOSTR-:数据输出选通信号 DDIS:驱动器禁止信号,在CPU从 8250读取数据时为低电平,其他时 间为高电平禁止外部收发器对系统 总线的驱动 CSOUT:片选输出信号 XTAL1、XTAL2:外部时钟端 中断控制逻辑: INTR:中断请求输出信号 MODEM控制逻辑: CTS-:清除发送信号 RTS-:请求发送信号 DTR-:数据终端准备好信号 DSR-:数据装置准备好信号 RLSD-:接收线路信号检测信号 RI-:振铃指示信号 OUT1-:由用户编程指定的输出端 OUT2-:与OUT1一样,可以由用户 编程指定(PC用)
第二部分
PC 微机异步通信适配器的分析和使用
一、PC中的UART
1.INS8250
2.PC16450/PC16550 带16字节的发送缓冲器和14字节的接收缓冲器 FIFO
我 的 电 脑 中 串 口 配 置
3.端口基地址,硬件中断请求号,中断向量: COM1: 3F8H,4,0C COM2: 2F8H, 3, 0B 当加入其他的串口卡后,其地址一般为
ERROR:
MOV DX,3F8H
IN AL,DX ;接收一个字节
2. 中断方式
以查询方式发送数据,以中断方式接收数据, INISIR:MOV DX,3FBH MOV AL,80H OUT DX,AL ;置DLAB=1 MOV DX,3F8H MOV AL,0CH OUT DX,AL MOV DX,3F9H MOV AL,0 ;置除数为000CH,规定波特 率为9600波特 OUT DX,AL
D7 D6
0
D5
0
D4
D3
D2
D1
D0 DTR
0
LOOP OUT2 OUT1 RTS
其中D0 ~ D3位对应8250的四个引脚,当该位为1时,相应的引脚输出有效的低电平。 当D4 = 1时,8250工作循环回送状态。(此时8250发送的数据被自身接收。用于自检)
5、调制解调状态寄存器MSR(110B 3FEH)
选择异步通信格式
00:5位 字符长 01:6位 10:7位 11:8位
0 表 示 正 常 收 发 D7 = 0 寻址TBR、RBR IER D7 = 1寻址DLL、DHL
0:1个停止位 1:1.5个停止位(字符长5位) 停止位 2个停止位(字符长6 ~ 8位)
0:无校验位 1:有校验位 校验类型 0:奇校验, 1:偶校验 固定奇偶位,既当D4,D3 = 11时(偶校验),D5 = 0 当D4,D3 = 01时(奇校验),D5 = 1
则波特率除数BRD与波特率Baud之间的关系如下式所示:
BRD=时钟频率/(16×Baud)。 例如,若要计算波特率为1200b/s的波特率除数,则有: BDR=1843200/(16×1200)=0060H。
端口地址
初始化顺序
1、通信线路控制器 ( 011B PC机地址 3FBH)
D7 D6 D5 D4 D3 D2 D1 D0
2.写通讯线控制字 MOV DX,3FBH ;LCR的地址 MOV AL,0AH ;1 位停止位,7位数据位,奇校验 OUT DX,AL ;初始化通信控制寄存器
3.写MODEM控制字 MOV DX,3FCH ;MCR的地址 MOV AL,03H ;使DTR和RTS有效/3/13/B/1B OUT DX,AL ;初始化modem控制器
波特率发生器
除数寄存器低位
MODE控制寄存器
MODE状态寄存器
控制逻辑
中断允许寄存器 中断识别寄存器 控制逻辑
INTRPT
3. 连接
PC / XT异步通信适配器电路
四、寄存器与BPS
1.地址分配及其复用
3根地址信号线:A2 A1 A0 8个地址,7个可用,10个可编程物理端口,复用。 2.10个寄存器及其每位的作用 。。。。。。。。。。。。。 2.波特率除数 波特率除数(BRD)是16位数,它与UART的数据传输速率 (波特率)有关。当使用UART的内部时钟频率为1.8432MHz时,
D7 0 D6 0 D5 D4 0 D3
0
D2
D1
D0
0
1:无中断请求 中断源 0:有中断请求 优先级最低 00:MODEM状态发生变化中断 01:发送寄存器空 10:接收数据就绪 优先级最高 11:接收数据错
7、中断允许寄存器 IER (001 3F9H)
D7 0 D6 0 D5 0 D4 0 D3 D2 D1 D0
MOV DX,3FBH MOV AL,0AH ;1 位停止位,7位数据位,奇校验 OUT DX,AL ;初始化通信控制寄存器 MOV DX,3FCH MOV AL,0BH ;使OUT2 ,DTR和RTS 有效
2.编程:
1)自己编写初始化及接收发送程序 2)调用BIOS编程:INT 14H
3)调用DOS编程: INT 21H,调用号 03和04
4)DOS下按照文件编程,文件名就是COM1:或COM2: 5)WINDOWS下VB编程,用MSCOMM控件编程
6)WINDOWS下VC编程,用类、控件,或者按文件编程。
接收移位寄存器 发送移位寄存器
SIN SOUT
发送器控制逻辑
XTAL1 XTAL2 BAUD OUT RTS CTS DTR DSR RLSD RI OUT1 OUT2
CS0 CS1 CS2 A2 A1 A0 ADS DISTR DISTR DOSTR D 写 O 控 制 逻 O 辑
发送移位寄存器 SOUT:串行输出信号 接收移位寄存器 SIN:串行输入信号 RCLK:接收时钟信号 波特率发生器 BAUDOUT:波特率输出
2.内部结构
D0 ~ D7 数 据 总 线 缓 冲 器 内 部 数 据 总 线
接收器控制逻辑 RCLK
数据接收寄存器
数据发送寄存器 线路控制寄存器 线路状态寄存器 除数寄存器高位
;检查THR是否空
查询方式实现数据的接收。 MOV DX,3F8H IN AL,DX ;接收一个字节 RECVPRG: MOV DX,3FDH WAITRBR: IN AL,DX TEST AL,1EH ;检查是否有任何错误产生 JNZ ERROR TEST AL,01H ;检查数据准备好否 JZ WAITRBR MOV DX,3F8H IN AL,DX ;接收一个字节 AND AL,7FH ;只保留低7位 …
2、通信状态寄存器 LSR (101 3FDH)
D7 0 D6 D5 D4 D3 FE D2 PE D1 D0 OE DR 1:接收数据就绪 1:溢出错
TSRE THRE BI
1:奇偶较验错 1:幀错误
1:正在传输中止符 1:发送缓冲器空
发送移位寄存器空
3、分频次数锁存器DLH和DLL (3F9H,3F8H)
D7 RLSD D6
RI
D5
D4
D3
D2
RI
D1
D0 CTS
DSR CTS RLSD
DSR
MSR检测8250芯片4个输入引脚状态。 D0 ~ D3置1表示允许四个引脚电平发生变化。 D4 ~ D7表示四个引脚的电平,1:低电平(有效电平), 0:高电平。
6、中断识别寄存器 IIR(010B 3FAH)
7)用开发包编程:有很多,可以从网上下载。
三、UART的管脚与结构
1.管脚
D0 D1 D2 D3 D4 D5 D6 D7 RC LK SIN SOUT CS0 CS1 CS2 BAUDOUT XTAL1 XTAL2 DOSTR DOSTR GND
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
VCC RI RLSD DSR CTS MR OUT1 DTR RTS OUT INTR NC A0 A1 A2 ADS CSOUT DDIS DISTR DISTR
管脚信号说明
数据总线缓冲器:D0~D7:双向数 据线 选择与控制逻辑: CS0、CS1、CS2-:输入片选信号 A0、A1、A2:8250内部寄存器选择 信号
4.写中断允许字(中断方式) MOV DX,3F9H ;IER的地址 MOV AL,0 ;禁止所有中断 OUT DX,AL ;写中断允许寄存器
七、8250的应用举例
1.查询方式 假定要发送的字节数放在BX中,要发送的数 据顺序存放在以DATA为首地址的内存区中, 则发送数据的程序段如下所示。
SENDPRG: MOV DX,3FDH LEA SI,DATA WAITTHR: IN AL,DX TEST AL,20H;检查THR是否空 JZ WAITTHR PUSH DX MOV DX,3F8H LODSB OUT DX,AL POP DX DEC BX JNZ WAITTHR …
EDSS1 ELS1 ETBE1 ERBF1
接收数据准备好中断 D0 ~ D3位为1时,相应的位允许 相应的中断 发送寄存器空中断 接收数据错中断
MODE状态中断
五、8250工作过程
1.数据发送过程
CPU将要发送的数据以字符为单位写到8250的THR中 ()。当TSR中的数据全部移出变空时,存于THR中待发 送的数据将会自动发送并行送到TSR(8250初始化后, TSR为空状态,所以初始化后传送到THR的第一个字符总 是立即送到TSRE。)。TSR在发送时钟的激励下,按照 事先和接收方约定的字符传送式(参见图7-35),加上起始 位,奇偶校验位和停止位,再以约定的波特率(由波特率控 制部分产生)按照从底到高的顺序一位一位的由SOUT端发 送出去。 一旦THR的内容送到TSR ,就会在LSR中建立"数据发送 保持寄存器空"的状态位;而且也可以用此状态位来触发产 生中断。因此,查询状态位或者利用该状态触发的中断即 可实现数据的连续发送。
2.数据接收过程
由通信对方来的数据在接收时钟RCLK的作用下, 通过SIN端逐位进入RSR。RSR根据初始化时定 义的数据位数确定接收到了一个完整的数据后会 立即将数据自动并行传送到RBR。RBR收到 RSR 的数据后,就立即在状态寄存器中建立"接 收到数据准备好"的状态,而且也可以用此状态 位来触发中断。因此,查询状态位或者利用该状 态触发的中断即可实现数据的连续接收。 由于串行异步通信的速率低,无论是用查询方式 还是中断方式来实现异步通信均不很困难。
SENDPRG: MOV DX,3FDH LEA SI,DATA WAITTHR: IN AL,DX TEST AL,20H JZ WAITTHR PUSH DX MOV DX,3F8H LODSB OUT DX,AL POP DX DEC BX DEC BX JNZ WAITTHR …
六、8250初始化编程
1.写BPS
8250初始化时,通常首先使通信控制字的D7=1, 即使DLAB为1 .在此条件下,将除数低8位和高8 位分别写入8250内部的除数寄存器。
1. 2. 3. 4. 5. 6. 7. 8. 9.
MOV DX,3FBH ;LCR的地址 MOV AL,80H ;开始 OUT DX,AL; MOV DX,3F8H ;使LCR的D7=1 MOV AL,60H ;DLL的地址 OUT DX,AL ;写除数低8位 INC DX ;DLH的地址 MOV AL,0 OUT DX,AL ;写除数高8位
COM3: 3E8, 4 ,0C
COM4: 2E8, 3 , 0B 由于冲突,一般应该将中断请求修改为其他保留的号。 4.多串口卡:2,4,8,16,32 提供标准的编程开发包。 端口地址:每个一口,但中断一个(多个) 如MOXA卡
二、UART的简单应用 1.连线:RS232C接口标准,3线或7线连接方式
4、调制解调控制寄存器MCR(100B 3FCH)
MR:主复位输入信号,高电平有效 ADS-:地址选通信号=AEN DISTR、DISTR-:数据输入选通信号 DOSTR、DOSTR-:数据输出选通信号 DDIS:驱动器禁止信号,在CPU从 8250读取数据时为低电平,其他时 间为高电平禁止外部收发器对系统 总线的驱动 CSOUT:片选输出信号 XTAL1、XTAL2:外部时钟端 中断控制逻辑: INTR:中断请求输出信号 MODEM控制逻辑: CTS-:清除发送信号 RTS-:请求发送信号 DTR-:数据终端准备好信号 DSR-:数据装置准备好信号 RLSD-:接收线路信号检测信号 RI-:振铃指示信号 OUT1-:由用户编程指定的输出端 OUT2-:与OUT1一样,可以由用户 编程指定(PC用)
第二部分
PC 微机异步通信适配器的分析和使用
一、PC中的UART
1.INS8250
2.PC16450/PC16550 带16字节的发送缓冲器和14字节的接收缓冲器 FIFO
我 的 电 脑 中 串 口 配 置
3.端口基地址,硬件中断请求号,中断向量: COM1: 3F8H,4,0C COM2: 2F8H, 3, 0B 当加入其他的串口卡后,其地址一般为
ERROR:
MOV DX,3F8H
IN AL,DX ;接收一个字节
2. 中断方式
以查询方式发送数据,以中断方式接收数据, INISIR:MOV DX,3FBH MOV AL,80H OUT DX,AL ;置DLAB=1 MOV DX,3F8H MOV AL,0CH OUT DX,AL MOV DX,3F9H MOV AL,0 ;置除数为000CH,规定波特 率为9600波特 OUT DX,AL
D7 D6
0
D5
0
D4
D3
D2
D1
D0 DTR
0
LOOP OUT2 OUT1 RTS
其中D0 ~ D3位对应8250的四个引脚,当该位为1时,相应的引脚输出有效的低电平。 当D4 = 1时,8250工作循环回送状态。(此时8250发送的数据被自身接收。用于自检)
5、调制解调状态寄存器MSR(110B 3FEH)
选择异步通信格式
00:5位 字符长 01:6位 10:7位 11:8位
0 表 示 正 常 收 发 D7 = 0 寻址TBR、RBR IER D7 = 1寻址DLL、DHL
0:1个停止位 1:1.5个停止位(字符长5位) 停止位 2个停止位(字符长6 ~ 8位)
0:无校验位 1:有校验位 校验类型 0:奇校验, 1:偶校验 固定奇偶位,既当D4,D3 = 11时(偶校验),D5 = 0 当D4,D3 = 01时(奇校验),D5 = 1
则波特率除数BRD与波特率Baud之间的关系如下式所示:
BRD=时钟频率/(16×Baud)。 例如,若要计算波特率为1200b/s的波特率除数,则有: BDR=1843200/(16×1200)=0060H。
端口地址
初始化顺序
1、通信线路控制器 ( 011B PC机地址 3FBH)
D7 D6 D5 D4 D3 D2 D1 D0
2.写通讯线控制字 MOV DX,3FBH ;LCR的地址 MOV AL,0AH ;1 位停止位,7位数据位,奇校验 OUT DX,AL ;初始化通信控制寄存器
3.写MODEM控制字 MOV DX,3FCH ;MCR的地址 MOV AL,03H ;使DTR和RTS有效/3/13/B/1B OUT DX,AL ;初始化modem控制器
波特率发生器
除数寄存器低位
MODE控制寄存器
MODE状态寄存器
控制逻辑
中断允许寄存器 中断识别寄存器 控制逻辑
INTRPT
3. 连接
PC / XT异步通信适配器电路
四、寄存器与BPS
1.地址分配及其复用
3根地址信号线:A2 A1 A0 8个地址,7个可用,10个可编程物理端口,复用。 2.10个寄存器及其每位的作用 。。。。。。。。。。。。。 2.波特率除数 波特率除数(BRD)是16位数,它与UART的数据传输速率 (波特率)有关。当使用UART的内部时钟频率为1.8432MHz时,
D7 0 D6 0 D5 D4 0 D3
0
D2
D1
D0
0
1:无中断请求 中断源 0:有中断请求 优先级最低 00:MODEM状态发生变化中断 01:发送寄存器空 10:接收数据就绪 优先级最高 11:接收数据错
7、中断允许寄存器 IER (001 3F9H)
D7 0 D6 0 D5 0 D4 0 D3 D2 D1 D0
MOV DX,3FBH MOV AL,0AH ;1 位停止位,7位数据位,奇校验 OUT DX,AL ;初始化通信控制寄存器 MOV DX,3FCH MOV AL,0BH ;使OUT2 ,DTR和RTS 有效
2.编程:
1)自己编写初始化及接收发送程序 2)调用BIOS编程:INT 14H
3)调用DOS编程: INT 21H,调用号 03和04
4)DOS下按照文件编程,文件名就是COM1:或COM2: 5)WINDOWS下VB编程,用MSCOMM控件编程
6)WINDOWS下VC编程,用类、控件,或者按文件编程。
接收移位寄存器 发送移位寄存器
SIN SOUT
发送器控制逻辑
XTAL1 XTAL2 BAUD OUT RTS CTS DTR DSR RLSD RI OUT1 OUT2
CS0 CS1 CS2 A2 A1 A0 ADS DISTR DISTR DOSTR D 写 O 控 制 逻 O 辑
发送移位寄存器 SOUT:串行输出信号 接收移位寄存器 SIN:串行输入信号 RCLK:接收时钟信号 波特率发生器 BAUDOUT:波特率输出
2.内部结构
D0 ~ D7 数 据 总 线 缓 冲 器 内 部 数 据 总 线
接收器控制逻辑 RCLK
数据接收寄存器
数据发送寄存器 线路控制寄存器 线路状态寄存器 除数寄存器高位
;检查THR是否空
查询方式实现数据的接收。 MOV DX,3F8H IN AL,DX ;接收一个字节 RECVPRG: MOV DX,3FDH WAITRBR: IN AL,DX TEST AL,1EH ;检查是否有任何错误产生 JNZ ERROR TEST AL,01H ;检查数据准备好否 JZ WAITRBR MOV DX,3F8H IN AL,DX ;接收一个字节 AND AL,7FH ;只保留低7位 …
2、通信状态寄存器 LSR (101 3FDH)
D7 0 D6 D5 D4 D3 FE D2 PE D1 D0 OE DR 1:接收数据就绪 1:溢出错
TSRE THRE BI
1:奇偶较验错 1:幀错误
1:正在传输中止符 1:发送缓冲器空
发送移位寄存器空
3、分频次数锁存器DLH和DLL (3F9H,3F8H)
D7 RLSD D6
RI
D5
D4
D3
D2
RI
D1
D0 CTS
DSR CTS RLSD
DSR
MSR检测8250芯片4个输入引脚状态。 D0 ~ D3置1表示允许四个引脚电平发生变化。 D4 ~ D7表示四个引脚的电平,1:低电平(有效电平), 0:高电平。
6、中断识别寄存器 IIR(010B 3FAH)
7)用开发包编程:有很多,可以从网上下载。
三、UART的管脚与结构
1.管脚
D0 D1 D2 D3 D4 D5 D6 D7 RC LK SIN SOUT CS0 CS1 CS2 BAUDOUT XTAL1 XTAL2 DOSTR DOSTR GND
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
VCC RI RLSD DSR CTS MR OUT1 DTR RTS OUT INTR NC A0 A1 A2 ADS CSOUT DDIS DISTR DISTR
管脚信号说明
数据总线缓冲器:D0~D7:双向数 据线 选择与控制逻辑: CS0、CS1、CS2-:输入片选信号 A0、A1、A2:8250内部寄存器选择 信号
4.写中断允许字(中断方式) MOV DX,3F9H ;IER的地址 MOV AL,0 ;禁止所有中断 OUT DX,AL ;写中断允许寄存器
七、8250的应用举例
1.查询方式 假定要发送的字节数放在BX中,要发送的数 据顺序存放在以DATA为首地址的内存区中, 则发送数据的程序段如下所示。
SENDPRG: MOV DX,3FDH LEA SI,DATA WAITTHR: IN AL,DX TEST AL,20H;检查THR是否空 JZ WAITTHR PUSH DX MOV DX,3F8H LODSB OUT DX,AL POP DX DEC BX JNZ WAITTHR …
EDSS1 ELS1 ETBE1 ERBF1
接收数据准备好中断 D0 ~ D3位为1时,相应的位允许 相应的中断 发送寄存器空中断 接收数据错中断
MODE状态中断
五、8250工作过程
1.数据发送过程
CPU将要发送的数据以字符为单位写到8250的THR中 ()。当TSR中的数据全部移出变空时,存于THR中待发 送的数据将会自动发送并行送到TSR(8250初始化后, TSR为空状态,所以初始化后传送到THR的第一个字符总 是立即送到TSRE。)。TSR在发送时钟的激励下,按照 事先和接收方约定的字符传送式(参见图7-35),加上起始 位,奇偶校验位和停止位,再以约定的波特率(由波特率控 制部分产生)按照从底到高的顺序一位一位的由SOUT端发 送出去。 一旦THR的内容送到TSR ,就会在LSR中建立"数据发送 保持寄存器空"的状态位;而且也可以用此状态位来触发产 生中断。因此,查询状态位或者利用该状态触发的中断即 可实现数据的连续发送。
2.数据接收过程
由通信对方来的数据在接收时钟RCLK的作用下, 通过SIN端逐位进入RSR。RSR根据初始化时定 义的数据位数确定接收到了一个完整的数据后会 立即将数据自动并行传送到RBR。RBR收到 RSR 的数据后,就立即在状态寄存器中建立"接 收到数据准备好"的状态,而且也可以用此状态 位来触发中断。因此,查询状态位或者利用该状 态触发的中断即可实现数据的连续接收。 由于串行异步通信的速率低,无论是用查询方式 还是中断方式来实现异步通信均不很困难。
SENDPRG: MOV DX,3FDH LEA SI,DATA WAITTHR: IN AL,DX TEST AL,20H JZ WAITTHR PUSH DX MOV DX,3F8H LODSB OUT DX,AL POP DX DEC BX DEC BX JNZ WAITTHR …
六、8250初始化编程
1.写BPS
8250初始化时,通常首先使通信控制字的D7=1, 即使DLAB为1 .在此条件下,将除数低8位和高8 位分别写入8250内部的除数寄存器。
1. 2. 3. 4. 5. 6. 7. 8. 9.
MOV DX,3FBH ;LCR的地址 MOV AL,80H ;开始 OUT DX,AL; MOV DX,3F8H ;使LCR的D7=1 MOV AL,60H ;DLL的地址 OUT DX,AL ;写除数低8位 INC DX ;DLH的地址 MOV AL,0 OUT DX,AL ;写除数高8位
COM3: 3E8, 4 ,0C
COM4: 2E8, 3 , 0B 由于冲突,一般应该将中断请求修改为其他保留的号。 4.多串口卡:2,4,8,16,32 提供标准的编程开发包。 端口地址:每个一口,但中断一个(多个) 如MOXA卡
二、UART的简单应用 1.连线:RS232C接口标准,3线或7线连接方式