第十章串行通信及串行通信接口
8250
本章内容
§ 10.1 串行通信的基本知识
§ 10.2串行通信接口的基本结构
§ 10.3 调制解调器( MODEM)
§ 10,4 8250通信编程
§ 10.1 串行通信的基本知识所谓串行通信就是使数据一位一位的进行传输而实现的通信,串行通信具有传输线少,成本低的优点,适合于远距离传输,速度慢。
串行通信一般在两个站 (终端和微机 )之间进行传送
①,单工(单行道,不准逆向行车)单向传输数据有线电视( CATV)、广播
1.串行通信的数据传输模式
②,半双工 准许数据双向传送,但是只有一根线,
必须 分时,某一时刻只能进行发送或接收(对讲机)
③,全双工 串行口之间分别有两根独立的传输发送和接收信号线,可以同时进行发送和接收。
串行通信在信息格式的约定上可分为两种方式异步通信同步通信
①,异步通信方式特点,以字符 /字节为单位传送,通信双方需约定协议 (格式,速率等 )
异步通信必须遵从两项规定,
a.数据的格式 每一个数据传送时,必须加一个起始位,后面加 1或 1.5或 2个停止位。
2.串行通信的方式异步通信时,字符 /字节是一帧一帧的传送,每帧字符必须靠起始位来同步,在异步通信的数据传送中,传输线上允许空字符。
b.波特率 ( bps)
波特率就是传送数据位的速率(用位 /秒)表示。
例 数据传送速率为 120字符 /秒,每帧包括 10个数据位,则波特率为 120× 10=1200位 /秒
=1200bps
常用的异步通信的波特率的值为,150,300、
600,1200,2400,4800,9600,14400,28800。
校验位奇校验,字符加上校验位有奇数个 1;
偶校验,字符加上校验位有偶数个 1 。
校验位的产生和检查由串行通信控制器内部自动产生,停止位也是由硬件自动产生的。(偶数个错误不能检测)
②,同步通信方式特点,利用同步字( SYN)获得双方的同步信息,
数据之间无间隔符(数据流)所以传输速率较高,
同步传输的数据格式:
传送数据作为被除数,发送器本身产生一固定除数,前者除以后者得到余数即为该“冗余”字符。
当数据和冗余字符一起被传送到接收器时,接收器产生和发送器相同的除数,和数据位相除,得到余数进行比较。( 99%)
3 串行通信的时钟
①,发送脉冲和接收脉冲发送方要靠发送脉冲(移位脉冲)将数据移出,
经 TXD引脚 → 对方接收方要靠接收脉冲(移位脉冲)将数据接入,
经 RXD引脚 → 串口在发送数据时,发送器用发送时钟的下降沿将移位寄存器的数据串行移位输出,并且对准数据位的前沿;在接收数据时,接收器用接收时钟的上升沿将数据位移入移位寄存器,对准数据位的中间位置,以保障可靠的接收数据。
发送方与接收方实现同步,随着数据的不断传输,将产生一个误差积累,有可能使数据丢失!
思考题:异步通信中如何实现同步?
②,检测脉冲接收方需对发送方发来的数据位进行检测,以决定是” 0“还是” 1“。
通常检测脉冲是移位脉冲的 16和 64倍(常选
16)。
检测脉冲的上升沿采样 RxD线,在一个字符的结束或若干个空闲位之后,每当连续采样到 RxD线上 8个低电平(起始位之半)后,便确认对方发送的是起始位,认为下一位送来的应是数据位,此后,
便每隔 16个检测脉冲连续采样 RxD线三次,按三中取二的原则确定采到的数据位是 0还是 1,并把采样到的数据作为输入数据,由移位脉冲将数据移入接收移位寄存器。
§ 10.2 串行通信接口的基本结构
① 接收移位寄存器:靠移位脉冲将数据串行传进来。
③ 接收脉冲发生器,产生接收的移位脉冲 (RXC)
② 接收数据缓冲寄存器:将移位寄存器中的数 →
缓冲寄存器,实现串-并的转换过程,向
CPU申请中断后,等待 CPU取走数据
④ 发送数据缓冲寄存器:接收 CPU送来的并行数据
⑥ 发送脉冲发生器,用来产生发送移位脉冲 (TXC)
⑤ 发送移位寄存器:接收发送缓冲寄存器的数据,完成并-串的转换,在移位脉冲的作用下,将数据移出去
⑨ 工作时钟 CLK,经分频后产生 RXC TXC
⑦ 状态触发器,PE OE CE
PE:奇偶校验出错状态,1”奇偶错
OE:溢出出错标志 接收到的数未被 CPU取走,又接收到新数,前一个数就丢失,这种现象称为溢出错,
CE:帧格式错标志 接收数据没有停止位
⑧ 读写,中断等控制逻辑在做远距离传输时,需要通过 MODEM将数字信号 → 模拟信号,可以利用电话线传输 (称为调制),接收方利用 MODEM将模拟信号转换为数字信号(称为解调),局域网不用调制解调器,用网卡即可。
调制解调器的调制方式有以下三种:
①振幅调制( Amplictute Shift Keying,ASK)
§ 10.3 调制解调器( MODEM)
② 频率调制( Frequency Shift Keying,FSK)
③ 相位调制( Phase Shift Keying,PSK)
§ 10.4可编程串行通信接口芯片 8250A
( 3)线路控制寄存器 ( 3FBH)
规定了异步串行通信的数据格式
( 1)发送器保持寄存器( 3F8H)
包含要发送的字符,其中第 0位是串行发送的第 1位数据
( 2)接收器数据 寄存器( 3F8H)
存放接收的字符
( 4)波特率因子寄存器 ( 3F8H,3F9H)
当前线路寄存器写入 D7 = 1时,接着对口地址 3F8H,3F9H可分别写入波特率因子分频数的低字节和高字节。
如:要求发送波特率为 1200bps,则波特率因子
3F8H口地址应写入 96( 60H),3F9H口地址应写入 0
( 5)中断允许寄存器( 3F9H)
允许 8250四种类型中断(相应位置 1)
( 6) 中断标识寄存器 ( 3FAH)
可以用来判断有无中断与哪一类中断请求
( 7)线路状态寄存器 ( 3FDH)
向 CPU提供有关数据传输的状态信息读入时,各数据位等于 1有效,作相应的读出与写入操作后将复位
( 8) MODEM控制寄存器 ( 3FCH)
控制与调制解调器或数传机的接口信号
( 9) MODEM状态寄存器 ( 3FEH)
反映了调制解调器控制线的当前状态,同时提供了 4位控制输入的状态变化信息。各数据等于 1为有效
§ 10,4 8250通信编程
( 1) 8250初始化
① 设置波特率设波特率为 9600,则波特率因子 N=12
MOV DX,3FBH
MOV AL,80H ;设置波特率
OUT DX,AL
MOV DX,3F8H
MOV AL,12
OUT DX,AL
INC DX
MOV AL,0
OUT DX,AL ; 3F9H送 0
数据格式为 8位,1位停止位,奇校验
MOV AL,3
MOV DX,3FBH
OUT DX,AL
② 设置串行通信数据格式
③ 设置工作方式无中断,
MOV AL,0
MOV DX,3F9H
OUT DX,AL
有中断,
MOV AL,11
MOV DX,3F9H
OUT DX,AL
循环测试:
MOV AL,13H
MOV DX,3FCH
OUT DX,AL
( 2)程序查询方式通信编程采用程序查询方式工作时,CPU可以通过读线路状态寄存器( 3FDH)查相应状态位( D0与 D5
位),来检查接收数据寄存器是否就绪( D0= 1)
与发送保持器是否空( D5= 1)
发送程序:
TR,MOV DX,3FDH
IN AL,DX
TEST AL,20H
JZ TR
MOV AL,[SI] ;从 [SI]中取出发送数据
MOV DX,3F8H
OUT DX,AL
接收程序:
RE,MOV DX,3FDH
IN AL,DX
TEST AL,1
JZ RE
MOV DX,3F8H
IN AL,DX
MOV [DI],AL;读入数据存入 [DI]中
( 3)用中断方式编程在 IBM PC机中使用 8250中断方式进行通信编程要完成以下几个步骤
① 对 8259中断控制进行初始化
MOV AL,13H
MOV DX,20H
OUT DX,AL
MOV AL,8 ;中断类型码从 8开始
INC DX
OUT DX,AL
INC AL ;缓冲方式,8086/8088
OUT DX,AL
MOV AL,8CH ;允许 0,1,4,5,6级中断
OUT DX,AL
② 设置中断向量 IRQ4
对 IRQ4,中断类型码型为 0CH,0CH× 4=
30H。因此,应在 30H,31H放 IP,32H,33H放
CS
设中断向量入口地址为 2000,0100H
XOR AX,AX
MOV DS,AX
MOV AX,0100H
MOV WORD PTR[0030H],AX;送 2000,100到 30H,31H,32H,33H中
MOV AX,2000H
MOV WORD PTR[0032H],AX
④ 在中断结束返回时,需发 EOI命令,保证 8250可以重新响应中断请求 。
MOV AL,20H
MOV DX,20H
OUT DX,AL ;发 EOI命令
IRET ;开中断允许,并从中断返回
③ 对中断允许寄存器 ( 3F9H) 设置允许 /屏蔽位如:允许发送与接收中断请求
MOV AL,3
MOV DX,3F9H
OUT DX,AL
8250
本章内容
§ 10.1 串行通信的基本知识
§ 10.2串行通信接口的基本结构
§ 10.3 调制解调器( MODEM)
§ 10,4 8250通信编程
§ 10.1 串行通信的基本知识所谓串行通信就是使数据一位一位的进行传输而实现的通信,串行通信具有传输线少,成本低的优点,适合于远距离传输,速度慢。
串行通信一般在两个站 (终端和微机 )之间进行传送
①,单工(单行道,不准逆向行车)单向传输数据有线电视( CATV)、广播
1.串行通信的数据传输模式
②,半双工 准许数据双向传送,但是只有一根线,
必须 分时,某一时刻只能进行发送或接收(对讲机)
③,全双工 串行口之间分别有两根独立的传输发送和接收信号线,可以同时进行发送和接收。
串行通信在信息格式的约定上可分为两种方式异步通信同步通信
①,异步通信方式特点,以字符 /字节为单位传送,通信双方需约定协议 (格式,速率等 )
异步通信必须遵从两项规定,
a.数据的格式 每一个数据传送时,必须加一个起始位,后面加 1或 1.5或 2个停止位。
2.串行通信的方式异步通信时,字符 /字节是一帧一帧的传送,每帧字符必须靠起始位来同步,在异步通信的数据传送中,传输线上允许空字符。
b.波特率 ( bps)
波特率就是传送数据位的速率(用位 /秒)表示。
例 数据传送速率为 120字符 /秒,每帧包括 10个数据位,则波特率为 120× 10=1200位 /秒
=1200bps
常用的异步通信的波特率的值为,150,300、
600,1200,2400,4800,9600,14400,28800。
校验位奇校验,字符加上校验位有奇数个 1;
偶校验,字符加上校验位有偶数个 1 。
校验位的产生和检查由串行通信控制器内部自动产生,停止位也是由硬件自动产生的。(偶数个错误不能检测)
②,同步通信方式特点,利用同步字( SYN)获得双方的同步信息,
数据之间无间隔符(数据流)所以传输速率较高,
同步传输的数据格式:
传送数据作为被除数,发送器本身产生一固定除数,前者除以后者得到余数即为该“冗余”字符。
当数据和冗余字符一起被传送到接收器时,接收器产生和发送器相同的除数,和数据位相除,得到余数进行比较。( 99%)
3 串行通信的时钟
①,发送脉冲和接收脉冲发送方要靠发送脉冲(移位脉冲)将数据移出,
经 TXD引脚 → 对方接收方要靠接收脉冲(移位脉冲)将数据接入,
经 RXD引脚 → 串口在发送数据时,发送器用发送时钟的下降沿将移位寄存器的数据串行移位输出,并且对准数据位的前沿;在接收数据时,接收器用接收时钟的上升沿将数据位移入移位寄存器,对准数据位的中间位置,以保障可靠的接收数据。
发送方与接收方实现同步,随着数据的不断传输,将产生一个误差积累,有可能使数据丢失!
思考题:异步通信中如何实现同步?
②,检测脉冲接收方需对发送方发来的数据位进行检测,以决定是” 0“还是” 1“。
通常检测脉冲是移位脉冲的 16和 64倍(常选
16)。
检测脉冲的上升沿采样 RxD线,在一个字符的结束或若干个空闲位之后,每当连续采样到 RxD线上 8个低电平(起始位之半)后,便确认对方发送的是起始位,认为下一位送来的应是数据位,此后,
便每隔 16个检测脉冲连续采样 RxD线三次,按三中取二的原则确定采到的数据位是 0还是 1,并把采样到的数据作为输入数据,由移位脉冲将数据移入接收移位寄存器。
§ 10.2 串行通信接口的基本结构
① 接收移位寄存器:靠移位脉冲将数据串行传进来。
③ 接收脉冲发生器,产生接收的移位脉冲 (RXC)
② 接收数据缓冲寄存器:将移位寄存器中的数 →
缓冲寄存器,实现串-并的转换过程,向
CPU申请中断后,等待 CPU取走数据
④ 发送数据缓冲寄存器:接收 CPU送来的并行数据
⑥ 发送脉冲发生器,用来产生发送移位脉冲 (TXC)
⑤ 发送移位寄存器:接收发送缓冲寄存器的数据,完成并-串的转换,在移位脉冲的作用下,将数据移出去
⑨ 工作时钟 CLK,经分频后产生 RXC TXC
⑦ 状态触发器,PE OE CE
PE:奇偶校验出错状态,1”奇偶错
OE:溢出出错标志 接收到的数未被 CPU取走,又接收到新数,前一个数就丢失,这种现象称为溢出错,
CE:帧格式错标志 接收数据没有停止位
⑧ 读写,中断等控制逻辑在做远距离传输时,需要通过 MODEM将数字信号 → 模拟信号,可以利用电话线传输 (称为调制),接收方利用 MODEM将模拟信号转换为数字信号(称为解调),局域网不用调制解调器,用网卡即可。
调制解调器的调制方式有以下三种:
①振幅调制( Amplictute Shift Keying,ASK)
§ 10.3 调制解调器( MODEM)
② 频率调制( Frequency Shift Keying,FSK)
③ 相位调制( Phase Shift Keying,PSK)
§ 10.4可编程串行通信接口芯片 8250A
( 3)线路控制寄存器 ( 3FBH)
规定了异步串行通信的数据格式
( 1)发送器保持寄存器( 3F8H)
包含要发送的字符,其中第 0位是串行发送的第 1位数据
( 2)接收器数据 寄存器( 3F8H)
存放接收的字符
( 4)波特率因子寄存器 ( 3F8H,3F9H)
当前线路寄存器写入 D7 = 1时,接着对口地址 3F8H,3F9H可分别写入波特率因子分频数的低字节和高字节。
如:要求发送波特率为 1200bps,则波特率因子
3F8H口地址应写入 96( 60H),3F9H口地址应写入 0
( 5)中断允许寄存器( 3F9H)
允许 8250四种类型中断(相应位置 1)
( 6) 中断标识寄存器 ( 3FAH)
可以用来判断有无中断与哪一类中断请求
( 7)线路状态寄存器 ( 3FDH)
向 CPU提供有关数据传输的状态信息读入时,各数据位等于 1有效,作相应的读出与写入操作后将复位
( 8) MODEM控制寄存器 ( 3FCH)
控制与调制解调器或数传机的接口信号
( 9) MODEM状态寄存器 ( 3FEH)
反映了调制解调器控制线的当前状态,同时提供了 4位控制输入的状态变化信息。各数据等于 1为有效
§ 10,4 8250通信编程
( 1) 8250初始化
① 设置波特率设波特率为 9600,则波特率因子 N=12
MOV DX,3FBH
MOV AL,80H ;设置波特率
OUT DX,AL
MOV DX,3F8H
MOV AL,12
OUT DX,AL
INC DX
MOV AL,0
OUT DX,AL ; 3F9H送 0
数据格式为 8位,1位停止位,奇校验
MOV AL,3
MOV DX,3FBH
OUT DX,AL
② 设置串行通信数据格式
③ 设置工作方式无中断,
MOV AL,0
MOV DX,3F9H
OUT DX,AL
有中断,
MOV AL,11
MOV DX,3F9H
OUT DX,AL
循环测试:
MOV AL,13H
MOV DX,3FCH
OUT DX,AL
( 2)程序查询方式通信编程采用程序查询方式工作时,CPU可以通过读线路状态寄存器( 3FDH)查相应状态位( D0与 D5
位),来检查接收数据寄存器是否就绪( D0= 1)
与发送保持器是否空( D5= 1)
发送程序:
TR,MOV DX,3FDH
IN AL,DX
TEST AL,20H
JZ TR
MOV AL,[SI] ;从 [SI]中取出发送数据
MOV DX,3F8H
OUT DX,AL
接收程序:
RE,MOV DX,3FDH
IN AL,DX
TEST AL,1
JZ RE
MOV DX,3F8H
IN AL,DX
MOV [DI],AL;读入数据存入 [DI]中
( 3)用中断方式编程在 IBM PC机中使用 8250中断方式进行通信编程要完成以下几个步骤
① 对 8259中断控制进行初始化
MOV AL,13H
MOV DX,20H
OUT DX,AL
MOV AL,8 ;中断类型码从 8开始
INC DX
OUT DX,AL
INC AL ;缓冲方式,8086/8088
OUT DX,AL
MOV AL,8CH ;允许 0,1,4,5,6级中断
OUT DX,AL
② 设置中断向量 IRQ4
对 IRQ4,中断类型码型为 0CH,0CH× 4=
30H。因此,应在 30H,31H放 IP,32H,33H放
CS
设中断向量入口地址为 2000,0100H
XOR AX,AX
MOV DS,AX
MOV AX,0100H
MOV WORD PTR[0030H],AX;送 2000,100到 30H,31H,32H,33H中
MOV AX,2000H
MOV WORD PTR[0032H],AX
④ 在中断结束返回时,需发 EOI命令,保证 8250可以重新响应中断请求 。
MOV AL,20H
MOV DX,20H
OUT DX,AL ;发 EOI命令
IRET ;开中断允许,并从中断返回
③ 对中断允许寄存器 ( 3F9H) 设置允许 /屏蔽位如:允许发送与接收中断请求
MOV AL,3
MOV DX,3F9H
OUT DX,AL