1、第第5章章 可编程接口芯片可编程接口芯片(2)5.3 串行通信的基本概念串行通信的基本概念5.4 可编程串行通信接口可编程串行通信接口165505.5 可编程串行通信接口可编程串行通信接口8251A5.3 串行通信的基本概念串行通信的基本概念计算机与外部设备之间或计算机与计算机之间计算机与外部设备之间或计算机与计算机之间的信息交换称为的信息交换称为“通信通信”。通信方式可分为并行通信和串行通信两种:通信方式可分为并行通信和串行通信两种:并行通信:数据的各位同时传送并行通信:数据的各位同时传送串行通信:按照一定的格式一位一位地顺序传串行通信:按照一定的格式一位一位地顺序传送数据。信号在一根信号线
2、上传输。送数据。信号在一根信号线上传输。计算机计算机“主机主机”部件之间,如部件之间,如CPU与存储器、与存储器、CPU与接口电路,多采用并行方式传输数据与接口电路,多采用并行方式传输数据串行数据传输主要出现在接口与外部设备、计算机与串行数据传输主要出现在接口与外部设备、计算机与计算机之间。计算机之间。并行通信:数据有多少位,就需要多少根传输线,传并行通信:数据有多少位,就需要多少根传输线,传送速度快。数据位数多、传输距离远时传输成本高。送速度快。数据位数多、传输距离远时传输成本高。串行通信:只需一对传输线,可以利用现有的电话线串行通信:只需一对传输线,可以利用现有的电话线作为传输介质,降低传
3、输线路的成本,远距离数据传作为传输介质,降低传输线路的成本,远距离数据传送时更加突出。送时更加突出。图图5-235.3.1 串行数据通信串行数据通信 1 1 数据传送方式数据传送方式(1 1)单工方式)单工方式只允许数据按照一个固定的方向传送只允许数据按照一个固定的方向传送(2 2)半双工方式半双工方式收发双方均具备接收和发送数据的能力,只有一对传收发双方均具备接收和发送数据的能力,只有一对传输线,同一时刻只能有一个站发送输线,同一时刻只能有一个站发送(3 3)全双工方式)全双工方式有两对传输信号线,每个站任何时刻既可以发送,又有两对传输信号线,每个站任何时刻既可以发送,又可以接收可以接收图图
4、5-242.通信速率通信速率(1)传输率)传输率每秒钟传送二进制数码的位数,单位:位每秒钟传送二进制数码的位数,单位:位/秒秒(bps)。(2)波特率)波特率 每位传送时间的倒数每位传送时间的倒数 每次传送每次传送1位时,波特率大小和传输率相等位时,波特率大小和传输率相等 使用调相技术可以同时传输使用调相技术可以同时传输2位或位或4位,这时传输率大位,这时传输率大于波特率于波特率 时钟频率可选为波特率的时钟频率可选为波特率的1倍、倍、16倍或者倍或者64倍。倍。3.信号的调制信号的调制/解调解调 信号的调制:信号的调制:用一个信号控制另一个信号的某个参数(幅值,频率,相用一个信号控制另一个信号
5、的某个参数(幅值,频率,相位)位),使之随之变化的过程称为调制。使之随之变化的过程称为调制。信号的解调:信号的解调:从已调制信号中还原出被调制信号的过程称为解调。从已调制信号中还原出被调制信号的过程称为解调。发送端,调制器把数字信号变成模拟信号送到传输线发送端,调制器把数字信号变成模拟信号送到传输线路上。路上。接收端,解调器把模拟信号还原成数字信号,送到数接收端,解调器把模拟信号还原成数字信号,送到数据处理设备。据处理设备。调制器和解调器做在一起称为调制解调器,即调制器和解调器做在一起称为调制解调器,即MODEM。计算机称为数据终端设备计算机称为数据终端设备DTE(Data Terminal
6、Equipment)调制解调器(调制解调器(MODEM)和其他通讯设备称为数据通和其他通讯设备称为数据通信设备信设备DCE(Data Communication Equipment)。)。图图5-255.3.2 串行通信的方式串行通信的方式 1.1.同步传送方式同步传送方式 1)1)发送方发送数据信号的同时发送一个用于同步的发送方发送数据信号的同时发送一个用于同步的时钟信号。时钟信号。2)2)同步时钟信号的一个周期和一位数据是对应的。同步时钟信号的一个周期和一位数据是对应的。在同步时钟信号一个周期的时间里,数据线上同在同步时钟信号一个周期的时间里,数据线上同步地发送步地发送1 1bitbit数
7、据。数据。3)3)数据连续传送。若干个数据组成一个数据块。数据连续传送。若干个数据组成一个数据块。同步通讯格式同步通讯格式面向字符同步方式:面向字符同步方式:用一个或者两个同步字符作为数据块的开始。用一个或者两个同步字符作为数据块的开始。同步字符由用户约定,经常采用同步字符由用户约定,经常采用ASCII码中代码为码中代码为16H的的“SYNC(同步)同步)”字符。字符。随后是由字符组成的信息,随后是由字符组成的信息,字符之间没有间隔。字符之间没有间隔。面向比特同步方式面向比特同步方式:以二进制信息以二进制信息“01111110”开始开始 随后是需要发送的各位二进制信息随后是需要发送的各位二进制
8、信息 最后以最后以“01111110”结束结束图图5-262.异步传送方式异步传送方式 异步传送的数据以字符为单位异步传送的数据以字符为单位数据传输的速率由双方事先约定数据传输的速率由双方事先约定以以“帧(帧(Frame)”为传送单位为传送单位一帧信息由一帧信息由712位二进制组成:位二进制组成:起始位:起始位:1位逻辑位逻辑0 数据位:数据位:58位,由收发双方约定,先发送低位。位,由收发双方约定,先发送低位。奇偶校验位:可约定采用奇校验,偶校验,无校验传奇偶校验位:可约定采用奇校验,偶校验,无校验传输。输。停止位:停止位:1位、位、1.5位或位或2位的逻辑位的逻辑1信号信号图图5-275.
9、3.3 串行通讯接口串行通讯接口把计算机的并行数据转换成串行数据发送出去把计算机的并行数据转换成串行数据发送出去把接收到的外部串行数据转换成并行数据送入计算机把接收到的外部串行数据转换成并行数据送入计算机(1 1)数据总线收发器数据总线收发器双向的并行数据通道,传送数据、状态和控制命令。双向的并行数据通道,传送数据、状态和控制命令。(2 2)控制寄存器)控制寄存器 接收接收CPU的各种控制信息。的各种控制信息。(3 3)状态寄存器)状态寄存器 串行通信过程中的状态信号串行通信过程中的状态信号图图5-28(4 4)输入、输出移位寄存器)输入、输出移位寄存器 完成完成“并行并行”和和“串行串行”二
10、种数据的相互转换二种数据的相互转换(5 5)数据输入寄存器)数据输入寄存器输入移位寄存器每次接收一位外部输入的数据,接收的数输入移位寄存器每次接收一位外部输入的数据,接收的数据填满后,将完整的并行数据送入数据输入寄存器暂存。据填满后,将完整的并行数据送入数据输入寄存器暂存。(6 6)数据输出寄存器)数据输出寄存器接收来自接收来自CPU输出的数据,并行送往输出移位寄存器,输出的数据,并行送往输出移位寄存器,逐位右移输出。逐位右移输出。(7 7)控制信号逻辑)控制信号逻辑 接收接收CPU发来的控制信号,产生内部各寄存器的读写信号。发来的控制信号,产生内部各寄存器的读写信号。(8 8)移位脉冲时钟)
11、移位脉冲时钟 从外部输入时钟信号,用作发送和接收数据的移位时钟。从外部输入时钟信号,用作发送和接收数据的移位时钟。5.3.4 RS-232C标准标准为了使通信能够顺利地进行,通信双方必须就为了使通信能够顺利地进行,通信双方必须就通信的规则事前进行约定,通信的规则事前进行约定,约定好的并在通信过程中双方共同遵守的通信约定好的并在通信过程中双方共同遵守的通信规则称为通信协议。规则称为通信协议。1 1 信号电平信号电平RS-232C标准采用负逻辑标准采用负逻辑逻辑逻辑“1”在在-3V-15V之间之间逻辑逻辑“0”在在+3V+15V之间之间通常使用通常使用12V作为作为RS-232C电平电平MC148
12、8和和MC1489进行进行RS232和和TTL之间的电平转换之间的电平转换2 2信号定义信号定义表表5-6给出了给出了RS-232C接口部分常用信号的定义。接口部分常用信号的定义。3 3接插件接插件使用使用25个引脚或个引脚或9个引脚的个引脚的D型接插件进行连接。型接插件进行连接。RTSCTSDSRDCDDTRRI符符 号号方方 向向功功 能能9针连接器引针连接器引脚号脚号25针连接器引针连接器引脚号脚号TXD输出发送数据32RXD输入接收数据23输出请求发送74输入发送允许85输入数据设备就绪66GND信号地57输入载波检测18输出数据终端就绪420输入响铃指示9225.4 可编程串行通信接
13、口可编程串行通信接口16550通用的可编程异步通信接口芯片。通用的可编程异步通信接口芯片。内部有时钟产生电路、可编程波特率发生器、内部有时钟产生电路、可编程波特率发生器、双缓冲通信数据寄存器和多种中断处理功能。双缓冲通信数据寄存器和多种中断处理功能。对外有调制解调器控制信号,可直接与对外有调制解调器控制信号,可直接与MODEM相连。相连。与早期与早期IBM/PC机使用的异步通信接口机使用的异步通信接口8250兼容,兼容,最高波特率提高到最高波特率提高到1.5Mb/s,具有具有16字节字节FIFO(先进先出缓冲)发送和接收功能。先进先出缓冲)发送和接收功能。5.4.1 16550的内部结构与外部
14、引脚的内部结构与外部引脚1.1.数据总线缓冲器数据总线缓冲器连接连接16550与与CPU数据总线数据总线2.2.选择和读选择和读/写控制逻辑写控制逻辑接收来自接收来自CPU的地址、片选和控制信息,产生内部各的地址、片选和控制信息,产生内部各端口的读写操作命令。端口的读写操作命令。3.3.发送器发送器由发送保持寄存器、发送移位寄存器和发送同步控制由发送保持寄存器、发送移位寄存器和发送同步控制组成。组成。待发送的数据写入发送保持寄存器。发送保持寄存器待发送的数据写入发送保持寄存器。发送保持寄存器的内容自动转存到发送移位寄存器,在发送器时钟的的内容自动转存到发送移位寄存器,在发送器时钟的控制下,由控
15、制下,由SOUT引脚发送出去。引脚发送出去。4.接收器接收器由接收移位寄存器、接收缓冲寄存器和接收同步控制由接收移位寄存器、接收缓冲寄存器和接收同步控制器组成。器组成。在接收时钟控制下,由在接收时钟控制下,由SIN引脚输入的串行数据逐位存引脚输入的串行数据逐位存入移位寄存器,转换后的并行数据存入接收缓冲寄存入移位寄存器,转换后的并行数据存入接收缓冲寄存器,等待器,等待CPU读取。读取。5.5.调制调制/解调器控制电路解调器控制电路提供一组控制信号,直接与调制解调器相连,完成远提供一组控制信号,直接与调制解调器相连,完成远程通信任务。程通信任务。6.6.通信线控制寄存器和通信线状态寄存器通信线控
16、制寄存器和通信线状态寄存器控制寄存器保存控制寄存器保存CPU写入的通讯数据格式。写入的通讯数据格式。状态寄存器提供串行数据发送和接收时的状态状态寄存器提供串行数据发送和接收时的状态7.波特率发生控制电路波特率发生控制电路由波特率发生器、分频系数寄存器组成。由波特率发生器、分频系数寄存器组成。16550对对18.432MHz的输入时钟进行分频,产生所要的的输入时钟进行分频,产生所要的发送器和接收器时钟信号。发送器和接收器时钟信号。分频系数在初始化时分两次写入除数寄存器的高分频系数在初始化时分两次写入除数寄存器的高8位和位和低低8位,分频系数可由下式算出:位,分频系数可由下式算出:除数除数=184
17、32000(波特率(波特率16)8.中断控制逻辑中断控制逻辑由中断允许寄存器、中断识别寄存器和中断控制逻辑由中断允许寄存器、中断识别寄存器和中断控制逻辑三部分组成。三部分组成。实现中断优先权管理、中断申请等功能。实现中断优先权管理、中断申请等功能。9.16550的引脚的引脚(1 1)数据信号)数据信号 双向数据双向数据线线D7D0,与数据总线相连,与数据总线相连(2)地址信号)地址信号片选信号:片选信号:CS0、CS1、CS2#。CS0=CS1=1,CS2#=0时,时,表明芯片被选中。表明芯片被选中。A2A0:具体访问哪个寄存器,由:具体访问哪个寄存器,由A2A0确定。确定。ADS#:地址选通
18、信号:地址选通信号ADS#为低电平时,锁存三个片选为低电平时,锁存三个片选信号以及信号以及A2A0的输入状态。的输入状态。(3)读)读/写控制信号写控制信号两对读写控制信号,每对信号功能相同,电平不同。两对读写控制信号,每对信号功能相同,电平不同。RD=1或或RD#=0中一个有效且中一个有效且16550被选中时,可读;被选中时,可读;WR和和WR#=0中一个有效且中一个有效且16550被选中,可写。被选中,可写。图图5-3016550A2INTRCTSA1A0RCLKSINSOUTCS1CS0XOUTXINDSRRDDCDRDRTSD0D1D2D3D4D5D6D7VCCOUT1ADSOUT2M
19、RRIDDISDTRTXRDYCS2BAUDOUTWRWRVSSRXRDY1402021(4)中断控制和复位信号)中断控制和复位信号INTR:发送保持寄存器空或接收数据有效,发送保持寄存器空或接收数据有效,16550的中的中断允许寄存器相应位置断允许寄存器相应位置1时,时,16550的中断请求引脚的中断请求引脚INTR变为高电平,用作中断请求信号。变为高电平,用作中断请求信号。MR:复位信号,输入,它与系统复位信号,输入,它与系统RESET信号连接,系信号连接,系统复位同时也对统复位同时也对16550复位。复位。OUT1和和OUT2:这两个输出引脚可以通过用户编程来改这两个输出引脚可以通过用户
20、编程来改变输出电平。变输出电平。图图5-31(5)时钟信号)时钟信号XIN和和XOUT:16550的时钟信号输入引脚。的时钟信号输入引脚。从从XIN输入的基准时钟,经过输入的基准时钟,经过16550内部波特率发生器(分内部波特率发生器(分频器)分频后产生发送器时钟,并经过频器)分频后产生发送器时钟,并经过BAUDOUT引脚输出。引脚输出。RCLK:接收时钟,输入,常与接收时钟,输入,常与BAUDOUT相连。相连。(6)与外设)与外设/调制解调器之间的联络信号调制解调器之间的联络信号RTS#:请求发送信号,输出。输出给外设或请求发送信号,输出。输出给外设或MODEMCTS#:允许发送信号,输入。
21、外设或允许发送信号,输入。外设或MODEM对对RTS#的应的应答。答。DTR#:数据终端准备好。输出给外设或数据终端准备好。输出给外设或MODEM的,的,DTR#=0表示表示16550已经就绪。已经就绪。DSR#:数据设备准备好。对数据设备准备好。对DTR信号的应答,信号的应答,DSR#=0,表示外设或表示外设或MODEM已经就绪。已经就绪。DCD#:载波检测输入载波检测输入,表示表示MODEM已经接收到载波信号已经接收到载波信号RI#:振铃指示输入信号振铃指示输入信号,表示表示MODEM已经接收到振铃已经接收到振铃信号。信号。SIN:串行数据输入。串行数据输入。SOUT:串行数据输出。串行数
22、据输出。(7)数据就绪信号)数据就绪信号RXRDY:接收器就绪信号接收器就绪信号TXRDY:发送器就绪信号。发送器就绪信号。5.4.2 16550的内部寄存器的内部寄存器1.16550内部寄存器内部寄存器有有10个可寻址的个可寻址的8位寄存器,由地址线位寄存器,由地址线A0A2和和读读/写控制信号选择要访问的寄存器。写控制信号选择要访问的寄存器。内部寄存器分为三组:内部寄存器分为三组:数据传输:发送保持寄存器和接收缓冲寄存器。数据传输:发送保持寄存器和接收缓冲寄存器。工作方式、参数设置:通信线控制寄存器、除数寄存工作方式、参数设置:通信线控制寄存器、除数寄存器、器、MODEM控制寄存器和中断允
23、许寄存器。控制寄存器和中断允许寄存器。状态寄存器:通信线状态寄存器、状态寄存器:通信线状态寄存器、MODEM状态寄存状态寄存器和中断识别寄存器。器和中断识别寄存器。DLABA2 A1 A0访问的寄存器访问的寄存器主串口地址主串口地址辅串口地址辅串口地址0 0 0 0接收缓冲器(读)接收缓冲器(读)3F8H2 F8H0 0 0 0发送保持寄存器(写)发送保持寄存器(写)3F8H2 F8H0 0 0 1中断允许寄存器中断允许寄存器3F9H2 F9H 0 1 0中断识别中断识别/FIFO寄存器寄存器3FAH2 FAH 0 1 1通信线控制寄存器通信线控制寄存器3FBH2 FBH 1 0 0MODEM
24、控制寄存器控制寄存器3FCH2 FCH 1 0 1通信线状态寄存器通信线状态寄存器3FDH2 FDH 1 1 0MODEM状态寄存器状态寄存器3FEH2 FEH1 0 0 0除数寄存器(低字节除数寄存器(低字节)3F8H2 F8H1 0 0 1除数寄存器(高字节除数寄存器(高字节)3F9H2 F9H(1)发送保持寄存器()发送保持寄存器(3F8H/2F8H)保存保存CPU送来的并行数据,送到发送移位寄存器,发送来的并行数据,送到发送移位寄存器,发送移位寄存器在发送器时钟的作用下,把并行数据转送移位寄存器在发送器时钟的作用下,把并行数据转换成串行数据从换成串行数据从SOUT引脚输出。引脚输出。只
25、有在发送保持寄存器空时,只有在发送保持寄存器空时,CPU才可以向发送保持才可以向发送保持寄存器写入下一个要发送的数据。寄存器写入下一个要发送的数据。(2)接收缓冲寄存器()接收缓冲寄存器(3F8H/2F8H)在接收时钟的作用下,从在接收时钟的作用下,从SIN引脚输入的串行数据被引脚输入的串行数据被送到接收移位寄存器。送到接收移位寄存器。去掉起始位、校验位和停止位后,串行数据转换成并去掉起始位、校验位和停止位后,串行数据转换成并行数据并存入接收缓冲寄存器,等待行数据并存入接收缓冲寄存器,等待CPU接收。接收。(3)通信线控制寄存器(通信线控制寄存器(3FBH/2FBH)用来设置串行异步通信的数据
26、格式用来设置串行异步通信的数据格式D7位:位:DLAB寻址位寻址位D7=1,访问除数寄存器访问除数寄存器D7=0,访问接收缓冲器、发送保持寄存器。访问接收缓冲器、发送保持寄存器。D6位:位:D6=1,发送方连续发送长时间中止信号(空发送方连续发送长时间中止信号(空号),空号发送的时间超过一个完整的字符传送时号),空号发送的时间超过一个完整的字符传送时间时,接收方就认为发送方已中止发送。间时,接收方就认为发送方已中止发送。D3D5位:选择奇偶校验方式。位:选择奇偶校验方式。D2位:规定一帧数据中停止位的位数。位:规定一帧数据中停止位的位数。D0位、位、D1位:定义一帧数据中数据位的位数。位:定义
27、一帧数据中数据位的位数。图图5-32通信线控制寄存器(通信线控制寄存器(3FBH/2FBH)(4)中断识别寄存器中断识别寄存器/FIFO控制寄存器控制寄存器(3FAH/2FAH)16550内部有四级中断,但只有一根中断请求信号。中断发生内部有四级中断,但只有一根中断请求信号。中断发生后,后,CPU通过查询中断识别寄存器来辨别中断类型。通过查询中断识别寄存器来辨别中断类型。FIFO控制寄存器和中断识别寄存器占用相同的端口地址。中控制寄存器和中断识别寄存器占用相同的端口地址。中断发生时读出该寄存器的内容,它作为中断识别寄存器来使断发生时读出该寄存器的内容,它作为中断识别寄存器来使用;写入用;写入F
28、IFO控制字时,作为控制字时,作为FIFO控制寄存器。控制寄存器。图图5-33中断识别寄存器中断识别寄存器图图5-34(5)通信线状态寄存器()通信线状态寄存器(3FDH/2FDH)图图5-35(6)中断允许寄存器()中断允许寄存器(3F9H/2F9H)低低4位代表中断允许控制位,置位代表中断允许控制位,置1,则允许相应的中断源请,则允许相应的中断源请求中断,否则禁止中断。求中断,否则禁止中断。(7)MODEM控制寄存器(控制寄存器(3FCH/2FCH)设置与调制解调器连接的联络信号:设置与调制解调器连接的联络信号:D7D5位规定为位规定为0;D4位:位:=1,正常发送,正常发送/接收;接收;
29、=0,内部循环方式(用于芯片检测)。,内部循环方式(用于芯片检测)。D0D3位的状态直接控制相关引脚的输出电平:位的状态直接控制相关引脚的输出电平:D0=1,使引脚使引脚DTR#=0,DTR#信号有效。信号有效。D1=1,使引脚使引脚RTS#=0,RTS#信号有效。信号有效。D2=1,使引脚使引脚OUT1#=0,该引脚留给用户使用。该引脚留给用户使用。D3=1,使引脚使引脚OUT2#=0,使使16550能送出中断请求。能送出中断请求。DCTSDCDDSR CTS DDCDTERIDDSRD7D6D5D4D3D2D1D0CTS#发生变化0=无变化1=有变化DSR#发生变化0=无变化1=有变化RI
30、#变化0=无变化1=有变化DCD#发生变化0=无变化1=有变化DCD#引脚0=引脚为11=引脚为0DSR#引脚0=引脚为11=引脚为0CTS#引脚0=引脚为11=引脚为0RIRI#引脚0=引脚为11=引脚为0(8)MODEM状态寄存器(状态寄存器(3FEH/2FEH)图图5-36(9)除数寄存器()除数寄存器(3F8H,3F9H/2F8H,2F9H)16550发送或接收的移位时钟,是在它的基准时钟发送或接收的移位时钟,是在它的基准时钟(18.432MHz)基础上分频而来的。基础上分频而来的。根据所需的波特率来确定分频系数,并在初始化时根据所需的波特率来确定分频系数,并在初始化时存入除数寄存器。
31、存入除数寄存器。表表5-8给出了给出了9种波特率所需设置的除数寄存器的值。种波特率所需设置的除数寄存器的值。波特率波特率除数高除数高8位位除数低除数低8位位120003H0C0H180002H80H200002H40H240001H0E0H360001H40H480000H0F0H720000H0A0H960000H78H1920000H3CH表5-8波特率与分频系数对照表5.4.3 串行通信接口串行通信接口16550的应用的应用1.16550的初始化的初始化计算机硬件或软件复位后,要对计算机硬件或软件复位后,要对16550进行初进行初始化。始化。初始化主要包括:初始化主要包括:1)对通信线控
32、制寄存器进行设置,确定异步通信的数对通信线控制寄存器进行设置,确定异步通信的数据格式。据格式。2)设置除数寄存器,确定通信速率。设置除数寄存器,确定通信速率。3)对对FIFO控制寄存器、中断允许寄存器和控制寄存器、中断允许寄存器和MODEM控控制寄存器进行设置。制寄存器进行设置。初始化步骤初始化步骤:(1)80H送通信线控制寄存器,使寻址位送通信线控制寄存器,使寻址位D7=1。(2)除数高)除数高8位位/低低8为分别送除数寄存器高为分别送除数寄存器高8位位/低低8位,确定通信速率。位,确定通信速率。(3)将)将D7=0的命令字写入通信线控制寄存器,的命令字写入通信线控制寄存器,确确定串行异步通
33、信一帧数据帧的格式。定串行异步通信一帧数据帧的格式。图5-32图图5-32通信线控制寄存器(通信线控制寄存器(3FBH/2FBH)(4)设置设置FIFO控制寄存器(控制寄存器(3FAH)。FIFO控制寄存器与中断识别寄存器的地址都是控制寄存器与中断识别寄存器的地址都是3FAH;读出时是中断识别寄存器;写入时是读出时是中断识别寄存器;写入时是FIFO控制寄存器。控制寄存器。FIFO控制寄存器中各位的功能如图控制寄存器中各位的功能如图5-37。(5)设置中断允许寄存器设置中断允许寄存器(3F9H/2F9H)设置成查询方式:中断允许寄存器中的命令字为设置成查询方式:中断允许寄存器中的命令字为0 0。
34、设置为中断方式:设置中断允许寄存器中的相应位为设置为中断方式:设置中断允许寄存器中的相应位为1 1,该位所控制的中断请求允许中断。该位所控制的中断请求允许中断。(6)设置)设置MODEM控制寄存器(控制寄存器(3FCH/2FCH)D4=0:设置设置16550为正常接收为正常接收/发送方式。发送方式。D4=1:设置设置16550工作在内部循环自检方式。工作在内部循环自检方式。D3=0:16550工作在查询方式。工作在查询方式。D3=1:16550工作在中断方式。工作在中断方式。MODEM控制寄存器控制寄存器例例:16550端口地址为端口地址为3F8H-3FFH,使使16550以以19200波特率
35、进行异步通信,每字符为波特率进行异步通信,每字符为8比特,比特,1个停止位,采用奇校验,允许所有个停止位,采用奇校验,允许所有中断,则初始化程序为:中断,则初始化程序为:MOVDX,03FBH;16550控制寄存器地址送控制寄存器地址送DXMOVAL,80H;置置DLAB=1,设置除数寄存器设置除数寄存器OUTDX,ALMOVDX,03F8H;除数低除数低8位寄存器地址送位寄存器地址送DXMOVAX,003CH;波特率为波特率为19200bpsOUTDX,AL;送除数低送除数低8位位MOVAL,AHINC DX;产生除数高产生除数高8位寄存器地址位寄存器地址OUTDX,AL;送除数高送除数高8
36、位位MOVDX,03FBH;16550控制寄存器地址送控制寄存器地址送DXMOVAL,0BH;8位数据位位数据位,奇校验奇校验,1位停止位位停止位OUTDX,ALMOVDX,03FAH;FIFO控制寄存器地址送控制寄存器地址送DXMOVAL,47H;允许允许FIFO并清除并清除OUTDX,AL;设设FIFO中断触发值为中断触发值为4字节字节MOVDX,03F9H;中断允许寄存器地址送中断允许寄存器地址送DXMOVAL,0FH;允许所有中断允许所有中断OUTDX,AL;设置中断允许控制字设置中断允许控制字MOVDX,03FCH;MODEM控制字寄存器地址控制字寄存器地址MOVAL,0BH;正常收
37、发,正常收发,OUT1,OUT2有效有效OUTDX,AL;设置设置MODEM控制字控制字2.16550应用举例应用举例两台计算机通过两台计算机通过16550实现异步通信实现异步通信16550的接收和发送数据均采用查询工作方式的接收和发送数据均采用查询工作方式通信波特率通信波特率9600bit/s每字符为每字符为8比特,比特,1个停止位个停止位采用奇校验采用奇校验;计算机计算机A_16550查询方式发送程序查询方式发送程序DATA SEGMENTSEND_DATA DB NUM1,NUM2,;要发送的数据要发送的数据TIMES DW N;发送的数据个数发送的数据个数 DATA ENDSCODE
38、SEGMENTASSUME CS:CODE,DS:DATABEGIN1:MOVAX,DATAMOV DS,AX;初始化初始化16550MOVDX,03FBH;16550控制寄存器地址送控制寄存器地址送DX MOVAL,80H;置置DLAB=1,设置除数寄存器设置除数寄存器OUTDX,ALMOVDX,03F8H;除数寄存器地址送除数寄存器地址送DXMOVAX,0078H;波特率为波特率为9600bit/sOUTDX,ALMOVAL,AH INC DXOUTDX,ALMOVDX,03FBH;16550控制寄存器地址送控制寄存器地址送DXMOVAL,0BH;8位数据位位数据位,奇校验奇校验,1位停止
39、位位停止位OUTDX,ALCALL TRANSMOVAH,4CH;程序结束程序结束,返回操作系统返回操作系统INT21H;查询方式查询方式发送子程序发送子程序TRANS PROC NEARLEABX,SEND_DATAMOV CX,TIMES;要发送的数据个数送要发送的数据个数送CXAGAIN:MOVDX,03FDH;通信状态寄存器地址送通信状态寄存器地址送DXINAL,DXTESTAL,20H;检测发送器是否准备就绪检测发送器是否准备就绪JZAGAINMOV DX,03F8HMOV AL,BX;取出发送区域的待发送数据取出发送区域的待发送数据OUTDX,ALINCBX;指向下一个待发送数据指
40、向下一个待发送数据LOOPAGAIN;N个数据传送完了吗?个数据传送完了吗?RETTRANSENDPCODEENDS END BEGIN1;计算机计算机B_16550查询方式接收程序查询方式接收程序DATA SEGMENT REC_DATA DB 100 DUP(?);存放接收存放接收的数据的数据TIMES DW N;要接收要接收的数据个数的数据个数DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN2:MOV AX,DATAMOV DS,AX;初始化初始化16550MOV DX,03FBH;16550控制寄存器地址送控制寄存器地址送DXMOV AL
41、,80H;置置DLAB=1,设置除数寄存器设置除数寄存器 OUTDX,AL MOV DX,03F8H;除数寄存器地址送除数寄存器地址送DXMOV AX,0078H;波特率为波特率为9600bit/sOUTDX,ALMOV AL,AHINC DXOUTDX,ALMOV DX,03FBH;16550控制寄存器地址送控制寄存器地址送DXMOV AL,0BH;8位数据位位数据位,奇校验奇校验,1位停止位位停止位OUTDX,ALCALL RECEIVE MOV AH,4CH ;程序结束,返回操作系统程序结束,返回操作系统INT 21H;查询方式接收查询方式接收子程序子程序RECEIVE PROCNEAR
42、LEABX,REC_DATA;接收缓冲区首址送接收缓冲区首址送BX MOV CX,TIMES;要接收的数据个数送要接收的数据个数送CXREPIN:MOV DX,03FDH;通信状态寄存器地址通信状态寄存器地址INAL,DXTEST AL,1EH;检测接收的数据有无错误检测接收的数据有无错误JNZERROR TEST AL,01H;检测接收缓冲器中是否有数据检测接收缓冲器中是否有数据JZREPIN MOVDX,03F8H;数据接收寄存器地址送数据接收寄存器地址送DXINAL,DXMOVBX,ALINCBXLOOPREPINCLC;接收成功,清接收成功,清CY标志位标志位JMP DONEERROR
43、:STC;接收不成功,置接收不成功,置CY标志位标志位DONE:RETRECEIVE ENDPCODEENDSEND BEGIN2 5.5 可编程串行通信接口可编程串行通信接口8251A(1)可用于串行异步通信,也可用于串行同步通信。)可用于串行异步通信,也可用于串行同步通信。(2)接收、发送数据分别有各自的缓冲器,可以进行全双)接收、发送数据分别有各自的缓冲器,可以进行全双工通信。工通信。(3)提供与外部设备特别是调制解调器的联络信号,便于)提供与外部设备特别是调制解调器的联络信号,便于直接和通信线路相连接。直接和通信线路相连接。(4)每个字符的位数可以是)每个字符的位数可以是58位,可以设
44、定奇校验或偶位,可以设定奇校验或偶校验,也可以不设校验。校验位的插入、检错及剔除都校验,也可以不设校验。校验位的插入、检错及剔除都由芯片自动完成。由芯片自动完成。(5)异步通信时,停止位可选)异步通信时,停止位可选1位、位、1.5位或位或2位,波特率为位,波特率为019.2K,时钟频率可设为波特率的时钟频率可设为波特率的1倍、倍、16倍或倍或64倍。倍。(6)同步通信时,波特率的范围为)同步通信时,波特率的范围为056K波特。可设为单同波特。可设为单同步、双同步或者外同步,同步字符可由用户自行设定。步、双同步或者外同步,同步字符可由用户自行设定。5.5.1 8251A的外部引脚的外部引脚D0D
45、1D2D3D4D5D6D7RESETRDWRC/DCSTxRDYTxERxRDYTxDTxCRxDRxCSTNDETCTSRTSDSRDTRCLK+5VGND272812567821131012111518148251A199325161723222420264与CPU连接与外设连接1.与CPU连接的引脚 D7D0:数据线,与系统数数据线,与系统数据据 总线相连。总线相连。RESET:复位信号,输入,复位信号,输入,高电平有效。复位后高电平有效。复位后 8251A处于空闲状态处于空闲状态 直至被初始化编程。直至被初始化编程。RD#:读选通信号,输入,读选通信号,输入,低电平有效。低电平有效。W
46、R#:写选通信号,输入,写选通信号,输入,低电平有效。低电平有效。C/D#:控制控制/数据端口选择输入线。数据端口选择输入线。8251A内部占用两个端口内部占用两个端口 地址,为地址,为“0”时选择数据端口,传输数据(读或写),时选择数据端口,传输数据(读或写),为为“1”时选择控制端口,时选择控制端口,传输的是控制字(写)或状传输的是控制字(写)或状态态 信息(读)。由于该引脚信号用于选择内部端口,通信息(读)。由于该引脚信号用于选择内部端口,通 常把它和地址总线的常把它和地址总线的A0(8088)或或A1(8086)相连。相连。CS#:选片信号,输入,低电平有效。为低电平时选片信号,输入,
47、低电平有效。为低电平时CPU才能才能 对对8251A操作。操作。TxRDY:发送准备好状态,输出,高电平有效。发送寄存器发送准备好状态,输出,高电平有效。发送寄存器 空且允许发送(脚电平为低,同时命令字中空且允许发送(脚电平为低,同时命令字中TxEN位位 为为1)时)时TxRDY为高电平。为高电平。CPU向向8251A写入一个字写入一个字 符后符后TxRDY恢复为低电平。恢复为低电平。TxRDY可以用来向可以用来向 8259A申请发送中断。申请发送中断。TxE:发送缓冲器空闲状态,输出。高电平有效,发送缓冲器空闲状态,输出。高电平有效,TxE=1,表示发送缓冲器中没有要发送的表示发送缓冲器中没
48、有要发送的 字符,字符,CPU把要发送的下一个数据写入把要发送的下一个数据写入 8251A后,后,TxE自动复位。自动复位。RxRDY:接收准备好状态,输入,高电平有效。接收准备好状态,输入,高电平有效。接收器接到一个字符后接收器接到一个字符后RxRDY为为“1”,字符被字符被CPU读取后恢复为读取后恢复为“0”。RxRDY 可用来向可用来向8259A申请接收中断。申请接收中断。2.与外设或调制解调器连接的引脚与外设或调制解调器连接的引脚 TxD:发送数据输出。发送数据输出。CPU并行输出给并行输出给8251A的数据从这的数据从这个个 引脚串行发送出去。引脚串行发送出去。RxD:串行数据输入,
49、高电平表示数字串行数据输入,高电平表示数字1,低电平表示数,低电平表示数字字 0。SYNDET:同步状态输出,或者外同步信号输入。此引脚同步状态输出,或者外同步信号输入。此引脚 仅对同步方式有意义。仅对同步方式有意义。以下以下4根引脚用来连接调制解调器根引脚用来连接调制解调器DTR#:数据终端准备好,输出,低电平有效。数据终端准备好,输出,低电平有效。8251A命令命令 字位字位D1为为1时有效,用于向调制解调器表示数据终时有效,用于向调制解调器表示数据终 端(计算机)已准备好。端(计算机)已准备好。DSR#:数据设备准备好,输入,低电平有效。调制解调数据设备准备好,输入,低电平有效。调制解调
50、 器准备好时有效,向器准备好时有效,向8251A表示表示MODEM(数据设数据设 备)已准备就绪。备)已准备就绪。CPU可通过读取状态寄存器的可通过读取状态寄存器的 D7位检测该信号。位检测该信号。RTS#:请求发送信号,输出,低电平有效。请求发送信号,输出,低电平有效。8251A命令字命令字 位位D5为为1时有效,请求调制解调器作好发送准备(时有效,请求调制解调器作好发送准备(建立载波)。建立载波)。CTS#:清除发送(允许传送)信号,输入,低电平有效。清除发送(允许传送)信号,输入,低电平有效。调制解调器作好传送准备时有效,作为对调制解调器作好传送准备时有效,作为对8251A的的 信号的响