1、2019年6月4日星期二,第1页,9.1 通信的概念,9.2 可编程并行通信接口8255A,9.3 可编程串行通信接口8251A,9.4 可编程计数器定时器8253,2019年6月4日星期二,第2页,9.1 通信的概念,CPU与外部设备之间常常要进行信息交换,计算机和计算机之间也需要进行信息交换,所有这些信息交换均称为“通信”。,1.并行通信是指数据的各位同时进行传送的方式,特点是传输速度快。,9.1.1 通信的一般概念,例如, CPU将数据通过并口送给打印机等都属于并行通信。,通信的基本方式分为并行通信和串行通信两种。,当距离较远、位数又多时,则导致了通信线路复杂且成本高。,2019年6月4
2、日星期二,第3页,2.串行通信是指数据的各位一位一位地进行传送, 特点是通信线路简单,只需要一对传输线。,节省传输线(优点);数据传输率较低(缺点)主要适用于长距离、低速率的通信中。,9.1.2 并行通信,并行通信就是把一个字符各位用几条线同时进行传输。,和串行通信相比,并行通信的信息实际传输速度快,信息传输率高。,远距离成本高。,2019年6月4日星期二,第4页,9.1.3 串行通信,有三种情况:即单工通信方式、半双工通信方式和全双工通信方式。,1串行通信中的一般概念, 单工和双工通信方式,2019年6月4日星期二,第5页, 同步方式和异步方式, 异步通信:每个字符的前面要有一位起始位,起始
3、位后面紧跟的是字符(数据字),最后是停止位,两个字符间的传输间隔是任意的。,标准的异步通信数据格式,2019年6月4日星期二,第6页,波特率的概念:单位时间内传送的二进制数据的位数,以位/秒(b/s)表示,也称为数据位率。它是衡量串行通信速率的重要指标。,波特率因子的概念:通信时,发送端和接收端都要用时钟来测定每1位对应的时间长度,它们称做发送时钟和接收时钟,这两个时钟的频率应该相等,它可以是信息位传输的16倍、32倍或者64倍。这个倍数称为波特率因子。,波特率因子=n波特率,一般n取1, 16, 32和64等。对于异步通信,常采用n=16,2019年6月4日星期二,第7页,当n=16时,数据
4、传输监测示意图如下:,能完成上述功能的部件为通用异步收发器(UARTUniversal Asynchronous Receiver and Transmitter)。,2019年6月4日星期二,第8页, 同步通信同步串行通信是以数据块(字符块)为信息单位传送,而每帧信息包括成百上千个字符,因此传送一旦开始,要求每帧信息内部的每一位都要同步。,2有关串行通信的物理标准, 字符格式:通信双方要约好字符的编码形式、奇偶校验形式以及起始位和停止位的规定。,2019年6月4日星期二,第9页, 波特率(Baud rate) :波特率或传输率就是指每秒传输信息的位数,它是衡量数据传送速率的指标,要求发送端和
5、接收端都要以相同的数据传送速率工作。,例1:每个字符对应1个起始位,7个信息位,1个校验位,1个停止位,波特率为1200位/秒(波特),则每秒传输的字符数为:,1200/10=120个。 每一位的传送时间Td就是波特率的倒数, 如1200波特率,则:Td=1/1200=0.833ms,2019年6月4日星期二,第10页,答:1)波特率是(7位数据位+1位起始位+1位校验位+1位停止位)240 =2400b/s 2)有效数据位传输位是 :7240=1680b/s 3)传输效率是:1680/2400=70%,例2:异步传输7位ASCII码,如果需要数据传输速率为240字符/秒,用1位奇偶校验位和1
6、位停止位,则: 1)波特率应该是多少? 2)有效数据位传输位是多少? 3)传输效率是多少?,常用的标准波特率为:110,300,600,1200,1800,2400,4800,9600,19200,。,2019年6月4日星期二,第11页,3远程串行通信,在进行远程串行通信时必须采用模拟载波传输方式。如在采用有形介质(如电话线)进行串行通信时,通信双方必须各接入一个专门设备调制解调器,将数字信号调制成模拟信号在电话线上传输,并在接收端将模拟信号解调,还原成数字信号。,电话线,2019年6月4日星期二,第12页,9.3 可编程串行通信接口8251A,串行通信是数据一位一位地顺序传输。串行通信接口通
7、过系统总线与主机连接,接收读/写信号和地址信号,进行数据的传输。,9.3.1 串行通信接口8251A的功能与工作原理 18251A的基本功能, 两种工作方式:通过编程,可以工作在同步方式,也可以工作在异步方式。同步方式下,波特率为064K,异步方式下,波特率为019.2K。, 同步方式下的格式:在同步方式时,每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。,2019年6月4日星期二,第13页, 异步方式下的格式: 每个字符也可以用5、6、7或8位来表示,用1位作为奇/偶校验。时钟频率为传输波特率的1、16或64倍。1个启动位,1个、1.5个或2个停止位。, 全双
8、工的工作方式 8251A内部提供具有双缓冲器的发送器和接收器提供全双工的工作方式功能。 提供出错检测 8251A具有奇偶、溢出和帧错误三种校验电路。,2019年6月4日星期二,第14页,28251A编程结构及工作原理 内部结构原理:由接收器、发送器、数据总线缓冲器、调制解调控制电路、读/写控制逻辑电路等模块组成。,2019年6月4日星期二,第15页, 接收器,接收器由接收缓冲器和接收控制电路两部分组成。 接收器从RXD引脚上接收串行数据,并按照相应的格式转换成并行数据后存入接收缓冲器。接收控制电路配合接收缓冲器工作的,它管理有关接收的所有功能,即: 在异步方式下,芯片复位后,先检测输入信号中的
9、有效“”,一旦检测到,就接着寻找有效地低点平来确定起始位; 消除假启动干扰; 对接到的信息进行奇偶校验,并根据校验结果建立相应的状态位; 检测停止位,并按照检测结果,建立状态位。,2019年6月4日星期二,第16页, 发送器,发送器由发送缓冲器和发送控制电路两部分组成。 发送缓冲器把来自CPU的并行数据加上相应的控制信息,然后转换成串行数据从TXD引脚发出去。所以,从功能上编程结构图中有发送移位寄存器。 发送控制电路和发送缓冲器配合工作,它控制和管理所有与串行发送有关的功能:,在异步方式下,为数据加上起始位、校验位和停止位;,在同步方式下,插入同步字符,在数据中插入校验位。,2019年6月4日
10、星期二,第17页,数据总线缓冲器是8位双向三态数据缓冲器,8251A通过数据总线缓冲器与系统相连。 在CPU执行输入/输出指令期间,由数据总线缓冲器发送和接收数据,控制字、命令字和状态字也通过数据总线缓冲器来传输。, 数据总线缓冲器,在功能上,数据总线缓冲器相当于数据输入缓冲器、数据输出缓冲器、控制寄存器和状态寄存器。,2019年6月4日星期二,第18页, 读/写控制电路:用来配合数据总线缓冲器的工作:, 调制解调控制电路:用来简化8251A和调制解调器的连接。在进行远程通信时,要用调制器将串行接口送出的数字信号变为模拟信号,再发送出去;接收端则要用解调器将模拟信号变为数字信号,再由串行接口送
11、往计算机主机。,2019年6月4日星期二,第19页,3 8251工作原理(工作过程),异步接收 a.在没有字符时,RXD线上为高电平 b.8251把RXD线上第一次出现的低电平作为起始位。 c.当检测到起始位后,8251启动一个内部计数器,以波特率因子为16为例,当计数器计到8个脉冲时,再检测RXD线,若RXD为高,则8251认为RXD线上出现了干扰(假起始),重新开始检测起始位。若RXD仍为低,则8251确认收到一个有效的起始位。,2019年6月4日星期二,第20页,d.当8251确认起始位后,进入正常的数据采样,如波特率因子为16,则每隔16个接收时钟脉冲,采样一次RXD线,RXD为高,作
12、为“1”,RXD为低,作为“0”;并将采样的数据送入“接收移位寄存器”。 e.当收到规定的一帧信息,8251进行奇偶校验,并根据校验结果,设置校验状态位。如果校验正确,则去掉校验位和停止位,只把有效数据送入“数据输入寄存器”,同时设置“状态寄存器”中的输入有效状态位,发出RXRDY信号。 f.若有效数据少于8位,8251把“数据输入寄存器”的高位填“0”。,2019年6月4日星期二,第21页,异步发送 a.当程序把8251的控制寄存器TXEN位(允许发送)置1后,若8251收到Modem(DCE)发来的CTS(Modem 允许8251发送),则开始发送。 注意:若无Modem,应将8251的C
13、TS端接地。b.发送控制电路根据编程要求,装配信息帧,即,为每个字符加上起始位、校验位和停止位,并把装配后的信息帧送至发送移位寄存器。 c.发送移位寄存器在发送时钟TXC的控制下,按波特率因子的要求,把装配好的信息帧一位一位地从TXD端上发出。,2019年6月4日星期二,第22页,d.当一帧信息发完后,8251发出TXE信号,表示已完成本帧发送(发送移位寄存器空)。e.若TXE有效,且CTS为低(Modem允许发送),TXEN位置1(程序允许发送),则8251发出TXRDY信号,表示8251可以再从CPU获得数据,重新开始发送。CPU可从状态寄存器中查询TXRDY信号。也可把TXRDY信号作为
14、中断请求信号,以便开始下一字符的发送。,2019年6月4日星期二,第23页,同步接收 a.搜索同步字符 8251监测RXD线,每当RXD线出现一个数据位时,就将其送入“接收移位寄存器”,然后比较“接收移位寄存器”和“同步字符寄存器”,若不等,8251接收下一个数据位,若相等,表示已找到同步字符,实现了同步,8251发出SYNDET信号(Synchronization Detected)。 对于双同步,只有连续找到两个同步字符,才发出SYNDET信号。 如果在SYNDET上外加一个高电平(外同步),8251立刻脱离对同步字符的搜索,认为已完成同步(注:SYNDET是一个双向线)。,2019年6月
15、4日星期二,第24页,b.实现同步后,按时钟信号对RXD线采样,并把收到的数据位送入“接收移位寄存器”。 注意:采样频率即“接收移位寄存器”的移位频率等于接收时钟RXC上的输入频率。在同步方式下,无波特率因子,或者说波特率因子固定为1(异步方式下,采样频率,即“接收移位寄存器”移位频率,即波特率, =RXC时钟频率/波特率因子)。c.接收到规定的数位时,接收移位寄存器的内容送“数据输入寄存器”,并发出RXRDY信号。,2019年6月4日星期二,第25页,同步发送 a.当程序设置TXEN位,且CTS有效后,8251开始发送。 b.发一个或两个同步字符。 c.发数据块(数据块的每个字符根据编程要求
16、,是否加上奇偶校验位)。 d.在8251发送过程中,若CPU来不及提供新的数据给8251,则8251自动插入同步字符。,2019年6月4日星期二,第26页,9.3.2 8251A芯片引脚功能,1. 8251A和CPU之间的连接信号可以分为四类:,2019年6月4日星期二,第27页,D0D7:8251A有8根数据线D0D7,通过它们,8251A与系统的数据总线相连。,2019年6月4日星期二,第28页,8251A的读/写控制真值表,2019年6月4日星期二,第29页,(4)收发联络信号 TxRDY:发送器准备好信号,输出,高电平有效,用来通知CPU,8251A已准备好发送一个字符。,TxE:发送
17、器空信号,输出,高电平有效,用来表示此时8251A发送器中并行到串行转换器空,说明一个发送动作已完成。,RxRDY:接收器准备好信号,输出,高电平有效,用来表示当前8251A已经从外部设备或调制解调器接收到一个字符,等待CPU来取走。,SYNDET:同步检测信号,只用于同步方式。,在复位时,SYNDET变为低电平。,2019年6月4日星期二,第30页,28251A与外部设备之间的连接信号,8251A与外部设备之间的连接信号分为收发联络信号和数据信号两类。,2019年6月4日星期二,第31页,数据信号 TxD:发送器数据输出信号。当CPU送往8251A的并行数据被转变为串行数据后,通过TxD送往
18、外设。,RxD:接收器数据输入信号。用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。,2019年6月4日星期二,第32页,3. 时钟、电源和地,CLK:时钟输入,用来产生8251A器件的内部时序。同步方式下,大于接收数据或发送数据的波特率的30倍;异步方式下,则要大于数据波特率的4.5倍。,TxC:发送器时钟输入,用来控制发送字符的速度。异步方式下,TxC的频率可以为字符传输波特率的1倍、16倍或者64倍。具体倍数决定于8251A编程时指定的波特率因子。,RxC:接收器时钟输入,用来控制接收字符的速度,和TxC一样。在实际使用时,RxC和TxC往往连在一起,由同一个外部时钟来
19、提供。 VCC:电源输入。GND:地。,2019年6月4日星期二,第33页,8251A和CPU之间的连接,2019年6月4日星期二,第34页,1方式选择控制字:分同步模式和异步模式,9.3.3 8251A的控制字和方式字,异步模式,2019年6月4日星期二,第35页,同步模式控制字,8251A 方式寄存器的格式,同步模式,2019年6月4日星期二,第36页,在同步模式中,接收和发送的波特率(实际上就是移位寄存器的移位率)分别和RxC引脚、TxC引脚上的输入时钟的频率相等。在异步模式中,要用模式寄存器中的两个最低位来确定波特率因子,此时RxC和TxC的频率、波特率因子和波特率之有如下关系: 时钟
20、频率=波特率因子波特率,如,模式寄存器的最低两位为10B,而要求发送数据的波特率为300,接收数据的波特率为1200,那么,供给TxC的时钟频率应为4800Hz,而供给RxC的时钟频率应为19.2KHz。,2019年6月4日星期二,第37页,2操作命令控制字(控制字),8251A 控制寄存器的格式,2019年6月4日星期二,第38页,3.状态寄存器的格式,8251A状态寄存器的格式,2019年6月4日星期二,第39页,例如,若要查询8251A接收器是否准备好,则可用下列程序段完成:,MOV DX,0FFF2H ;状态口 L: IN AL,DX ;读状态口 AND AL,02H ;查Dl1?JZ
21、 L ;未准备好,则等待MOV DX, OFFF0H ;数据口 IN Al,DX ;已准备好则输入数据,2019年6月4日星期二,第40页,48251A的初始化,2019年6月4日星期二,第41页,对8251A初始化有3个约定,它们是: 芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。 如果模式字中规定了8251A工作在同步模式,那么,CPU接着向奇地址端口输出一或两个同步字符,同步字符被写入同步字符寄存器。如果有两个同步字符,则会按先后分别写入第一个同步字符寄存器和第二个同步字符寄存器。 由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数
22、据送到数据输出缓冲寄存器。,2019年6月4日星期二,第42页,设8251A工作在异步模式,波特率系数为16,7个数据位/字符,偶校验,2个停止位,发送、接收允许,设端口地址为00E2H和00E4H。完成初始化程序。 分析:根据题目要求,可以确定模式字为:11111010B,即0FAH。,9.3.4 8251A应用 1异步模式下的初始化程序举例,控制字:00110111B,即37H。初始化程序如下:,MOV AL,0FAH ;模式字 MOV DX,00E2H OUT DX, AL ;异步方式,MOV AL,37H;控制字 OUT DX,AL,2019年6月4日星期二,第43页,2同步模式下初始
23、化程序举例,设端口地址为52H,采用内同步方式,2个同步字符(设同步字符为16H),偶校验,7位数据位/字符。 分析:根据题目要求,可以确定模式字为:00111000B,即38H。 分析:控制字为:10010111B,即97H。它使8251A对同步字符进行检索;同时使状态寄存器中的3个出错标志复位;此外,使8251A的发送器启动,接收器也启动;控制字还通知8251A,CPU当前已经准备好进行数据传输。,2019年6月4日星期二,第44页,具体程序段如下:,MOV AL,38H ;设置模式字, ;同步模式,用2个同步字符,OUT 52H,AL ; 7个数据位,偶校验MOV AL,16H OUT
24、52H,AL ;送同步字符16HOUT 52H,ALMOV AL,97H ;设置控制字, ;使发送器和接收器启动OUT 52H,AL,2019年6月4日星期二,第45页,3利用状态字进行编程的举例,8251A的控制和状态端口地址为52H,数据输入和输出端口地址为50H。字符输入后,放在BUFFER标号所指的内存缓冲区中。,MOV AL,0FAH ;设置模式字,异步方式,波特率因子16OUT 52H,AL ; 7个数据位,2个停止位,偶校验MOV AL,35H ;设置控制字,启动发送器和接收器,OUT 52H,AL ;并清除出错指示位MOV DI, 0 ;变址寄存器初始化MOV CX,80 ;计
25、数器初始化,共收取80个字符 BEGIN:IN AL,52H ;读取状态字,测试RXRDY是否1TEST AL,02H JZ BEGIN; 为零,表示未收到字符,继续读状态字、测试IN AL,50 ;读取字符,2019年6月4日星期二,第46页,MOV DX,OFFSET BUFFERMOV DX+DI,ALINC DI ;修改缓冲区指针IN AL,52H ;读取状态字TEST AL,38H;测试有无帧校验错,奇/偶校验错和溢出错,JZ ERROR;如有,则转出错处理程序LOOP BEGIN;如没错,则再收下一个字符JMP EXIT ;如输入满足80个字符,则结束 ERROR: CALL ER
26、R_OUT ;调出错处理 EXIT: ,2019年6月4日星期二,第47页,4两台微型计算机通过8251A相互通信的举例,2019年6月4日星期二,第48页,分析:设系统采用查询方式控制传输过程,异步传送。 发送端初始化程序与发送控制程序如下所示:,STT: MOV DX,CTRL_PORT;MOV AL,7FH OUT DX,AL ; MOV AL,11H ;OUT DX,ALMOV DI,BLOCK1;设置数据区首址MOV CX,NUM ;设置计数器初值 NEXT:MOV DX,CTRL_PORT IN AL,DX AND AL,01H ;查询TxRDY有效否? JZ NEXT ;无效则等
27、待,将825lA定义为异步方式,8位数据,1位停止位,偶校验,取波特率系数为64,允许发送,2019年6月4日星期二,第49页,MOV DX,DATA_PORTMOV AL,DI;向8251A输出一个字节数据。OUT DX,AL INC DI ;修改地址指针 LOOP NEXT ;未传输完,则继续下一个,接收端初始化程序和接收控制程序如下所示:,SRR:MOV DX,CTRL_PORTMOV AL,7FH OUT DX,AL ;MOV AL, 14H ;OUT DX,AL MOV DI,BLOCK1 ;设置数据区首址MOV CX,NUM ;设置计数器初值,初始化8251A,异步方式,8位数据,
28、 1位停止位,偶校验,波特率系数64,允许接收。,2019年6月4日星期二,第50页,COMT:MOV DX,CTRL_PORTIN AL,DX ROR AL,1 ;查询RxRDY有效否?ROR AL,1 JNC COMT ;无效则等待ROR AL,1 ;有效时,进一步查询是否有奇偶校验错。JC ERR ;有错时,转出错处理ROR AL,1 ;溢出JC ERRMOV DX,DATA_PORTIN AL,DX ;无错时,输入一个字节到接收数据块。MOV DI,AL INC DI ;修改地址指针LOOP COMT ;未传输完,则继续下一个HLTERR: CALL ERR_OUT,2019年6月4日
29、星期二,第51页,9.4 计数器定时器,1概述定时信号的产生可用软件和硬件两种方法获得。软件方法:用延时子程序。一般是由循环程序并且包含一定量的指令完成的,设计者需要对这些指令的执行时间进行严格计算或精确测试,以便得到精确的延时时间,软件方法节省硬件,但是CPU执行延时子程序期间,不能做其它事,降低了CPU的效率,且不容易提供多作业环境。硬件方法:用计数器/定时器来实现定时。即是一种靠硬件来实现的定时方法。本节主要介绍当前广泛应用的可编程计数器/定时器Intel8253的原理和使用方法。,9.4.1 计数器定时器概述,2019年6月4日星期二,第52页,2计数器/定时器的工作原理,可编程计数器
30、/定时器的功能体现为:一是计数功能,由程序对计数器设置好计数初值,启动后便对外部事件开始减“1”计数,减为“0”时,输出一个信号;二是定时功能:也是由程序设置好定时常数后进行减“1”计数,按定时常数,不断输出为时钟周期整数倍的定时间隔。计数器/定时器有以下用途: 在多任务的分时系统中,用来作为中断信号实现程序的切换; 可以给外部设备提供精确的定时信号; 作为可编程的波特率发生器; 实现时间延时。,2019年6月4日星期二,第53页,9.4.2 可编程计数器/定时器8253,18253的结构和工作原理 逻辑结构:Intel 8253的逻辑结构即编程结构如图(a)所示,引脚如图(b)所示。8253
31、是24脚封装。,2019年6月4日星期二,第54页,8253内部有3个计数器,分别称为计数器0、计数器1和计数器2,它们的结构完全相同。,每个计数器通过3个引脚和外部联系:一个时钟输入端CLK、一个门控信号输入端GATE和一个输出端OUT,每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件和一个输出锁存器。,2019年6月4日星期二,第55页, 数据总线缓冲器:通过数据总线缓冲器,CPU可以对8253写入初始化命令字、写入计数初值、读取计数值。所以与数据总线缓冲器相连的外部引脚D7D0接系统数据总线的低8位。, 计数器0、计数器1和计数器2:三个互相独立
32、的计数器,各自可按不同的方式工作。,计数器0、1、2三个计数器/定时器内部每个都由一个16位的可预置值的减法计数器构成。每个计数器操作独立,其内部结构相同,减法计数器由计数器初值寄存器装入初值,计数初值寄存器通过程序设置,输出寄存器用于锁存计数器的内容。, 8253的工作原理,2019年6月4日星期二,第56页, 读/写逻辑电路:读/写逻辑电路从系统总线接收输入信号,经过组合产生对8253的控制信号。 控制寄存器:写入控制字,决定计数器的工作方式。, 8253的引脚功能 与3个计数器有关的引脚 计数器0:CLK0计数器0的时钟输入GATE0计数器0的门脉冲控制输入OUT0 计数器0的输出,20
33、19年6月4日星期二,第57页,2019年6月4日星期二,第58页,28253的控制字格式,D0 (BCD):设置计数器的计数数制。当BCD=0时,计数器按二进制计数,当BCD=1时,计数器按BCD码计数。 D3、D2、D1 (M2、M1、M0):工作方式选择。有6种不同工作方式,如表9-7所示。,2019年6月4日星期二,第59页,D5、D4(RW1、RW0):读/写指示位,具体如下: 0 0:对计数器进行锁存操作,使当前计数值锁存到锁存器中,以便进行读操作; 0 1:只读/写低8位字节; 1 0:只读/写高8位字节; 1 1:先读/写低8位字节,再读/写高8位字节。 D7、D6 (SC1、
34、SC0):用来选择计数器。,其对应关系为:D7、D6 (SC1、SC0)0 0:选择计数器00 1:选择计数器11 0:选择计数器21 1:无效,2019年6月4日星期二,第60页,原则: 对计数器设置初值前,必须先写控制字,以指出计数值是二进制还是十进制、工作方式、对哪个计数器的哪些字节进行操作等规定。 初始值设置时,要符合控制字中的格式,否则就会出错。 在读计数器值时,必须先用锁存命令,锁住当前计数值,再进行读操作,否则,在读数时,计数器的数值可能处在改变过程中,这样,读出的计数值是一个不确定的数值。,38253的编程命令,48253的工作方式,控制字的D3、D2、D1 (M2、M1、M0
35、):工作方式选择。有6种不同工作方式。,2019年6月4日星期二,第61页,8253对所有的工作方式,工作时应遵循以下原则:在对8253进行写入控制字时,所以的控制逻辑电路立即复位,输出端OUT进入初始状态。 初始值写入后,要经过一个时钟的上升沿和一个下降沿,计数器才开始进行计数。 在时钟脉冲CLK的上升沿时,门控信号被采样。 时钟脉冲下降沿时,计数器做减一计数。0是计数器的最大初值。对于二进制,0216对于BCD码,0104,2019年6月4日星期二,第62页,方式0计数结束产生中断方式,开始计数,计数结束产生中断,原则:工作特点: 计数时GATE =1,若GATE变为低电平停止计数。 初值
36、为n时,OUT在n+1个时钟后产生高电平。 只计一遍数,不重复,直到写入新的控制字为止。 计数过程中,可改变计数初值,写入新初值后,重新开始计数。 GATE=0时写入初值,到GATE变1时才开始计数。,2019年6月4日星期二,第63页, 方式1单脉冲触发器(可重复触发的单稳态触发器),计数过程中,可改变计数初值,这时当前计数不受影响,回0后OUT为高电平,若再次触发,则按新的初值进行计数。 计数过程中,又来一个门控信号,则再下一时钟脉冲后,又重新从初值开始计数,OUT仍维持为低电平,这样使输出脉冲比原来延长了。,2019年6月4日星期二,第64页, 方式1单脉冲触发器(可重复触发的单稳态触发
37、器),重复周期,写入初值,开始计数,重复周期,可重复,不用重写初值。输出n-1个高,1个低电平脉冲波形。 计数过程中,如果改变计数初值,当前计数不受影响,在下一个输出周期中,将按新的计数值进行计数,这是GATE门一直有效的情况。,2019年6月4日星期二,第65页,(3) 方式2 分频器(速率发生器),* 写入控制字OUT=1; * 写入常数立即对CLK计数; * 计数到1,OUT=0; * 一个CLK周期后,OUT=1,重新计数。,* 通道连续工作不需重置时常; * 计数过程中,GATE=0,计数暂停,GATE变高后重新计数; * 计数过程中可改变计数值;新的计数值在下一次有效。,2019年
38、6月4日星期二,第66页, 方式3方波发生器,2019年6月4日星期二,第67页, 方式4软件触发选通,写入初值,开始计数,计数结束,其特点是: 若计数初值为n,写入初值n+1个时钟周期后,输出一个时钟宽度的负脉冲。 GATE=1时,允许计数,GATE=0时,禁止计数,OUT端不受影响,维持当时的电平。,2019年6月4日星期二,第68页, 方式5硬件触发选通,计数时间到,写入初值,门控触发,开始计数,再次触发,在计数过程中,使用GATE上升沿,可使计数器获得初值重新开始计数。 如果在计数过程中写入新的计数初值,并且在当前周期结束又受到GATE的触发,则在下一个时钟周期,计数器按新初值开始计数
39、。,开始计数,2019年6月4日星期二,第69页, 8253工作方式小结,8253的输出波形都是在时钟CLK周期的下降沿时产生变化。 GATE作为各通道的门控信号,对于各种工作方式,GATE所起的作用不同,,作为计数器时,进行减1计数;作为定时器时,减到终值时,又自动装入初值,重新作减1计数,,2019年6月4日星期二,第70页,5应用举例,【例9.5】 要求8253完成下列功能: 用通道0对外部事件计数,计满100向CPU发出中断请求; 利用通道1产生频率为1kHz的方波。,示波器或其它波形接收设备,外部事件产生源,分析:,通道0定义为工作方式0,完成计数功能,实际计数值为100(64H);
40、,通道1定义为方式3;计数初值应为2.5MHz/ 1kHz 2500=09C4H。 ,,2019年6月4日星期二,第71页,STT:MOV DX,336H ;8253控制端口 MOV AL,10H ;定义通道0工作在方式0,只读写OUT DX,AL ;低8位地址,选择计数器0MOV DX,330H ;给8253通道0送初值MOV AL,64HOUT DX,ALMOV DX,336H ;8253控制端口 MOV AL,76H ;定义通道1为方式3,选择计数器OUT DX,AL ;1,先读低8位,再高8位MOV DX,332H ;8253通道1端口地址 MOV AX,094CH ;给通道1送计数初
41、值OUT DX,AL,设8253通道0计数器的地址为330H,通道1计数器的地址为332H,通道2计数器的地址为334H,控制端口地址为336H,初始化程序如下:,2019年6月4日星期二,第72页,MOV AL,AHOUT DX,ALMOV DX,420H ;8259H偶地址端口MOV AL,13H ;对中断控制器8259进行初始化OUT DX,ALMOV DX,422H ;8259H奇地址端口MOV AL,50H ;设置中断类型码OUT DX,ALMOV AL,03H ;自动中断结束方式OUT DX,ALMOV AL,0FAH ;对通道0中断开放OUT DX,ALSTI,2019年6月4日
42、星期二,第73页,【例9.6】采用8253控制一个发光二极管闪亮,要求启动8253后,使发光二极管亮0.5秒后再灭0.5秒,如此重复。时钟脉冲源为2MHz,端口地址为:80H83H。要求:设计接口电路;编写初始化程序。,分析:因为要求亮0.5秒后再灭0.5秒,恰为一个方波,周期为1秒,由1s1/2MHz=1s0.5s=2000000,大于一个通道能提供的最大计数值65536。,所以要采用级连方式来完成。通道0工作于方式2,即频率发生器方式,产生一个脉冲波,设脉冲波周期为4ms(250Hz),所以计数值N0=4ms0.5s=8000;控制字为:00110100B,通道1工作于方式3,即产生方波,周期为1s,其输入为CLK1接OUT0,所以计数值N1=1s4ms=250,并使OUT1经过一个反相驱动器去控制发光二极管。,2019年6月4日星期二,第74页,编写初始化程序如下: MOV AL,34H ;#0,分频 ;器方式,写低8位后写高8位 OUT 83H,AL MOV AX,8000 ;#0 OUT 80H,AL MOV AL,AH OUT 80H,AL MOV AL,76H ;#1,通道1 ;方式3,写低8位后写高8位 OUT 83H,AL MOV AL,250 ;#1 OUT 81H,AL,