资源描述
定时计数控制接口定时计数控制接口定时计数控制接口定时计数控制接口n 8253的引脚和六种工作方式的引脚和六种工作方式n 8253的编程的编程 n 8253在在IBM PC系列机上的应用系列机上的应用教学重点1. 定时与计数定时与计数 在微机系统或智能化仪器仪表的工作过程在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于定时工作状态,或中,经常需要使系统处于定时工作状态,或者对外部过程进行计数。者对外部过程进行计数。定时或计数的工作实质均体现为对脉冲信号定时或计数的工作实质均体现为对脉冲信号的计数,如果计数的对象是标准的内部时钟的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时,如对应于一定的时间,这一过程即为定时,如果计数的对象是与外部果计数的对象是与外部过程相对应的脉冲信过程相对应的脉冲信号(周期可以不相等),则此时即为计数。号(周期可以不相等),则此时即为计数。 2. 2. 定时功能的实现方法定时功能的实现方法软件延时软件延时利用微处理器执行一个延时程序段实现利用微处理器执行一个延时程序段实现不用硬件,但占用不用硬件,但占用CPU时间、定时精度不高,随系时间、定时精度不高,随系统时钟频率改变统时钟频率改变不可编程的硬件定时不可编程的硬件定时采用分频器、单稳电路或简易定时电路控制定时时间采用分频器、单稳电路或简易定时电路控制定时时间定时电路简单、定时时间可以在一定范围改变定时电路简单、定时时间可以在一定范围改变可编程的硬件定时可编程的硬件定时软件硬件相结合、用可编程定时器芯片构成一个方便软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路灵活的定时电路具有多种工作方式、能够输出多种控制信号具有多种工作方式、能够输出多种控制信号计数器计数器/定时器的基本原理定时器的基本原理可编程计数器可编程计数器/定时器的工作原理定时器的工作原理 基于计数器的减1工作计数器计数器/定时器的用途定时器的用途在多任务的分时系统中用来作为中断信号实现程在多任务的分时系统中用来作为中断信号实现程序的切换。序的切换。可以往可以往I/O设备输出精确的定时信号。设备输出精确的定时信号。作为一个可编程的波特率发生器。作为一个可编程的波特率发生器。实现时间延迟实现时间延迟定时定时/计数器芯片计数器芯片Intel8253 Intel8253是是8086/8088微机系统常用的定时微机系统常用的定时/计数器芯片,它具有定时与计数两大功能,计数器芯片,它具有定时与计数两大功能,同类型的定时同类型的定时/计数器芯片还有计数器芯片还有Intel8254等。等。一、一、 8253的一般性能概述的一般性能概述 每个每个8253芯片有芯片有3个独立的个独立的16位计数器通道位计数器通道 每个计数器通道都可以按照二进制或二每个计数器通道都可以按照二进制或二十十进制计数进制计数 每个计数器的计数速率可以高达每个计数器的计数速率可以高达2MHz 每个通道有每个通道有6种工作方式,可以由程序设定种工作方式,可以由程序设定和改变和改变 所有的输入、输出电平都与所有的输入、输出电平都与TTL兼容兼容D7D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2二、二、8253内部结构内部结构 8253内部实现与内部实现与CPU数据总线连接的数据总线连接的8位双向三态缓冲器,用以传送位双向三态缓冲器,用以传送CPU向向8253的控制信息、数据信息以及的控制信息、数据信息以及CPU从从8253读取的状态信息,包括某一方读取的状态信息,包括某一方面时刻的实时计数值。面时刻的实时计数值。1数据总线缓冲器数据总线缓冲器2读读/写控制逻辑写控制逻辑 控制控制8253的片选及对内部相关寄存的片选及对内部相关寄存器的读器的读/写操作,它接收写操作,它接收CPU发来的地发来的地址信号以实现片选、内部通道选择以址信号以实现片选、内部通道选择以及对读及对读/写操作进行控制。写操作进行控制。3控制字寄存器控制字寄存器在在8253的初始化编程时,由的初始化编程时,由CPU写入写入控制字,以决定通道的工作方式,此控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。寄存器只能写入,不能读出。 这是三个独立的,结构相同的计数器这是三个独立的,结构相同的计数器/定时器定时器通道,每一个通道包含通道,每一个通道包含一个一个16位的计数寄存器位的计数寄存器,用以存放计数初始值,和用以存放计数初始值,和一个一个16位的减法计数器位的减法计数器和和一个一个16位的锁存器位的锁存器,锁存器在计数器工作的过,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到程中,跟随计数值的变化,在接收到CPU发来的发来的读计数值命令时,用以锁存计数值,供读计数值命令时,用以锁存计数值,供CPU读取,读取,读取完毕之后,输出锁存器又跟随减读取完毕之后,输出锁存器又跟随减1计数器变化。计数器变化。 另外,计数器的值为另外,计数器的值为0的状态,还反映在状态的状态,还反映在状态锁存器中,可供读取。锁存器中,可供读取。 4计数通道计数通道0#、1#、2#三三、8253外部引脚外部引脚 8253芯片是具有芯片是具有24个引脚的双列直个引脚的双列直插式集成电路芯片,其引脚分布如图。插式集成电路芯片,其引脚分布如图。 8253芯片的芯片的24个引脚分为两组,一个引脚分为两组,一组面向组面向CPU,另一组面向外部设备,各,另一组面向外部设备,各引脚及其所传送信号的情况,如下:引脚及其所传送信号的情况,如下:82538253的引脚的引脚 1. 面向面向CPU的引脚的引脚D0 D7:双向、三态数据线引脚,用以与系统的双向、三态数据线引脚,用以与系统的数据线连接,传送控制、数据及状态信息。数据线连接,传送控制、数据及状态信息。 A0 A1:地址信号输入引脚,一般接地址信号输入引脚,一般接CPU地址总地址总线的线的A1、A0位,用以选位,用以选择择8253芯片的通道及控制芯片的通道及控制字寄存器。字寄存器。CS*:芯片选择信号输入引脚,低电平有效芯片选择信号输入引脚,低电平有效 RD*:来自于来自于CPU的读控制信号输入引脚,低电的读控制信号输入引脚,低电平有效平有效 WR*:来自于来自于CPU的写控制信号输入引脚,低电的写控制信号输入引脚,低电平有效。平有效。 CS* A1 A0计数器通道计数器通道读操作读操作RD*写操作写操作WR*0 0 00 0 10 1 00 1 10#1#2#控制端口控制端口读计数器读计数器0读计数器读计数器1读计数器读计数器2无操作无操作写计数器写计数器0写计数器写计数器1写计数器写计数器2写控制字写控制字2. 各计数器的各计数器的3个引脚个引脚CLK时钟输入信号时钟输入信号在计数过程中,此引脚上每输入一个时钟信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减(下降沿),计数器的计数值减1GATE门控输入信号门控输入信号控制计数器工作,可分成电平控制和上升沿控控制计数器工作,可分成电平控制和上升沿控制两种类型制两种类型OUT计数器输出信号计数器输出信号当一次计数过程结束(计数值减为当一次计数过程结束(计数值减为0),),OUT引脚上将产生一个输出信号引脚上将产生一个输出信号1. 1. 计数器计数器预置寄存器预置寄存器GATECLKOUT减减1计数器计数器输出锁存器输出锁存器计数初值存于计数初值存于预置寄存器预置寄存器;在计数过程中,在计数过程中,减法计数器减法计数器的值不断递减,的值不断递减,而预置寄存器中的预置不变。而预置寄存器中的预置不变。输出锁存器输出锁存器用于写入锁存命令时,用于写入锁存命令时,锁定当前计数值锁定当前计数值四四、 82538253的控制字的控制字 计数器计数器读写格式读写格式工作方式工作方式数制数制D7D6D5D4D3D2D1D000 计数器计数器001 计数器计数器110 计数器计数器211 非法非法00 计数器锁存命计数器锁存命令令 01 只读写低字节只读写低字节10 只读写高字节只读写高字节11 先读写低字节先读写低字节 后读写高字节后读写高字节000 方式方式0001 方式方式1010 方式方式2011 方式方式3100 方式方式4101 方式方式50 二进制二进制1 十进制十进制控制字写入控制字控制字写入控制字I/O地址(地址(A1A011)示例示例四四、 82538253的控制字的控制字 要使用要使用82538253,必须首先进行初始化编程,初,必须首先进行初始化编程,初始化编程包括设置始化编程包括设置通道控制字通道控制字和送和送通道计数初通道计数初值值两个方面,控制字写入两个方面,控制字写入82538253的控制字寄存器,的控制字寄存器,而初始值则写入相应通道的计数寄存器中。而初始值则写入相应通道的计数寄存器中。初始化编程包括如下步骤:初始化编程包括如下步骤:(1)(1)写入通道控制字,规定通道的工作方式;写入通道控制字,规定通道的工作方式;(2)(2)写入计数值,若规定只写低写入计数值,若规定只写低8 8位,则高位,则高8 8位自位自动置动置0 0,若规定只写高,若规定只写高8 8位,则低位,则低8 8位自动置位自动置0 0。若为若为1616位计数值则分两次写入,先写低位计数值则分两次写入,先写低8 8位,后位,后写高写高8 8位。位。 D D0 0:用于确定计数数制,:用于确定计数数制,0 0,二进制;,二进制;1 1,BCDBCD码码18253的初始化编程的初始化编程例例1:设:设8253的端口地址为:的端口地址为:04H07H,要使计数器,要使计数器1工作在方式工作在方式0,仅用,仅用8位二进制计数,计数值为位二进制计数,计数值为128,进行初始化编程。进行初始化编程。控制字为:控制字为:01010000B=50H初始化程序:初始化程序: MOV AL,50H MOV DX,07H OUT DX,AL MOV AL,80H MOV DX,05H OUT DX,AL例例2:设:设8253的端口地址为:的端口地址为:F8HFBH,若用通道,若用通道0工作工作在方式在方式1,按二,按二十进制计数,计数值为十进制计数,计数值为5080H,进行,进行初始化编程。初始化编程。控制字为:控制字为:00110011B=33H初始化程序:初始化程序: MOV AL,33H MOV DX,0FBH OUT DX,AL MOV AL,80H MOV DX,0F8H OUT DX,AL MOV AL,50H OUT DX,AL例例3:设:设8253的端口地址为:的端口地址为:04H07H,若用通道,若用通道2工作在方式工作在方式2,按二进制计数,计数值为,按二进制计数,计数值为02F0H,进行,进行初始化编程。初始化编程。控制字为:控制字为:10110100B=0B4H初始化程序:初始化程序: MOV AL,0B4H MOV DX,07H OUT DX,AL MOV AL,0F0H MOV DX,06H OUT DX,AL MOV AL,02H OUT DX,AL 8253可用控制命令来读取相应通道的计数值,由可用控制命令来读取相应通道的计数值,由于计数值是于计数值是16位的,而读取的瞬时值,要分两次位的,而读取的瞬时值,要分两次读取,所以在读取计数值之前,要用锁存命令,读取,所以在读取计数值之前,要用锁存命令,将相应通道的计数值锁存在锁存器中,然后分两将相应通道的计数值锁存在锁存器中,然后分两次读入,先读低字节,后读高字节。次读入,先读低字节,后读高字节。当控制字中,当控制字中,D5、D4=00时,控制字的作用是将时,控制字的作用是将相应通道的计数值锁存的命令,锁存计数值在读相应通道的计数值锁存的命令,锁存计数值在读取完成之后,自动解锁。取完成之后,自动解锁。2 2读取读取82538253通道中的计数值通道中的计数值如要读通道如要读通道1的的16位计数器,编程如下:位计数器,编程如下:地址地址F8HFBH。MOVAL,40H ;MOV DX,0FBHOUTDX,AL ;锁存计数值;锁存计数值MOV DX,0F9HINAL,DXMOVCL,AL;低八位;低八位INAL,DX;MOVCH,AL;高八位;高八位五五、82538253在系统中的典型连接在系统中的典型连接1试说明定时和计数在实际系统中的应用?这两者之间有和联系和差别?2定时和计数有哪几种实现方法?各有什么特点?3试说明定时/计数器芯片Intel8253的内部结构。定时/计数器芯片Intel8253占用几个端口地址?各个端口分别对应什么 习题与思考习题与思考六六、82538253的工作方式的工作方式 8253共有共有6种工作方式,各方式下的工作状态是不种工作方式,各方式下的工作状态是不同的,输出的波形也不同,其中比较灵活的是同的,输出的波形也不同,其中比较灵活的是门门控信号控信号的作用。由此组成了的作用。由此组成了8253丰富的工作方式、丰富的工作方式、波形,下面我们逐个介绍:波形,下面我们逐个介绍: 1几条基本原则几条基本原则 (1) 控制字写入计数器时,所有的控制逻辑电路立即复位,输控制字写入计数器时,所有的控制逻辑电路立即复位,输出端出端OUT进入初始状态。初始状态对不同的模式来说不一定相进入初始状态。初始状态对不同的模式来说不一定相同。同。(2) 计数初始值写入之后,要经过一个时钟周期上升沿和一个计数初始值写入之后,要经过一个时钟周期上升沿和一个下降沿,计数执行部件才可以开始进行计数操作,因为第一个下降沿,计数执行部件才可以开始进行计数操作,因为第一个下降沿将计数寄存器的内容送减下降沿将计数寄存器的内容送减1计数器。计数器。(3) 通常,在每个时钟脉冲通常,在每个时钟脉冲CLK的上升沿,采样门控信号的上升沿,采样门控信号GATE。不同的工作方式下,门控信号的触发方式是有具体规。不同的工作方式下,门控信号的触发方式是有具体规定的,即或者是电平触发,或者是边沿触发,在有的模式中,定的,即或者是电平触发,或者是边沿触发,在有的模式中,两种触发方式都是允许的。其中两种触发方式都是允许的。其中0、2、3、4是电平触发方式,是电平触发方式,1、2、3、5是上升沿触发。是上升沿触发。(4) 在时钟脉冲的下降沿,计数器作减在时钟脉冲的下降沿,计数器作减1计数,计数,0是计数器所能是计数器所能容纳的最大初始值。二进制相当于容纳的最大初始值。二进制相当于216,用,用BCD码计数时,相当码计数时,相当于于104方式方式0的波形如图所示,当控制字写入控制字的波形如图所示,当控制字写入控制字寄存器后,输出寄存器后,输出OUT就变低,当计数值写入计就变低,当计数值写入计数器后开始计数,在整个计数过程中,数器后开始计数,在整个计数过程中,OUT保保持为低,当计数到持为低,当计数到0后,后,OUT变高;变高;GATE的高的高低电平控制计数过程是否进行。低电平控制计数过程是否进行。2方式方式0计数结束产生中断计数结束产生中断 方式方式0 0时序图时序图GATEOUTCLK 031244方式方式0WR设设定定工工作作方方式式设设定定计计数数初初值值计计数数值值送送入入计计数数器器计计数数过过程程计计数数结结束束 计数器只计一遍,当计数到0时,不重新开始计数保持为高,直到输入一新的计数值,OUT才变低,开始新的计数; 计数值是在写计数值命令后经过一个输入脉冲,才装入计数器的,下一个脉冲开始计数,因此,如果设置计数器初值为N,则输出OUT在N1个脉冲后才能变高; 在计数过程中,可由GATE信号控制暂停。当GATE0时,暂停计数;当GATE1时,继续计数; 在计数过程中可以改变计数值,且这种改变是立即有效的,分成两种情况: 若是8位计数,则写入新值后的下一个脉冲按新值计数;若是16位计数,则在写入第一个字节后,停止计数,写入第二个字节后的下一个脉冲按新值计数。方式方式0 0有下列特点有下列特点 方式方式1的波形如图所示,的波形如图所示,CPU向向8253写入控写入控制字后制字后OUT变高,并保持,写入计数值后并变高,并保持,写入计数值后并不立即计数,只有当外界不立即计数,只有当外界GATE信号启动后信号启动后(一个正脉冲)的下一个脉冲才开始计数,(一个正脉冲)的下一个脉冲才开始计数,OUT变低,计数到变低,计数到0后,后,OUT才变高,此时才变高,此时再来一个再来一个GATE正脉冲,计数器又开始重新正脉冲,计数器又开始重新计数,输出计数,输出OUT再次变低,再次变低,因此输出为,因此输出为一单拍负脉冲一单拍负脉冲 3方式方式1可编程的硬件触发单拍脉冲可编程的硬件触发单拍脉冲方式方式1 1时序图时序图设设定定工工作作方方式式设设定定计计数数初初值值硬硬件件启启动动计计数数值值送送入入计计数数器器计计数数过过程程计计数数结结束束GATEOUTCLK 031244方式方式1WR输出输出OUT业宽度为计数初值的单脉冲;业宽度为计数初值的单脉冲;输出受门控信号输出受门控信号GATE的控制,分三种情况:的控制,分三种情况:计数到计数到0后,再来后,再来GATE脉冲,则重新开始计数,脉冲,则重新开始计数,OUT变低;变低;在计数过程中来在计数过程中来GATE脉冲,则从下一脉冲,则从下一CLK脉冲脉冲开始重新计数,开始重新计数,OUT保持为低;保持为低;改变计数值后,只有当改变计数值后,只有当GATE脉冲启动后,才按脉冲启动后,才按新值计数,否则原计数过程不受影响,仍继续进行新值计数,否则原计数过程不受影响,仍继续进行,即新值的改变是从下一个,即新值的改变是从下一个GATE开始的。开始的。计数值是多次有效的,每来一个计数值是多次有效的,每来一个GATE脉冲,就脉冲,就自动装入计数值开始从头计数,因此在初始化时,自动装入计数值开始从头计数,因此在初始化时,计数值写入一次即可。计数值写入一次即可。方式方式1 1有下列特点有下列特点 4. 方式方式2速率发生器速率发生器 方式方式2的波形如图所示,在这种方式下,的波形如图所示,在这种方式下,CPU输出控制字后,输出输出控制字后,输出OUT就变高,写就变高,写入计数值后的下一个入计数值后的下一个CLK脉冲开始计数,脉冲开始计数,计数到计数到1后,输出后,输出OUT变低,经过一个变低,经过一个CLK以后,以后,OUT恢复为高,计数器重新开始计恢复为高,计数器重新开始计数,数,因此在这种方式下,只需写入一,因此在这种方式下,只需写入一次计数值,就能连续工作,输出连续相同次计数值,就能连续工作,输出连续相同间隔的负脉冲(前提:间隔的负脉冲(前提:GATE保持为高),保持为高),即周期性地输出。即周期性地输出。 方式方式2 2时序图时序图03124GATEOUTCLK 4方式方式2031240312403124WR通道可以连续工作;通道可以连续工作;GATE可以控制计数过程,当可以控制计数过程,当GATE为为低时暂停计数,恢复为高后重新从初值;低时暂停计数,恢复为高后重新从初值;(注意:该方式与方式(注意:该方式与方式0不同,方式不同,方式0是继是继续计数);续计数);重新设置新的计数值即在计数过程中改重新设置新的计数值即在计数过程中改变计数值,则新的计数值是下次有效的,变计数值,则新的计数值是下次有效的,同方式同方式1。方式方式2 2有下列特点有下列特点 5方式方式3方波速率发生器方波速率发生器 方式方式3的波形如图所示,这种方式下的输出的波形如图所示,这种方式下的输出与方式与方式2都是周期性的,不同的是周期不同,都是周期性的,不同的是周期不同,CPU写入控制字后,输出写入控制字后,输出OUT变高,写入计变高,写入计数值后开始计数,不同的是减数值后开始计数,不同的是减2计数,当计计数,当计数到一半计数值时,输出变低,重新装入计数到一半计数值时,输出变低,重新装入计数值进行减数值进行减2计数,当计数到计数,当计数到0时,输出变高,时,输出变高,装入计数值进行减装入计数值进行减2计数,循环不止。计数,循环不止。 方式方式3 3时序图时序图计数值为偶数 方式方式3 3时序图时序图计数值为奇数 通道可以连续工作;通道可以连续工作;关于计数值的奇偶,若为偶数,则输出标准方波,高低电关于计数值的奇偶,若为偶数,则输出标准方波,高低电平各为平各为N/2N/2个;若为奇数,则在装入计数值后的下一个个;若为奇数,则在装入计数值后的下一个CLKCLK使使其装入,然后减其装入,然后减1 1计数,(计数,(N N1 1)/2/2,OUTOUT改变状态,再减至改变状态,再减至0 0,OUTOUT又改变状态,重新装入计数值循环此过程,因此,在又改变状态,重新装入计数值循环此过程,因此,在这种情况下,输出有(这种情况下,输出有(N N1 1)/2/2个个CLKCLK个高电平,(个高电平,(N N1 1)/2/2个个CLKCLK个低电平;个低电平;GATEGATE信号能使计数过程重新开始,当信号能使计数过程重新开始,当GATEGATE0 0时,停止计时,停止计数,当数,当GATEGATE变高后,计数器重新装入初值开始计数,尤其是变高后,计数器重新装入初值开始计数,尤其是当当GATEGATE0 0时,若时,若OUTOUT此时为低,则立即变高,其它动作同上此时为低,则立即变高,其它动作同上;在计数期间改变计数值不影响现行的计数过程,一般情况在计数期间改变计数值不影响现行的计数过程,一般情况下,新的计数值是在现行半周结束后才装入计数器。但若中下,新的计数值是在现行半周结束后才装入计数器。但若中间遇到有间遇到有GATEGATE脉冲,则在此脉冲后即装入新值开始计数。脉冲,则在此脉冲后即装入新值开始计数。方式方式3 3有下列特点有下列特点 方式方式4的波形如图所示,在这种方式下的波形如图所示,在这种方式下,也是当,也是当CPU写入控制字后,写入控制字后,OUT立即立即变高,写入计数值开始计数,当计数到变高,写入计数值开始计数,当计数到0后,后,OUT变低,经过一个变低,经过一个CLK脉冲后,脉冲后,OUT变高,这种计数是一次性的(与方变高,这种计数是一次性的(与方式式0有相似之处),只有当写入新的计数有相似之处),只有当写入新的计数值后才开始下一次计数。值后才开始下一次计数。6方式方式4软件触发的选通信号发生器软件触发的选通信号发生器GATEOUTCLK031244方式方式4223331 0WR方式方式4 4时序图时序图当计数值为当计数值为N时,则间隔时,则间隔N1个个CLK脉冲输出一脉冲输出一个负脉冲(计数一次有效);个负脉冲(计数一次有效);GATE0时,禁止计数,时,禁止计数,GATE1时,恢复继续时,恢复继续计数;计数;在计数过程中重新装入新的计数值,则该值是立在计数过程中重新装入新的计数值,则该值是立即有效的(若为即有效的(若为16位计数值,则装入第一个字节时位计数值,则装入第一个字节时停止计数,装入第二个字节后开始按新值计数)。停止计数,装入第二个字节后开始按新值计数)。 方式方式4 4有下列特点有下列特点 方式方式5的波形如图所示,在这种方式下,的波形如图所示,在这种方式下,当控制字写入后,当控制字写入后,OUT立刻变高,写入计立刻变高,写入计数值后并不立即开始计数,而是由数值后并不立即开始计数,而是由GATE的上升沿触发启动计数的,当计数到的上升沿触发启动计数的,当计数到0时,时,输出变低,经过一个输出变低,经过一个CLK之后,输出恢复之后,输出恢复为高,计数停止,若再有为高,计数停止,若再有GATE脉冲来,脉冲来,则重新装入计数值开始计数,上述过程重则重新装入计数值开始计数,上述过程重复。复。7方式方式5硬件触发的选通信号发生器硬件触发的选通信号发生器GATEOUTCLK031244方式方式52233311 0WR方式方式5 5时序图时序图在这种方式下,若设置的计数值是在这种方式下,若设置的计数值是N,则,则在在GATE脉冲后,经过(脉冲后,经过(N1)个)个CLK才一才一个负脉冲;个负脉冲;若在计数过程中又来一个若在计数过程中又来一个GATE脉冲,则脉冲,则重新装入初值开始计数,输出不变,即计数值重新装入初值开始计数,输出不变,即计数值多次有效;多次有效;若在计数过程中修改计数值,则该计数值若在计数过程中修改计数值,则该计数值在下一个在下一个GATE脉冲后装入开始按此值计数。脉冲后装入开始按此值计数。 方式方式5 5有下列特点有下列特点 各种工作方式的输出波形各种工作方式的输出波形方式方式 0方式方式 1方式方式 2方式方式 3方式方式 4方式方式 50N0N0N0/N110NN/2 N/2 0/N0N0 1N0 1N0 1讨论:讨论:计数开始的时刻计数开始的时刻88253的工作方式小结的工作方式小结 (1) 方式方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲,但方式2连续工作,方式4由软件触发启动,方式5由硬件触发启动。 (2) 方式方式5与方式1工作过程相同,但输出波形不同,方式1输出的是宽度为N个为N个CLK脉冲的低电平有效的脉冲(计数过程中输出为低),而方式5输出的为宽度为一个CLK脉冲的负脉冲(计数过程中输出为高)。 (3) 输出端输出端OUT的初始状态,方式0在写入方式字后输出为低,其余方式,写入控制字后,输出均变未能高。 (4) 任一种方式,均是在写入计数初值之后,才能开始计数任一种方式,均是在写入计数初值之后,才能开始计数,方式,方式0、2、3、4都是在写入计数初值之后,开始计数的,而方式1和方式5需要外部触发启动,才开始计数。(5) 6种工作方式中,只有方式2和方式3是连续计数,其它方式都是一次计数,要继续工作需要重新启动,方式0、4由软件启动,方式1、5由硬件启动。(6) 门控信号的作用门控信号的作用通过门控信号GATE,可以干预8253某一通道的计数过程,在不同的工作方式下,门控信号起作用的方式也不一样,其中0、2、3、4是电平起作用,1、2、3、5是上升沿起作用,方式2、3对电平上升沿都可以起作用。(7) 在计数过程中改变计数值,它们的作用有所不同。在计数过程中改变计数值,它们的作用有所不同。(8) 计数到计数到0后计数器的状态,方式0、1、4、5继续倒计数,变为FF、FE。,而方式2、3、,则自动装入计数初值继续计数。88253的工作方式小结(续)的工作方式小结(续) 七七、 82538253的编程应用的编程应用例例1 1 在在IBM PC/XTIBM PC/XT中,中,82538253作为定时计数器电路,它的三作为定时计数器电路,它的三个通道的作用分别为:个通道的作用分别为:计数器计数器0 0编程为方式编程为方式3 3,GATE0GATE0固定为高电平,固定为高电平,OUT0OUT0作为中作为中断请求信号接至断请求信号接至8259A8259A中断控制器的第中断控制器的第0 0级级IRQ0IRQ0。这个定时中。这个定时中断(约断(约55ms55ms)用于报时时钟的时间基准。)用于报时时钟的时间基准。计数器计数器1 1编程为方式编程为方式2 2,GATE1GATE1固定为高电平,固定为高电平,OUT1OUT1的输出的输出经过一个经过一个D D触发器后作为触发器后作为8237A8237A5DMA5DMA控制器通道控制器通道0 0的的DMADMA请求请求DREQ0DREQ0,用于定时(约,用于定时(约15us15us)启动刷新动态)启动刷新动态RAMRAM,这样在,这样在2ms2ms内可以有内可以有132132次刷新,大于次刷新,大于128128次(次(128128次是系统的最低要求次是系统的最低要求)。)。计数器计数器2 2编程为方式编程为方式3 3,1KHZ1KHZ的方波输出,通过滤波,去除的方波输出,通过滤波,去除高频分量后送扬声器,高频分量后送扬声器,GATE2GATE2是是82558255的的PB0PB0,OUTOUT输出经一与输出经一与门控制,控制信号为门控制,控制信号为82558255的的PB1PB1,这样利用,这样利用PB0PB0、PB1PB1同时为同时为高的时间来控制发长音还是发短音。高的时间来控制发长音还是发短音。2. 写入计数值写入计数值选择二进制时选择二进制时计数值范围:计数值范围:0000HFFFFH0000H是最大值,代表是最大值,代表65536选择十进制(选择十进制(BCD码)码)计数值范围:计数值范围:000099990000代表最大值代表最大值10000计数值写入计数器各自的计数值写入计数器各自的I/O地址地址示例示例3. 读取计数值读取计数值对对8位数据线,读取位数据线,读取16位计数值需分两次位计数值需分两次计数在不断进行,应该将当前计数值先行计数在不断进行,应该将当前计数值先行锁存,然后读取:锁存,然后读取:向控制字向控制字I/O地址:给地址:给8253写入锁存命令写入锁存命令从计数器从计数器I/O地址:读取锁存的计数值地址:读取锁存的计数值读取计数值,要注意读写格式和计数数制读取计数值,要注意读写格式和计数数制8253在在IBM PC系列机上的应用系列机上的应用A0A1 A0 A1D0D7D0D7OUT1OUT2OUT0GATE0GATE1GATE2CLK0CLK1CLK2D QCLK+5V接至接至DMA控制器控制器接至扬声器驱动器接至扬声器驱动器PB0PB1IRQ0DRQ0 8253+5V1.19318MHzDACK0 BRDIORIOWRDWRCST/CCS定时中断和定时刷新定时中断和定时刷新从阅读初始化程序段从阅读初始化程序段看看计数器计数器0作为定时中断作为定时中断的作用的作用n将将计数器计数器1作为定时刷新作为定时刷新n看如何编写初始化程序段看如何编写初始化程序段计数器计数器0 0:初始化程序:初始化程序mov al,36h;36H00 11 011 0B;计数器;计数器0为方式为方式3,采用二进制计数,采用二进制计数;先低后高写入计数值;先低后高写入计数值out 43h,al;写入方式控制字;写入方式控制字mov al,0 ;计数值为;计数值为0out 40h,al;写入低字节计数值;写入低字节计数值out 40h,al;写入高字节计数值;写入高字节计数值计数器计数器0:定时中断:定时中断计数器计数器0:方式方式3,计数值:计数值:65536,输出频率为,输出频率为1.19318MHz6553618.206Hz的方波的方波门控为常启状态,这个方波信号不断产生门控为常启状态,这个方波信号不断产生OUT0端接端接8259A的的IRQ0,用作中断请求信号,用作中断请求信号每秒产生每秒产生18.206次中断请求,或说每隔次中断请求,或说每隔55ms(54.925493ms)申请一次中断)申请一次中断DOS系统利用计数器系统利用计数器0的这个特点,通过的这个特点,通过08号中断号中断服务程序实现了日时钟计时功能服务程序实现了日时钟计时功能计数器计数器1:定时刷新:定时刷新需要重复不断提出刷新请求需要重复不断提出刷新请求门控总为高,选择方式门控总为高,选择方式2或或3n2ms内刷新内刷新128次,即次,即15.6 s刷新一次刷新一次计数初值为计数初值为18计数器计数器1:初始化程序:初始化程序mov al,54h;54H01 01 010 0 B;计数器计数器1为方式为方式2,采用二进制计数,采用二进制计数;只写低;只写低8位计数值位计数值out 43h,al;写入方式控制字;写入方式控制字mov al,18;计数初值为;计数初值为18out 41h,al;写入计数值;写入计数值 扬声器控制扬声器控制计数器计数器2的输出控制扬声器的发声音调的输出控制扬声器的发声音调计数器计数器2只能工作在方式只能工作在方式3,才能,才能输出一定输出一定频率的方波,经滤波后得到近似的正弦波,频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声进而推动扬声器发声扬声器还受控于并行接口(扬声器还受控于并行接口(8255芯片)芯片)必须使必须使PB0和和PB1同时为高电平,扬声器才同时为高电平,扬声器才能发出预先设定频率的声音能发出预先设定频率的声音发音发音频率设置子程序频率设置子程序;入口参数;入口参数AX1.19318106发音频率发音频率speakerprocpush axmov al,0b6h;b6h10110110bout 43h,al;写入控制字;写入控制字pop axout 42h,al;写入低;写入低8位计数值位计数值mov al,ahout 42h,al;写入高;写入高8位计数值位计数值retspeakerendp扬声器开子程序扬声器开子程序speakon procpush axin al,61h;PB端口的地址为端口的地址为61Hor al,03h;D1D0PB1PB011B,其他位不变,其他位不变out 61h,alpop axretspeakon endp扬声器关子程序扬声器关子程序speakoffprocpush axin al,61h;PB端口的地址为端口的地址为61Hand al,0fch;D1D0PB1PB000B,其他位不变,其他位不变out 61h,alpop axretspeakoffendp例题例题1 1 扬声器声音的控制扬声器声音的控制;数据段;数据段freq dw 1193180/600;代码段;代码段mov ax,freqcall speaker;设置扬声器音调;设置扬声器音调call speakon;打开扬声器声音;打开扬声器声音mov ah,1;等待按键;等待按键int 21h;按键后;按键后call speakoff;关闭扬声器声音;关闭扬声器声音可编程硬件延时可编程硬件延时利用日时钟每隔利用日时钟每隔55ms中断一次不变的特点,中断一次不变的特点,可以编写一段不随系统时钟频率变化的固可以编写一段不随系统时钟频率变化的固定延时程序定延时程序由于日时钟中断的时间单位是由于日时钟中断的时间单位是55ms,所以,所以无法实现更短时间的延时无法实现更短时间的延时这时只有利用实时时钟中断,不过它的最这时只有利用实时时钟中断,不过它的最短延时约是短延时约是1ms(976 s)扩充定时计数器的应用扩充定时计数器的应用A0A1 A0 A1外部事件产生源外部事件产生源8253OUT0GATE0CLK0200207HIRQD0D7D0D7译码译码电路电路AENA3A9+5VCSIORIOWRDWR例题例题2 外部事件的计数外部事件的计数mov dx,203h;设置方式控制字;设置方式控制字mov al,10hout dx,al mov dx,200h;设置计数初值;设置计数初值mov al,64h;计数初值为;计数初值为100out dx,al输出:输出:明确向哪个明确向哪个端口端口输出什么输出什么数据数据输入:输入:清楚从哪个清楚从哪个端口端口输入什么输入什么数据数据实验结果实验结果1计数开始计数开始实验结果实验结果2计数开始计数开始8253的的I/O地址地址0 1 0 0 1 0 0 00 00 1 0 0 1 0 0 10 10 1 0 0 1 0 1 01 00 1 0 0 1 0 1 11 10 0 1 0 0 1 0 00 00 0 1 0 0 1 0 10 10 0 1 0 0 1 1 01 0功功 能能对计数器对计数器0 0设置计数初值设置计数初值CSCSRDRDA A1 1A A0 0WRWR对计数器对计数器1 1设置计数初值设置计数初值对计数器对计数器2 2设置计数初值设置计数初值设置控制字设置控制字从计数器从计数器0 0读出计数值读出计数值从计数器从计数器1 1读出计数值读出计数值从计数器从计数器2 2读出计数值读出计数值8253的控制字编程的控制字编程;某个;某个8253的计数器的计数器0、1、2端口和控制端口端口和控制端口地址依次是地址依次是40H43H;设置其中计数器;设置其中计数器0为方式为方式0,采用二进制计,采用二进制计数,先低后高写入计数值数,先低后高写入计数值mov al,30h;方式控制字:;方式控制字:30H00 11 000 0Bout 43h,al;写入控制端口:;写入控制端口:43H8253的计数初值编程的计数初值编程;某个;某个8253的计数器的计数器0、1、2端口和控制端口端口和控制端口地址依次是地址依次是40H43H;设置计数器;设置计数器0采用二进制计数,写入计数初采用二进制计数,写入计数初值:值:1024(400H)mov ax,1024;计数初值:;计数初值:1024(400H);写入计数器;写入计数器0地址:地址:40Hout 40h,al;写入低字节计数初值;写入低字节计数初值mov al,ahout 40h,al;写入高字节计数初值;写入高字节计数初值 1 8253芯片共有几种工作方式?每种方式各有什么特点? 2某系统中8253芯片的通道02和控制端口地址分别为FFF0HFFF3H。定义通道0工作在方式2,CLK02MHz,要求输出OUT0为1kHz的速率波;定义通道l工作在方式0,其CLKl输入外部计数事件,每计满100个向CPU发出中断请求。试写出8253通道0和通道1的初始化程序。3试编写一程序,使IBM PC机系统板上的发声电路发出200Hz至900Hz频率连续变化的报警声。4设8253的通道2工作在计数方式,外部事件从CLK2引入,通道2每计500个脉冲向CPU发出中断请求,CPU响应这一中断后继续写入计数值,重新开始计数,保持每1秒钟向CPU发出中断请求。假设条件如下: 8253的通道2工作在方式4; 外部计数事件频率为1kHz; 中断类型号为54H; 8253各端口地址如上题; 用8212芯片产生中断类型号;(注:8212为带8位输入锁存器和8位输出缓冲器的总线接口电路)。试编写程序完成以上任务,并画出硬件连接图。 习题与思考:习题与思考:
展开阅读全文