《《计数定时接口》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《计数定时接口》PPT课件.ppt(106页珍藏版)》请在三一办公上搜索。
1、1,5.4 计数/定时器及接口芯片,2,5.4.1 可编程定时/计数器8253,掌握:引脚功能及计数启动方法6种工作方式及其输出波形8253的使用:芯片与系统的连接芯片的初始化编程,3,一、外部引线及内部结构,8253概貌3个16位的定时/计数器(通道)24引脚双列直插式最高计数频率2MHzTTL电平兼容单电源+5V供电,4,5,外部引线及内部结构,DB,D7-D0,8253,A1,A0,WR,RD,CS,通道2,通道1,通道0,CLK0GATE0OUT0,CLK1GATE1OUT1,CLK1GATE1OUT1,A1A0,IOWIOR片选信号,6,与系统总线连接的主要引脚:D7D0(数据线)C
2、SRDWRA1,A0(地址线)用于选择四个编址部件之一,A1 A0 选 择0 0 计数通道00 1 计数通道11 0 计数通道21 1 控制寄存器,7,定时/计数器芯片与外部连接的主要引脚:每通道均相同CLKn 时钟脉冲输入,计数器的计时基准。GATEn 门控信号输入,控制计数器的启停。OUTn 计数器输出信号,不同工作方式下 产生不同波形。(n=02),8,定时/计数器8253内部:有3个定时/计数器:定时/计数器0 定时/计数器1 定时/计数器2 每个计数器均包括:一个16位初值寄存器和一个16位计 数寄存器(减法计数器)。有1个8位控制寄存器 存放控制命令字,9,通过对4个端口地址的访问
3、可实现如下操作:,10,定时/计数器的工作过程,1.设置8253的工作方式;2.设置计数初值到初值寄存器;3.第一个CLK信号使初值寄存器的内容置入 计数寄存器;4.以后每来一个CLK信号,计数寄存器减1;5.减到0时,OUT端输出一特殊波形的信号。注:以上计数过程中还受到GATE信号的控制,11,二、计数启动方式,软件启动过程GATE端保持为高电平,当写入计数初值 后的第2个 CLK脉冲的下降沿开始数。硬件启动过程GATE端出现有一个上升沿后,对应CLK 脉冲的下降沿开始计数。,程序指令启动软件启动。外部电路信号启动硬件启动。,12,三、工作方式,方式0计数结束中断请求方式;方式1可编程单脉
4、冲方式(单稳态触发器);方式2频率发生器(连续负脉冲发生器);方式3方波发生器;方式4软件触发选通;方式5硬件触发选通;,13,工作方式介绍,方式0(计数结束中断),软件启动,不自动重复计数。装入方式字OUT端变低电平,写入计数初值后,每一次时钟CLK下跳沿做一次减1计数,减1到0计数结束OUT输出高电平。,方式1(单稳态触发器)硬件启动,不自动重复计数。装入方式字和计数初值后OUT端为电平,当GATE端有上跳变脉冲时,OUT端变为低电平,计数开始,每一次时钟CLK下跳沿做一次减1计数,减1到0计数结束OUT输出高电平。,14,方式2(频率发生器),可软、硬件启动,自动重复计数。装入方式字和初
5、值后OUT端变高电平,每一次时钟CLK下跳沿做一次减1计数,计数至1时OUT输出一个时钟周期的负脉冲,计数初值又自动赋值给减1计数器,并连续重复上述过程。注:设CLK时钟周期为tg,计数初始值为N,则连续负脉冲周期T=N*tg。,15,方式3(方波发生器),可软、硬件启动,自动重复计数。装入方式字和初值后OUT端为高电平,然后OUT连续输出对称方波:计数初值N为偶数时,正负波对称,均为 N/2个CLK宽;计数初值N为奇数时,正负波不对称,正波(N+1)/2 个CLK,负波为(N-1)/2 个CLK。,注:当计数初值N为偶数时,输出方波对称,当N为奇数时,输出方波不对称。设CLK时钟周期为tg,
6、计数初始值为N,则连续方波周期T=N*tg。,16,方式4(软件触发选通),软件启动,不自动重复计数。装入方式字和初值后输出端变高电平,每一次时钟CLK下跳沿做一次减1计数,计数结束输出一个CLK宽度的负脉冲。,方式5(硬件触发选通)硬件启动,不自动重复计数。OUT端波形与方式4相同。,17,四、8253控制字,用于确定各计数器的工作方式。8253必须先初始化才能正常工作。每个计数器都必须初始化一次。CPU通过OUT指令把控制字写入控制寄存器。,18,注:二进制计数最大计数值为FFFFH十进制计数(BCD码计数)最大计数值9999H,8253回顾,1.假设8253与系统接口地址为80H-83H
7、,则定时器/计数器0的地址为()。A 80H B 81H C 82H D 83H,2.计算机只能对8253进行写操作的端口是()。A.定时器/计数器0通道;B.定时器/计数器1通道;C.定时器/计数器2通道;D.控制寄存器;,19,3.8253有()个独立16位可编程定时器/计数器,每个定时器/计数器通道均有()种工作方式,如果对8253控制口写入如下控制字CW=10110110B,则对8253进行了()初始化。4.8253定时器/计数器启动方式有两种分别是()和()。,20,21,五、8253的应用,如何与系统总线连接?如何对8253编程?设置工作方式 置计数初值,22,8253与系统总线的
8、连接,CLKi,GATEi,OUTi,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,高位地址A15-A2,8253,共三组,8253占用4个接口地址:计数器0 计数器1 计数器2 控制寄存器,23,例 给8088系统总线连接一片8253定时计数器,要求端口地址为80H-83H。画出接口硬件图。例 给8086系统总线连接一片8253定时计数器,要求端口地址为80H、82H、84H、86H。画出接口硬件图。(与8086CPU连接的I/O端口地址必须都是偶地址),24,8253编程 初始化程序流程,写控制字,写计数值低8位,写计数值高8位,*,非必须,写入顺序:可
9、按计数器分别写入控制字和初值。也可先写所有计数器控制字,再写入它们的初值,25,例:8253的计数器2用作方式2,将频率为1.19MHz的输入脉冲转变成频率为500Hz的脉冲信号。8253的端口地址为70H73H。试编写初始化程序段。解:N1.19106/500=2380 094CH则其初始化程序段为:MOV AL,0B4H;10110100,计数器2方式2二进制计数OUT 73H,AL;控制字送入控制寄存器MOV AL,4CHOUT 72H,AL;计数值低8位送入计数器2MOV AL,09HOUT 72H,AL;计数值高8位送入计数器2,26,例:采用8253作定时/计数器,其接口地址为01
10、20H0123H。输入8253的时钟频率为2MHz。计数器0:每10ms输出1个CLK脉冲宽的负脉冲(方式2)计数器1:产生10KHz的连续方波信号(方式3)计数器2:启动计数5ms后OUT输出高电平(方式0)画线路连接图,并编写初始化程序。,27,CLK0,GATE0,OUT1,D0D7,WR,RD,A1,A0,CS,DB,WR,RD,A1,A0,译码器,8253,CLK2,GATE1,GATE2,+5V,CLK1,2MHz,OUT0,OUT2,?,线路连接图:,28,确定计数初值:CNT0:N0=10ms/0.5us=20000(65535)CNT1:N1=2MHz/10KHz=200 C
11、NT2:N3=5ms/0.5us=10000确定控制字:CNT0:方式2,16位计数值 00 11 010 0 CNT1:方式3,低8位计数值 01 01 011 0 CNT2:方式0,16位计数值 10 11 000 0,29,8253应用举例 初始化程序,CNT0:MOV DX,0123HMOV AL,34HOUT DX,ALMOV DX,0120HMOV AX,20000OUT DX,ALMOV AL,AHOUT DX,ALCNT1:MOV DX,0123HMOV AL,56HOUT DX,ALMOV DX,0121H,MOV AL,200OUT DX,ALCNT2:MOV DX,012
12、3HMOV AL,0B0HOUT DX,ALMOV DX,0122HMOV AX,10000OUT DX,ALMOV AL,AHOUT DX,AL,30,*如何扩展定时/计数范围?,当定时长度不够时,可把2个或3个计数通道串联起来使用,甚至可把多个8253串联起来使用。例:CLK频率为1MHz,要求在OUT1端产生频率1Hz的脉冲。,31,这时可将计数器0、1串联,工作方式都均为方式3,计数初值均为1000。连接方法见下图。,8253,OUT1,GATE1,CLK1,OUT0,GATE0,CLK0,+5V,+5V,1MHz,1KHz,1Hz,32,8253小结,包含3个16位计数器通道4个编址
13、部件:CNT0/1/2和控制寄存器每个计数器通道工作前必须初始化:控制字和计数初值6种工作方式每种工作方式:启动方式、输出波形、是否可重复计数等各不相同.,33,5.5 可编程并行接口芯片8255,特点:含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力;可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。,34,一、引脚介绍,连接系统端的主要引线:D0D7CSRDWRA0,A1 RESET复位信号,接系统总线的RESET,A1 A0 选择0 0 端口A0 1 端口B1 0 端口C1 1 控制寄存器(只写口),注:8255复位后(1)控制寄存器清零;(2)A、B、C
14、三个端口皆为输入口,且内容皆为0;,35,36,引脚(续),连接外设端的引脚:PA0PA7PB0PB7PC0PC7,分别对应A、B、C三个8位输入/输出端口,三个端口可通过编程分别指定为输入或输出口。其中,C口即可用作独立的输入/输出口,也可用作A、B口的控制信号或状态信号。,37,二、8255与8088系统的连接示意图,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,8255,A口,B口,C口,D0D7,外 设,A15A2,系统总线,38,三、8255工作方式,基本输入/输出方式(方式0),(A、B、C口)选通输入/输出方式(方式1),(仅A、B口)双向传送
15、方式(方式2),(仅A口),某端口工作于哪一种方式,可通过软件编程来指定。即向8255写入方式控制字来决定其工作方式。,39,1、工作方式0,要点:8255 A口、B口、C口均为工作方式0时,相当于三个独立的8位简单接口。A、B端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出。C端口即可以是一个8位的简单接口,也可以分为两个独立的4位端口,分别设定输入输出方向。,40,A口、B口、C口均为方式0使用时,输入或输出方向可由方式字设置,如下所示:,41,2、工作方式1,只有A、B口可使用方式1。当A、B口以方式1作输入或输出口使用时,C口就不能做I/O口使用了,C口的部分位固定用作
16、A、B口的选通控制信号或状态信号。,42,例如:A口、B口均为方式1输入时,C口的引脚功能,STB选通信号。它将外设数据送入8255的输入缓冲器。IBF输入缓冲器满。CPU用IN指令取走数据后,此信号被清除。INTR中断请求。STB的后沿产生,可用于中断CPU,让CPU读走输入锁存器中的数据。是否允许发出INTR请求,受中断允许位INTE控制。只有在 INTE=1且IBF为高电平时,才发出INTR请求信号。,43,44,(2)A口、B口均为方式1输出时 C口的引脚功能,OBF输出缓冲器满,低电平有效,通知外设取走数据。ACK外设响应信号,表示已从数据端口取走数据。此信号使OBF变高。INTR8
17、255发出的中断请求信号,通知CPU输出下一个数据。是否允许8255产生INTR信号,由中断允许位INTE控制,只有在INTE=1和OBF为高电平时(输出缓冲器空)时,INTR才有效。,45,46,3、工作方式2(双向方式),只有A口可工作在方式2下,A口工作在方式2时,C口的5条线为A口提供传输联络信号。方式2为双向方式既是输入口,又是输出口。方式2时C口的引脚功能 A口做输入口使用时,能否发中断请求,受INTE2控制;A口做输出口使用时能否发出中断请求,受INTE1控制。,47,方式2的应用说明:,当A口工作于方式2时,B口允许工作于方式0或方式1。(1)当A口工作于方式2,B口工作于方式
18、0时PC口引脚功能为:(2)当A口工作于方式2,B口工作于方式1输入时PC口引脚功能为:,48,(3)当A口工作于方式2,B口工作于方式1输出时PC口引脚功能为:,49,各种工作方式下如何设定8255的中断允许:,INTE可利用对C口的位控操作来设置:方式1输入:A口的INTEA:对PC4按位置1或清0 B口的INTEB:对PC2按位置1或清0方式1输出:A口的INTEA:对PC6按位置1或清0 B口的INTEB:对PC2按位置1或清0双向方式_方式2 INTE1:对PC.bit6按位置1或清0 INTE2:对PC.bit4按位置1或清0如何对PC口进行位控操作见8255编程!,50,四、82
19、55 的初始化编程 包含两个内容:工作方式设置及对PC口按位操作,设定8255工作方式以及对PC口按位操作均是通过对8255的控制寄存器写操作完成的。方式控制字:确定3个端口的工作方式;C口按位控制字:对8255 PC口按位置1或清0;,51,方式控制字,52,C口按位置1或清0控制字,8255知识回顾,1、8255是一个可编程并行接口芯片,在与计算机总线连接时,可形成()个端口地址。若端口地址是F8H、F9H、FAH和FBH,则PA口地址是(),控制寄存器口地址是()。2、8255的PA口、PB口、PC口均为()位并行接口,可通过对8255进行初始化编程来设置各端口的工作方式和传输方向,当P
20、A、PB口选择方式1、方式2使用时,C口就不能做为()使用了,C口的部分位固定用作A、B口的()信号或()信号。3、PA口选择方式1输入口使用时,8255能发出INTRA中断请求信号的条件是()。4、8255初始化编程包括()和(),两项内容均写入8255的()端口。5、设8255端口地址是200H-203H,PA口选择方式1输入口使用,不允许中断,PB口选择方式1输出口使用,允许中断,对8255初始化编程。,54,例 设8255与系统连接形成的端口地址为120H123H。设定A 口为方式1输入,B口为方式0输出,允许A口中断,C口I/O线设定为输出。编程对8255初始化。,55,五、8255
21、芯片的应用,8255芯片与系统的连接;8255编程:包括8255芯片的初始化(设置8255各口工作方式、按位设置C口指定位状态)对8255相应输入/或输出口的访问编程;,56,例1 在看懂下面硬件图基础上按下列要求对8255和8253编程。要求:(1)当开关闭合时,使相应继电器通电动作;开关断开时,继电器不动作;(2)系统每隔100ms检测一次开关状态,实现相应的继电器控制;(3)初始状态下继电器不动作。,57,10Hz,CS,A0,A1,WR,RD,DB,PA0,PA7,PB0,PB7,+5V,+12V,K,继电器,384H387H,388H38BH,CS,A0,A1,OUT1,CLK1,2
22、MHz,CLK0,OUT0,8259APIC,WR,RD,DB,8253,8255,INTR,Q1,R1,R2,D1,2KHz,A1A0,IORIOW,D7-D0,58,题目分析:,使8255的A端口和B端口均工作于方式0;且A口为输出,B口为输入。8253计数器0和计数器1均工作于方式3,利用OUT0的输出作为计数器1的时钟信号,其输出频率为2KHz,OUT1输出频率为10Hz(周期100ms);OUT1作为中断信号,每100ms产生一次中断;CPU响应中断后检测开关状态,控制继电器的动作;8253两个计数器的计数初值分别为:CNT0:2MHz/2KHz=1000(16位)CNT1:100m
23、s/0.5ms=200(8位),59,8255和8253的初始化,;-8255初始化-MOV DX,387HMOV AL,82H;1 00 0 0 0 1 0OUT DX,AL XOR AL,AL;A口输出全0MOV DX,384HOUT DX,AL;-8253初始化-MOV DX,38BHMOV AL,00110110BOUT DX,ALMOV AL,01010110BOUT DX,ALMOV DX,388HMOV AX,1000OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,289HMOV AL,200OUT DX,AL,60,8259编程略。8253每100ms产生一
24、次中断请求,进入中断服务程序后对8255相应输入/或输出口的访问编程:;-100mS中断服务程序-100mSINT:MOV DX,385H;PB口地址 IN AL,DX;读PB0状态 NOT AL;变反 MOV DX,384H;输出到继电器 OUT DX,AL IRET,61,例2 看懂硬件图,对8255编程完成将内存BUFF开始存储的100字节数据送打印机打印。设8255端口地址为:200H-203H。,62,;-8255初始化-MOV DX,203H MOV AL,10100000B;A口设置为方式1输出,C口 I/O线设置为输出 OUT DX,AL MOV AL,00001101B;允许
25、A口中断(PC6置1)OUT DX,AL MOV AL,00000000BH OUT DX,AL;打印机初始状态未启动,START:.MOV SI,OFFSET BUFF MOV CX,100 STI;CPU开中断WAIT:MOV DX,203H MOV AL,00000001B OUT DX,AL;启动打印机等待中断请求 JCXZ RETX JMP WAIT RETX:HLT,;-INTRA中断服务程序-PUSH AX PUSH DX STI MOV AL,SI MOV DX,200H OUT DX,AL INC SI DEC CX POP DX POP AX IRET,66,5.6可编程串
26、行通信接口,了解:串行通信的一般概念工作方式、同步方式、数据格式、物理标准串行通信的接口标准EIA RS-232C可编程串行异步通信接口8250(UART)连接、编程、应用UART:Universal Asynchronous Receiver Transmitter,*,67,串行通信基本概念,串行通信:每个时间单位仅传送一位信息;每个字符(字节)的各位依次传送;字符之间的间隔不定。优点:传输线少,成本低,传输距离远,68,1.串行通信工作方式,单工通信只能由一方发送,例:广播半双工通信某一时刻只能由一方发送,例:对讲机全双工通信双方可同时传输,例:电话,69,单工/双工操作,发送器,接收器
27、,发送器/接收器,发送器/接收器,发送器/接收器,发送器/接收器,单工方式:,半双工方式:,全双工方式:,A站,B站,70,电话网络模拟信号,计算机数字信号。远距离通信时需要通过普通电话网络传输数字信号:频带宽电话网络:频带窄 要使数字信号在电话网络上传输,需要进行信号变换把数字信号承载到模拟信号上传输,这个模拟信号称为载波信号。调制把数字信号承载到载波信号上解调从载波信号中恢复出数字信号调制解调器:实现调制与解调的设备,*2.调制与解调,71,三种调制方式,根据载波 Acos(t+)的三个参数:幅度、频率、相位,产生常用的三种调制技术:幅移键控法 Amplitude-Shift Keying
28、(ASK)频移键控法 Frequency-Shift Keying(FSK)相移键控法 Phase-Shift Keying(PSK)ASK(又称为调幅)用载波信号的不同幅度代表1和0FSK(又称为调频)用载波信号的不同频率代表1和0PSK(又称为调相)用载波信号的相位变化代表1和0(有变化为1,无变化为0),72,串行通信主要用于远距离数据传输。问题:干扰、衰减,信号畸变解决方法:差错控制技术检测、纠正常用的数据校验方法:奇偶校验:以字符为单位进行校验发送方使发送的每个字节中1的个数为奇数或偶数;接收方检查收到的每个字节中1的个数是否符合双方的事先约定。奇偶校验可以检查出一个字节中发生的单个
29、错误。奇偶校验不能自动纠错,发现错误后需“重传”。,3.数据校验,73,循环冗余校验CRC(循环冗余码/多项式编码)以数据块(帧,Frame)为单位进行校验编码思想:将数据块构成的位串看成是系数为0或1的多项式如110001,可表示成多项式 x5+x4+1数据块构成的多项式除以另一个多项式G(x),得到的余数多项式R(x)就称为CRC码(或称为校验和),而G(x)则称为生成多项式。CRC校验的检错方式:收发双方约定一个生成多项式G(x),发送方在帧的末尾加上校验和,使带有校验和的帧的多项式能被G(x)整除;接收方收到后,用G(x)去除它,若余数为0,则传输正确,否则传输有错。,数据校验,74,
30、CRC校验和计算方法若G(x)为r阶,原帧为m位,其多项式为M(x),则在原帧后面添加r个0,帧成为m+r位,相应多项式2rM(x)按模2除法用2rM(x)除以G(x):商Q(x),余R(x)即 2rM(x)=G(x)Q(x)+R(x)按模2加法把2rM(x)与余数R(x)相加,结果就是要传送的带校验和的帧的多项式T(x)T(x)=2rM(x)+R(x)实际上,T(x)=2rM(x)+R(x)=G(x)Q(x)+R(x)+R(x)=G(x)Q(x)(模2运算)所以,若接收的T(x)正确,则它肯定能被G(x)除尽。,数据校验,75,数据校验,CRC校验码的检错能力:可检出所有奇数个错可检出所有单
31、位/双位错可检出所有G(x)长度的突发错常用的生成多项式:CRC12=x12+x11+x3+x2+1CRC16=x16+x15+x2+1CRC32=x32+x26+x23+x22+x16+x11+x10+x8+x7+x5+x4+x2+x+1,76,4.同步通信与异步通信,所有串行通信都需要一个时钟信号来作为数据的定时参考。发送器和接收器用时钟来决定何时发送和读取每一个数据位。根据传输时采用的是统一时钟还是本地局部时钟,分为同步传输和异步传输两种。同步传输用一个时钟脉冲确定一个数据位,异步传输用多个时钟脉冲确定一个数据位(如16个)同步传输以数据块(当作“位流”看待)为单位传输,异步传输以字符为
32、单位传输,但都称为帧(Frame),77,同步通信的时钟定时方法,数据(62H),0,1,1,0,0,0,1,0,同步传输先发送高位(MSB),发送方在时钟信号的下降沿发送字节,接收方在时钟信号的上升沿接收字节,时钟(发送时钟与接收时钟完全同步),LSB,MSB,78,7.4.2 串行通信的接口标准,机械特性:连接器的尺寸、引脚分布信号特性:信号电平、通信速率功能特性:引脚功能、控制时序 最常见的串行通信标准是RS-232C。,79,RS-232C标准,外形为25针或9针的D型连接器通信速率:波特率Baud(符号数/s)100、300、600、1200、2400、4800 9600、19.2K
33、、33.6K、56K 信号电平:逻辑“1”:-3V-15V逻辑“0”:+3V+15VTTL电平与RS232电平转换:TTLRS232:MC1488RS232TTL:MC1489,80,主要引脚的功能,81,信号时序(接收),设备握手DTR:PCM(保持,表示PC已可以工作)DSR:PCM(保持,表示M已可以工作)监视载波信号DCD:PCM载波(表示数据链已建立)接收数据RD:PCM数据调制信号结束通信DCD消失、PC撤除DTR、Modem撤除DSR,82,信号时序(发送),设备握手DTR:PCM(保持)DSR:PCM(保持)请求发送RTS:PCM(保持),M载波,在对方产生DCDCTS:PCM
34、(保持)发送数据TD:PCM数据调制信号结束通信PC撤除RTS/DTRModem撤除CTS/DSR,停止发送载波,83,RS-232C接口连接方式,84,RS-232C接口连接方式(续),一种简化的连接方式(Null Modem)适用于双机直连,TDRDRTSCTSDCDGNDDTRDSRRI,TDRDRTSCTSDCDGNDDTRDSRRI,85,5.4.3 可编程串行通信接口8250,主要内容:1)8250的引脚及功能 2)与系统的连接 3)内部结构与内部寄存器 4)8250的编程,86,1.8250 的引脚及功能,面向系统的引脚:D0D7 双向数据线。与系统数据总线DB相连接,用以传送数
35、据、控制信息和状态信息。CS0,CS1,CS2 片选信号,当它们同时有效时,该8250芯片被选中。CSOUT 片选输出信号。当8250的CS0、CS1和CS2同时有效时,CSOUT为高电平。MR 主复位信号,复位后8250的状态见P331表7-5。,A0A2 8250内部寄存器的选择信号。不同的编码 对应于不同的寄存器。ADS 地址选通信号。有效时可将CS0,CS1,CS2及A0-A2锁存于8250内部。不需要锁存时,ADS可直接接地。DISTR 读选通信号。通常与系统总线的IOR信号相连接。DOSTR 写选通信号。通常与系统总线的IOW信号相连接。INTR 中断请求信号。当允许8250中断时
36、,接收出错、接收数据寄存器满、发送数据寄存器空以及MODEM的状态均能够产生有效的INTR信号。,88,8250 的引脚及功能(续),面向通信设备的引脚信号SIN,SOUT:串行输入/输出端CTS,RTS,DTR,DSR:(同RS232标准中的信号)RLSD:即RS232C标准中的DCD信号RI:(同RS232标准中的信号)OUT1,OUT2:可由用户编程确定其状态的输出端BAUDOUT:波特率信号输出(频率=fCLK/分频值)XTAL1,XTAL2:接外部晶振,作为基准时钟fCLKRCLK:接收时钟输入(可直接与BAUDOUT相连),89,4.3,90,8250与8088系统的连接,系统总线
37、,D7-D0DISTRDOSTRINTRMRA0A1A2ADSDISTRDOSTRCS2CS1CS0,+5V,CS,D7-D0,#IOR,#IOW,INTR,RESET,A0,A1,A2,电平转换/驱动器14881489,到RS232接口,XTAL1XTAL2BAUDOUTRCLK,SOUTSINRTSDTRDSRDCDCTSRI,8250,XTAL,91,2.8250的内部寄存器,共10个可编程(寻址)的寄存器线路控制寄存器(LCR)BASE+3线路状态寄存器(LSR)BASE+5 发送保持寄存器(THR)BASE+0(写)接收缓冲寄存器(RBR)BASE+0(读)除数锁存器低8位(DLL)
38、BASE+0(DL=1)除数锁存器高8位(DLH)BASE+1(DL=1)中断允许寄存器(IER)BASE+1中断识别寄存器(IIR)BASE+2Modem控制寄存器(MCR)BASE+4Modem状态寄存器(MSR)BASE+6,92,8250的内部寄存器(续),除数锁存器(DLL,DLH)BASE+0,1用来保存分频系数,以获得所需的波特率。波特率可以简单地看成每秒传送多少二进制位PC机中基准时钟频率fCLK=1.8432MHz,波特率因子K=16。所以,对于指定的波特率B 除数值=1843200/(B16)=115200/B例如,通信速率为9600波特时,除数值=12。注意:写除数前,必
39、须把LCR的最高位(DL位)置1,93,8250的内部寄存器(续),线路控制寄存器(LCR)BASE+3决定传输时的数据帧格式(通信双方必须一致),DL位:0正常操作1写除数寄存器,0正常操作1SOUT强制为1(Break符号),xx0无校验001奇校验011偶校验101恒为1111恒为0,01位停止位12位停止位,107位数据位118位数据位,94,8250的内部寄存器(续),线路状态寄存器(LSR)BASE+5反映传输时的通信线状态,发送移位寄存器空,发送保持寄存器空,检测到Break,接收缓冲寄存器满,溢出错,奇偶错,格式错(停止位个数不符),95,8250的内部寄存器(续),发送保持寄
40、存器(THR)BASE+0要发送的数据写入此寄存器。当发送移位寄存器TSR空时,THR中的内容移入TSR被发送出去。只有THR空时,CPU才能写入下一个要发送的数据接收缓冲寄存器(RBR)BASE+0RSR收到一个完整的数据后,就将其送入RBR中。CPU可从RBR中读取收到的数据。RBR只能缓冲一个数据,当CPU未能及时取走上一个数据,下一个数据又送入RBR时,会产生溢出错,96,8250的内部寄存器(续),中断允许寄存器(IER)BASE+1决定哪类中断可以产生(也可禁止所有中断产生),1允许RBR满中断,1允许THR空中断,1允许线路状态中断(溢出错、奇偶错、格式错、Break),1允许M
41、odem状态中断,97,8250的内部寄存器(续),中断识别寄存器(IIR)BASE+2用于识别产生中断的原因,0无中断1有中断,00Modem状态中断(优先级最低)01THR空中断10RBR满中断11线路状态中断,98,8250的内部寄存器(续),Modem控制寄存器(MCR)BASE+4产生RTS、DTR信号产生OUT1、OUT2信号设置循环自检状态,DTR,RTS,OUT1,OUT2,LOOP,99,8250的内部寄存器(续),Modem状态寄存器(MSR)BASE+6反映RS232接口的状态,CTS,DSR,RI,RLSD,CTS,RLSD,RI,DSR,反映4个引脚的当前状态(反相值
42、),反映了自上次读MSR后这4个引脚是否发生了变化(1发生了变化),100,8250发送数据的工作过程,1)CPU(数据)8250的THR;2)TSR移空时,THR TSR,LSR中“数据发送保持寄存器空”状态位置位;3)TSR根据LCR中规定的格式从低到高逐位发送数据;4)LSR中“数据发送保持寄存器空”状态位可用来产生中断,也可查询该状态位,以实现数据的连续发送。,TSR,THR,串行数据输出,并行数据,LSR,INT,LCR,数据,状态,1),2),3),2),4),4),101,8250接收数据的工作过程,1)SIN引脚上的串行数据逐位进入RSR;2)RSR根据LSR中规定的数据位数确
43、定是否收到了一个完整的数据,收到后将数据RBR;3)RBR收到RSR的数据后,将LSR寄存器中“接收缓冲寄存器满”的状态位置位;4)LSR中“接收缓冲寄存器满”状态位可用来产生中断,也可查询该状态位,以实现数据的连续接收。,RSR,RBR,串行数据输入,并行数据,LSR,INT,LCR,数据,状态,1),2),3),4),102,3.8250 的初始化流程,初始化程序程序例子见P338-339流程图见右图,使LCR的最高位1,写除数寄存器,写LCR寄存器,同时使LCR的最高位0,写MCR寄存器,写IER寄存器,103,用BIOS功能初始化8250,PC机有两个串行接口:COM1(基地址3F8H
44、),COM2(基地址2F8H)BIOS通过中断14H提供串行通信功能功能0:初始化串行接口功能1:发送一个字符功能2:接收一个字符功能3:读串行接口状态INT14H仅提供了查询方式的通信服务要使用中断方式进行发送和接收必须自行编程,104,用BIOS功能初始化8250,功能0(初始化)的入口参数为:AH=0AL=初始化参数DX=串口编号(0=COM1,1=COM2)初始化参数定义如下:,波特率1001200101240011048001119600,奇偶校验x0无校验01奇校验11偶校验,数据位数005位016位107位118位,停止位01位12位,MOV AH,0MOV AL,初始化参数MO
45、V DX,0INT 14H,105,8250的数据发送程序(查询),LEA SI,DATA_BUFFER MOV CX,DATA_BYTESL1:MOV DX,BASE+5;LSR地址 IN AL,DX TEST AL,00100000B;THR空?JZ L1 LODSB MOV DX,BASE+0;THR地址 OUT DX,AL LOOP L1,THR空?,输出一个字节,输出完?,N,Y,Y,N,106,8250的数据接收程序(查询),LEA DI,DATA_BUFFER MOV CX,DATA_BYTESL1:MOV DX,BASE+5;LSR地址 IN AL,DX TEST AL,00011110B;有错误?JNZ ERROR TEST AL,00000001B;收到数据?JZ L1 MOV DX,BASE+0;RBR地址 IN AL,DX STOSB LOOP L1,有错误?,读入数据,收到数据?,N,Y,Y,N,错误处理,接收完?,N,Y,