《第09章定时器计数器.pptx》由会员分享,可在线阅读,更多相关《第09章定时器计数器.pptx(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第9章 定时器计数器定时器计数器汇编语言与微机接口2计数器计数器/定时器定时器8254第第9 9章章 定时器计数器定时器计数器39.1.1 定时的实现方法定时的实现方法9.1.2 定时定时9.1.3 计数计数49.1.1、 定时的实现方法定时的实现方法n软件定时软件定时 利用微处理器执行一个延时程序段实现利用微处理器执行一个延时程序段实现n硬件定时硬件定时不可编程的硬件定时不可编程的硬件定时采用分频器、单采用分频器、单稳电路或简易定时电路控制定时时间稳电路或简易定时电路控制定时时间可编程的硬件定时可编程的硬件定时软件硬件相结合、软件硬件相结合、用可编程定时器芯片构成一个方便灵活的用可编程定时器
2、芯片构成一个方便灵活的定时电路定时电路定时控制在微机系统中极为重要定时控制在微机系统中极为重要59.1.2定时与定时器n定时(定时(Timing):):n定时器定时器(Timer)由数字电路中的计数由数字电路中的计数电路构成,通过记录高精度晶振脉冲信电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔。号的个数,输出准确的时间间隔。n比如:系统时钟的时分秒。日历的年月比如:系统时钟的时分秒。日历的年月日。日。69.1.3计数与计数器n计数计数(Counting):):n计数器(计数器(CounterCounter): :计数电路如果记录计数电路如果记录外设提供的具有一定随机性的脉冲信
3、号外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器。外设的某种状态),常又称为计数器。n比如:生产线上的计数。饮料瓶的数量。比如:生产线上的计数。饮料瓶的数量。 定时和计数实质上都是计数。定时和计数实质上都是计数。7定时计数器定时计数器8253n3 3个独立的个独立的1616位计数器通道位计数器通道n每个计数器有每个计数器有6 6种工作方式种工作方式n按二进制或十进制(按二进制或十进制(BCDBCD码)计数码)计数8工作原理n减一计数减一计数n计数计数-减到减到0 0,输出一个信号结束,输出一个信号结束n定时
4、定时-减到减到0 0,自动恢复初值,减一计数。,自动恢复初值,减一计数。9l可编程的硬件定时可编程的硬件定时常用的可编程定时芯片:常用的可编程定时芯片: 8253:5MHz。 8254:10MHz。两者在芯片功能、外形和引脚上大同小异,两者在芯片功能、外形和引脚上大同小异,8254 8254 附附加功能:加功能:读当前计数单元读当前计数单元;读状态寄存器内容读状态寄存器内容。109.2.1 82549.2.1 8254的内部结构的内部结构9.2.2 82549.2.2 8254的外部引脚的外部引脚9.2.3 9.2.3 与系统总线的连接与系统总线的连接9.2.4 82549.2.4 8254的
5、控制字的控制字9.2.5 82549.2.5 8254的工作方式的工作方式11 8254概述n有有3 3个独立的个独立的1616位计数器通道位计数器通道n每个通道都可以按二进制或每个通道都可以按二进制或BCDBCD十进制计数十进制计数n每个计数器的计数速率可高达每个计数器的计数速率可高达10MHZ10MHZn每个通道有每个通道有6 6个工作方式个工作方式n所有输入输出都与所有输入输出都与TTLTTL兼容兼容12 9.2.1 8254的内部结构D7D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1
6、CLK2GATE2OUT2 1、8254的内部结构D7D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT214n三个计数器结构相同、相互独立三个计数器结构相同、相互独立n每个计数器通过每个计数器通过3 3个引脚和外部联系个引脚和外部联系计数初值寄存器计数初值寄存器GATECLKOUT减减1计数器计数器计数输出锁存器计数输出锁存器计数器内部逻辑结构示意图计数器内部逻辑结构示意图A A、计数器通道、计数器通道15计数器的计数器的3 3个引脚个引脚nCLK时钟输入信号时钟输入信
7、号在计数过程中,此引脚上在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数每输入一个时钟信号(下降沿),计数器的计数值减值减1nGATE门控输入信号门控输入信号控制计数器工作。可分控制计数器工作。可分成电平控制和上升沿控制两种类型成电平控制和上升沿控制两种类型nOUT计数器输出信号计数器输出信号当一次计数过程结束当一次计数过程结束(计数值减为(计数值减为0),),OUT引脚上将产生一个输出引脚上将产生一个输出信号,信号的波形取决于计数器的工作方式。信号,信号的波形取决于计数器的工作方式。工作方式工作方式:指时钟信号:指时钟信号CLKCLK和和GATEGATE怎样配合来控怎样配合来
8、控制计数器工作并产生制计数器工作并产生OUTOUT信号的。信号的。16计数器的内部结构n计数初值寄存器计数初值寄存器CRCR(Counter RegisterCounter Register) 存放计数初值,由程序设定。存放计数初值,由程序设定。n减法计数器减法计数器CE CE (Counter ElementCounter Element) 进行减进行减1 1计数的部件,它的起始值从计数的部件,它的起始值从CRCR获得,获得,当当GATEGATE有效时,按照有效时,按照CLKCLK的频率减的频率减1 1计数。计计数。计数可以为数可以为BCDBCD码格式码格式或或二进制格式二进制格式。n输出锁
9、存器输出锁存器OL OL (Output LatchOutput Latch) 当有当有“锁存命令锁存命令”到来时,锁存当前到来时,锁存当前CECE的计数的计数值,供值,供CPUCPU读取,之后,锁存器自动失锁。读取,之后,锁存器自动失锁。17计数器的内部结构计数器的内部结构CRCEOLCLKnGATEn OUTn18 用来保存来自用来保存来自CPU送入的控制字。送入的控制字。 控制字将决定计数器的工作方式、计数形式及输控制字将决定计数器的工作方式、计数形式及输出方式,也能决定应如何装入计数器初值。出方式,也能决定应如何装入计数器初值。 控制字中最高二位来指定当前的控制字是发给哪控制字中最高二
10、位来指定当前的控制字是发给哪一个计数器的。一个计数器的。 控制寄存器只能写入,不能读取。控制寄存器只能写入,不能读取。D7D6D5D4D3D2D1D0 B B控制寄存器控制寄存器(8(8位位) )19 这是一个双向、三态这是一个双向、三态8位缓冲器。它用于位缓冲器。它用于8254和系统数据总线连接。和系统数据总线连接。 8254的的8位数据线位数据线D0D7通常与系统数据总线通常与系统数据总线D0D7相连。相连。 CPU通过数据总线缓冲器将控制字和计数值写通过数据总线缓冲器将控制字和计数值写入入8254计数器,或者从计数器,或者从8254计数器读取当前计计数器读取当前计数值。数值。 C C数据
11、总线缓冲器数据总线缓冲器20注意:1.当计数值为16位时,要分两次读/写。先读写低8位,后读写高8位。2.当计数值为8位时,是读/写相应寄存器的高8位还是低8位,由控制字决定。C C数据总线缓冲器数据总线缓冲器21接收来自接收来自CPU的控制信号,完成对的控制信号,完成对8254各各计数寄存器的读计数寄存器的读/写操作。写操作。 这些控制信号包括:这些控制信号包括:读信号读信号写信号写信号片选信号片选信号地址信号地址信号A0、A1。 R RD DWRWRCSCSCS A1 A0功能功能0 0 00 0 10 1 00 1 11 0 0选中选中计数器计数器0 0选中选中计数器计数器1 1选中选中
12、计数器计数器2 2选中选中控制寄存器控制寄存器器件未选中器件未选中 D D读读/ /写逻辑电路写逻辑电路229.2.2 8254的外部引脚239.2.2 8254的外部引脚 数据线 控制线 电源线 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 CS VCC GND 8 7 6 5 4 3 2 1 22 23 19 20 21 24 12 Intel 8253 9 11 10 15 14 13 18 16 17 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 计数器 0 计数器 1 计数器 2 24 A、8254与与CPU
13、的接口的接口n 8 位数据线:位数据线:D7 D0n 片内地址线:片内地址线:A1、A0n 片选:片选:n 读写控制线:读写控制线:RDRDWRWRCSCS25000RDWRCSA1A0D0 D7GATE0GATE1GATE2CLK0CLK1CLK2OUT0OUT1OUT2IORIOW74LS138A1A0D0 D7+ 5V8255 PB01.19318MHz8253 8259A的IR0,系统计时每隔55ms产生一次中断。8237的DRQ0,作DMA请求&低通8255 PB1PC机系统板上的机系统板上的825326 B、8253与外设的接口与外设的接口n 时钟输入:时钟输入: CLKn 门控输
14、入:门控输入: GATEn 波形输出:波形输出: OUT 注注: 三个独立的计数器三个独立的计数器/定时器定时器通道的引脚:通道的引脚: C、PC机中机中8253寄存器选择表寄存器选择表CSRDWRA1A0操 作地址01000计数初值计数初值 CNT040H01001计数初值计数初值 CNT141H01010计数初值计数初值 CNT242H01011控制字控制字 CWR43H00100DBCNT0的计数值的计数值40H00101DBCNT1的计数值的计数值41H00110DBCNT2的计数值的计数值42H00111无操作无操作1 禁止禁止 (三态三态)011 无操作无操作 (三态三态)289.
15、2.3 与系统总线的连接299.2.4 8254的控制字 8254的控制字的控制字 2、 8254的读回命令字的读回命令字 3、 状态字节状态字节 4、 写入命令写入命令 5、 读出命令读出命令30 1 1、 82538253的控制字(的控制字(Control WordControl Word)写入控制字端口写入控制字端口SC1SC0RW1RW0M2M1M0BCDD7 D6 D5 D4 D3 D2 D1 D031RW1RW0=读写格式读写格式01:只读写低字节只读写低字节初值初值小小,在,在125510:只读写高字节只读写高字节初值大,初值大,“粗调粗调”11:先先L8,后,后H8 初值大,初
16、值大,“细调细调”32 既能锁存既能锁存计数值,又能锁存,又能锁存状态字以供以供CPU读回。读回。11: 表示表示读回控读回控制字制字0表示锁存表示锁存计数值计数值0表示表示锁存锁存状态状态选择要锁存的计数器选择要锁存的计数器D1=1,选计数器,选计数器0;D2=1,选计数器,选计数器1;D3=1,选计数器,选计数器2。恒恒011COUNTSTATUSCNT2CNT1CNT00D7D6D5D4D3D2D1D0 2 2、 82548254的读回控制字的读回控制字(Read-Back commandRead-Back command)82548254新增加的,也写入新增加的,也写入CWCW端口端口
17、333 3、 82548254的状态字节的状态字节(Status Byte)(Status Byte)D7D6D5D4D3D2D1D0outNULLCOUNTRW1RW0M2M1M0 BCD方式字的对应内容方式字的对应内容D6 =1,向通道写入控制字以及计数初值之后。,向通道写入控制字以及计数初值之后。D6 =0,计数初值已经写入计数单元。,计数初值已经写入计数单元。OUT引脚的电平:引脚的电平: D7 =0,输出低电平,输出低电平 D7 =1,输出高电平,输出高电平8254每个计每个计数器都有一个数器都有一个状态字状态字34无效的计数值的解释无效的计数值的解释CRCEOLCLKnGATEn
18、OUTnl D6=1l 初值在此l D6=0l 初值已经到这35状态字的端口地址n状态字从哪里读?状态字从哪里读?n怎么读?怎么读?n读出的内容又是那个计数器的?读出的内容又是那个计数器的?n答案是:答案是:n从从CWRCWR端口读。端口读。n先写先写Read-BackRead-Back命令,再读出。命令,再读出。n读出的内容取决于读出的内容取决于Read-BackRead-Back命令?命令?36 4、 写入命令写入命令n82548254加电后的工作方式不确定加电后的工作方式不确定n82548254必须初始化编程,才能正常工作必须初始化编程,才能正常工作n初始化编程步骤:初始化编程步骤: 先
19、写入控制字,再写入计数初值先写入控制字,再写入计数初值初始化流程初始化流程写入方式控制字写入方式控制字写入初值低字节写入初值低字节写入初值高字节写入初值高字节38例:例:8253的初始化编程的初始化编程 某个某个82538253的地址是的地址是40H40H43H43H,其,其中计数器中计数器1 1,工作在方式,工作在方式1 1,按,按BCDBCD码计码计数,计数初值为数,计数初值为5080H5080H,对该,对该82538253进行进行初始化编程。初始化编程。分析:控制字为分析:控制字为 01 01 1111 001 001 1 1 73H73H初始化程序为初始化程序为 :3916位初值的写入
20、位初值的写入MOV AL, 73H;控制字;控制字73H写入控制端口写入控制端口OUT 43H,ALMOV AL,80H ;写入计数初值到计数器;写入计数初值到计数器1 OUT 41H,ALMOV AL,50HOUT 41H ,AL 40 5、 读出命令n在计数器计数期间,在计数器计数期间,CPU还可从还可从OL中读取当前中读取当前计数值。计数值。MOV AL, 01000000B ;先输出锁存命令;先输出锁存命令OUT 43H, ALIN AL , 41H MOV CL ,AL IN AL, 41HMOV CH, AL要要“先写后读先写后读”来实现来实现41或者n先写先写Read-Back字
21、,在读取当前计数值。字,在读取当前计数值。MOV AL, 11010100B ;先输出锁存命令;先输出锁存命令OUT 43H, ALIN AL , 43H MOV CL ,AL IN AL, 43HMOV CH, AL要要“先写后读先写后读”来实现来实现42 9.2.5 8254的工作方式1、 Mode0 2、 Mode1 3、 Mode2 4、 Mode3 5、 Mode4 6、 Mode543 8.3.4 8254的工作模式的工作模式n82548254有有6 6种工作方式,由控制字确定种工作方式,由控制字确定n熟悉每种工作方式的特点才能根据实际应用问题,熟悉每种工作方式的特点才能根据实际应
22、用问题,选择正确的工作方式选择正确的工作方式n每种工作方式的过程类似:每种工作方式的过程类似: 设定工作方式设定工作方式 设定计数初值设定计数初值( 硬件启动硬件启动 ) 计数初值进入减计数初值进入减1计数器计数器 每输入一个时钟计数器减每输入一个时钟计数器减1的计数过程的计数过程 计数过程结束计数过程结束44GATEOUTCLK 031244方式方式0WR计数结束计数结束计数过程计数过程初值送计数器初值送计数器设定工作方式设定工作方式设定计数初值设定计数初值写入计数初值写入计数初值N后,后,OUT在在N1个时钟周期个时钟周期后,才输出高。后,才输出高。 GATE1一、方式一、方式0 计数结束
23、中断45n控制字控制字CW=00010000B=10H MOVAL, 10H OUT 43H,AL MOVAL, 04H OUT 40H, AL46在计数过程中,在计数过程中,GATEGATE变为低,则计数暂停,变为低,则计数暂停,OUTOUT仍保仍保持低电平,直到持低电平,直到GATEGATE为高。为高。GATEOUTCLK 232244方式方式0WR10计数器是受计数器是受GATE电平触发(控制)的。电平触发(控制)的。47在计数过程中,若又有一新的计数初值被写入,则会在下在计数过程中,若又有一新的计数初值被写入,则会在下一时钟脉冲按新值重新计数一时钟脉冲按新值重新计数(改变计数值是立即有
24、效的改变计数值是立即有效的)。GATEOUTCLK 334544方式方式0WR521048n门控信号门控信号GATE正脉冲启动正脉冲启动定时定时/计数计数n允许当前计数未完时的允许当前计数未完时的多次重触发多次重触发,GATE再触发后,再触发后,OUT输出会保持输出会保持N个个CLK脉宽的脉宽的低电平低电平n下个下个GATE正脉冲触发信号到来时,会将新正脉冲触发信号到来时,会将新初值装入初值装入CE中,使计数单元从新初值开始计中,使计数单元从新初值开始计数数二、二、方式1可重触发的单拍脉冲49(1 1)计数到)计数到0 0后,如果有外部触发,就可以按后,如果有外部触发,就可以按原来的计数初值工
25、作原来的计数初值工作 (2 2)计数过程中)计数过程中GATEGATE信号可以用作重新触发,信号可以用作重新触发,计数器重新计数计数器重新计数 (3 3)改变计数初值并不是立即有效,)改变计数初值并不是立即有效,只有等到只有等到下一个下一个GATE上升沿上升沿,才将新初值装入计数单,才将新初值装入计数单元并按新初值启动计数。元并按新初值启动计数。 方式方式1特点:特点:50 方式1波形图51n控制字控制字CW=00010010B=12H MOVAL,12H OUT 43H,AL MOVAL,03H OUT 40H,AL52设定工作方式设定工作方式写入计数初值写入计数初值GATE1电平触发电平触
26、发初值送计数器初值送计数器计数过程计数过程 3124GATEOUTCLK 4方式方式23124312403124WROUT输出:相当于产生了周期为输出:相当于产生了周期为NT的负脉的负脉冲(冲(N1个个T为高,为高,1个个T为低)为低)计数到计数到1时,时,OUT输出输出一个时钟周期的低电平,一个时钟周期的低电平,之后计数器从新开始减之后计数器从新开始减1计计数,数,OUT变为高电平。变为高电平。三、方式三、方式2 速率发生器(分频器)53n控制字控制字CW=00010100B=14H MOVAL,14H OUT 43H,AL MOVAL,04H OUT 40H,AL54方式方式2时时OUT负
27、脉冲频率的计算负脉冲频率的计算n最大时间间隔的定时信号的周期:最大时间间隔的定时信号的周期: 计数初值计数初值N最大为:最大为:0000H 如如CLK的频率的频率f=2MHZ 则则OUT的周期:的周期: NT=655361/(2106) 3.2768102S 5503124GATEOUTCLK 4方式方式3031240312403124WR03124OUT03124503124555四、方式四、方式3 方波发生器56n控制字控制字CW=00010110B=16H MOVAL,16H OUT 43H,AL MOVAL,04H OUT 40H,AL57在硬件启动方式下,门控信号变低再变高将会在硬件
28、启动方式下,门控信号变低再变高将会使计数使计数重新开始重新开始。 计数启动方式:计数启动方式: 软件启动软件启动即即CPU用输出指令向计数器赋予初值来启动计数。用输出指令向计数器赋予初值来启动计数。在软件启动方式下,门控信号变低电平只会对计在软件启动方式下,门控信号变低电平只会对计数起数起暂停暂停作用。作用。 硬件启动硬件启动即即CPU写入计数初值后并未启动计数,只有门控写入计数初值后并未启动计数,只有门控信号变为高电平,才开始计数。信号变为高电平,才开始计数。58注意:注意:计数开始的时刻计数开始的时刻n处理器写入处理器写入8254的计数初值只是写入了的计数初值只是写入了初值寄存器,之后到来
29、的第一个初值寄存器,之后到来的第一个CLK输入输入脉冲(需脉冲(需先由低电平变高,再由高变低先由低电平变高,再由高变低)才将初值寄存器的初值送到减才将初值寄存器的初值送到减1计数器。计数器。n从第二个从第二个CLK信号的下降沿,计数器才真信号的下降沿,计数器才真正开始减正开始减1计数。计数。59n计数减到计数减到0时输出时输出一个脉宽一个脉宽的低电平的低电平nGATE由低到高时,计数器恢复工作,由低到高时,计数器恢复工作,而不重置初值而不重置初值n计数过程中,必须重装初值。计数过程中,必须重装初值。新初值立新初值立即即起作用起作用 五、方式五、方式4 软件触发的选通信号发生器60 5、方式、方
30、式4波形波形61n控制字控制字CW=00011000B=18H MOVAL,18H OUT 43H,AL MOVAL,04H OUT 40H,AL62n如方式如方式1,方式,方式5也是硬件触发也是硬件触发n计数器到计数器到0,输出一个脉宽的负脉冲,输出一个脉宽的负脉冲n允许当前计数未完时的多次重触发允许当前计数未完时的多次重触发nGATE触发,按新初值计数触发,按新初值计数六、方式六、方式5 硬件触发的选通发生器63 6、方式5波形图WRCLKCW=1ALSB=3GATEOUT3210 FF 364n控制字控制字CW=00011010B=1AH MOVAL,1AH OUT 43H,AL MOV
31、AL,03H OUT 40H,AL659.3.1 82549.3.1 8254的初始化编程的初始化编程9.3.2 82549.3.2 8254的简单应用的简单应用9.3.3 82549.3.3 8254的综合应用的综合应用66 0计数器地址计数器地址304H,方式方式0,二进制计数二进制计数,计数初值计数初值23ABH; 1计数器地址计数器地址305H,方式方式1,二进制计数二进制计数,计数初值计数初值ABH; 2计数器地址计数器地址306H,方式方式3,产生产生40kHz,已知已知CLK2时钟频率时钟频率2MHz 9.3.1 82549.3.1 8254的初始化编程的初始化编程例子1:CNT
32、0CW0= 0011 0000B = 30HN0= 23ABH=9131CNT1CW1= 0101 0010B = 62HN1= 0ABH=171CNT2CW2= ?N1=?68方法方法1:逐个对计数器初始化逐个对计数器初始化写入方式控制字写入方式控制字写入初值低字节写入初值低字节写入初值高字节写入初值高字节69MOVDX,0307H;0计数器计数器MOVAL,0011 0000BOUTDX,ALMOVDX,0304HMOVAL,0ABHOUTDX,ALMOVAL,23HOUTDX,ALMOVDX,0307H;1计数器计数器MOVAL,0101 0010BOUTDX,ALMOVAL,0ABHM
33、OVDX,0305HOUTDX,ALMOVDX,0307H;2计数器计数器MOVAL,1011 0110BOUTDX,ALMOV AL,32H ;送初值低送初值低8位位MOV DX,0306H OUT DX,ALMOV AL,00H ;送初值高;送初值高8位位OUT DX,AL分频系数:分频系数:2MHz / 40kHz = 5032H方法方法1:70方法方法2:先写各个计数器方式字,再写入各计数器的计数值。先写各个计数器方式字,再写入各计数器的计数值。写方式控制字写方式控制字#0写初值低字节写初值低字节#1写初值高字节写初值高字节#1写方式控制字写方式控制字#1写方式控制字写方式控制字#2写
34、初值低字节写初值低字节#0写初值低字节写初值低字节#0写初值低字节写初值低字节#2写初值低字节写初值低字节#271MOVDX,0307H;0计数器计数器MOVAL,0011 0000BOUTDX,ALMOVDX,0307H;1计数器计数器MOVAL,0101 0010BOUTDX,ALMOVDX,0307H;2计数器计数器MOVAL,1011 0110BOUTDX,ALMOVDX,0304HMOVAL,0ABHOUTDX,ALMOVAL,23HOUTDX,ALMOV AL, 0ABHMOV DX, 0305HOUT DX,ALMOV AL,32H ;送初值低送初值低8位位MOV DX,0306
35、H OUT DX,ALMOV AL,00H ;送初值高;送初值高8位位OUT DX,AL分频系数:分频系数:2MHz / 40kHz = 5032H方法方法2:72例子例子2: 以以2MHz输入输入8253,实现每,实现每5秒定时中断(设秒定时中断(设8253端口地址端口地址40H43H)分析:分析:8253最大初值最大初值65536,CLK=2MHz可实现最大可实现最大 时间间隔时间间隔 65536/(2 106)=32.768ms 所以需要两个计数器串联,一个计数器的输出所以需要两个计数器串联,一个计数器的输出 作为另一个计数器的输入作为另一个计数器的输入 9.3.2 82549.3.2
36、8254的简单应用的简单应用73计数器计数器1:模式:模式2,OUT1每每5ms输出一个脉冲输出一个脉冲初值初值(2 106)/(1/0.005)=10000计数器计数器0:模式:模式2,OUT0每每5s输出一个脉冲输出一个脉冲初值初值(1/0.005)/(1/5)=1000OUT0GATE0CLK0OUT1GATE1CLK1+5V+5V2MHz每每5秒产生秒产生一个脉冲一个脉冲程序:程序:MOV AL, 74HOUT 43H, ALMOV AX, 10000OUT 41H, ALMOV AL, AHOUT 41H, ALMOV AL, 34HOUT 43H, ALMOV AX, 1000OU
37、T 40H, ALMOV AL, AHOUT 40H, AL9.3.2 82549.3.2 8254的简单应用(续的简单应用(续2 2)74从从Mode2方式看方式看计数初值计数初值的计算的计算OUT NCLKfclkfout分频器分频器计数初值计数初值N=outclkff知识点总结知识点总结n两通道串联使用两通道串联使用n时间常数计算(公式,不定式)时间常数计算(公式,不定式)n写时间常数小技巧写时间常数小技巧n硬件接线硬件接线7576例子例子3:系统机外扩展实验台,连接关系如下图所示,系统机外扩展实验台,连接关系如下图所示,8253端口地址端口地址0200H0203H。已知。已知CLK0输
38、入的信号输入的信号频率为频率为250kHz。现要求:。现要求: CNT0 工作于方式工作于方式3,其,其OUT0输出连接到输出连接到CNT1的的 CLK1,作为,作为CNT1的脉冲输入源;若使的脉冲输入源;若使CNT1输出输出一个周期性的秒钟脉冲信号,进行编程实现。一个周期性的秒钟脉冲信号,进行编程实现。 计算出计数初值;写出计算出计数初值;写出CNT0和和CNT1的初始化程序段。的初始化程序段。C L K 0O U T 0C L K 1O U T 1G A T E 0G A T E 18 2 5 3f= 2 5 0 k Hz1 s+ 5 V9.3.2 82549.3.2 8254的简单应用(
39、续的简单应用(续3 3)77分析计算初值:分析计算初值: 设定设定CNT0工作方式工作方式3,输出方波信号,周期为,输出方波信号,周期为 10ms,则其计数初值为:,则其计数初值为: N0=T/tc=10ms*250K=2500=09c4H. CNT1工作方式工作方式2,速率发生器,周期为,速率发生器,周期为1s,则,则 其计数初值为:其计数初值为:N1=T/tc=1/10ms=100=64H. 方式控制字:方式控制字: CNT0方式方式3控制字为:控制字为:36H CNT1方式方式2控制字为:控制字为:74H9.3.2 82549.3.2 8254的简单应用(续的简单应用(续4 4)CNT0
40、CW0= 0011 0110B = 36HN0= 2500=09c4HCNT1CW1= 0111 0100B = 74HN1= 100=64H79MOV DX, 0203HMOV AL,36HOUT DX, ALMOV DX,0200HMOV AL, 0C4HOUT DX ,ALMOV AL, 09HOUT DX,AL9.3.2 82549.3.2 8254的简单应用(续的简单应用(续5 5)MOV DX,0203HMOV AL,74HOUT DX,ALMOV DX,0201HMOV AL,064HOUT DX,ALMOV AL,00HOUT DX,ALMOV DX, 0203HMOV AL,
41、36HOUT DX, ALMOV DX,0200HMOV AX, 2500OUT DX ,ALMOV AL, AHOUT DX,AL小技巧小技巧n【例例9.99.9】某实验平台主某实验平台主82598259的地址为的地址为20H20H和和21H21H,中断类型码是,中断类型码是08H0FH08H0FH。其。其MIR6MIR6、MIR7MIR7开放供使用。若开放供使用。若IOY0IOY0代表的端口地址为代表的端口地址为0600H0600H、0602H0602H、0604H0604H和和0606H0606H。如图。如图9-219-21所示。以所示。以1MHz1MHz作为输入频率,采用定时中断方作为
42、输入频率,采用定时中断方式。定时式。定时1S1S钟。定时时间到,在屏幕上显示一轮钟。定时时间到,在屏幕上显示一轮信息。信息。n【分析分析】81 9.3.3 82549.3.3 8254的综合应用的综合应用8283P8255A EQU 06C0H P8255B EQU 06C2H P8255C EQU 06C4H P8255M EQU 06C6HTIMER0 EQU 0600HTIMER1 EQU 0602HTIMER2EQU 0604HTIMERM EQU 0606HDATA SEGMENT DATA ENDSSSTACKSEGMENTPARA STACK STACKDW32DUP(?)SST
43、ACKENDS84CODE SEGMENT ASSUME CS:CODE, DS:DATA,SS: SSTACK START:MOVAX,DATAMOVDS,AXINITA:NOP; 8255初始化初始化INITB:PUSHDS;8259MIR7CLIMOVAX,0000HMOVDS,AXMOVAX,OFFSET MIR7MOVSI,003CHMOVSI,AXMOVAX,CSMOVSI,003EHMOVSI,AXPOPDS85INITC:MOVAL,11H;主主8259AOUT20H,AL;ICW1MOVAL,08HOUT21H,AL;ICW2MOVAL,04HOUT21H,AL;ICW3MO
44、VAL,01HOUT21H,AL;ICW4M O VA L , 2 F H;OCW1,MIR4用于串口,连接试验箱和电脑用于串口,连接试验箱和电脑OUT21H,ALSTIAA1:NOPJMPAA186INITD:MOVDX, TIMERM; 定时器芯片定时器芯片MOVAL,36HOUTDX,ALMOVDX, TIMER0;计数器计数器0MOVAX,1000OUTDX,ALMOVAL,AHOUTDX,ALMOVDX, TIMERMMOVAL,76HOUTDX,ALMOVDX, TIMER1;计数器计数器1MOVAX,1000OUTDX,ALMOVAL,AHOUTDX,ALBEGIN:NOPAA2
45、:JMPAA287MIR7PROC NEARPUSHAXP U S HD XMOVAX,0137HINT10HMOVAX,0120HINT10HMOVAL,20HOUT20H,ALPOPDXPOPAXIRETMIR7ENDPMIR6PROC NEARPUSHAXPUSHDX MOVAL,20HOUT20H,ALPOPDXPOPAXIRETMIR6ENDPCODE ENDSENDSTARTMode2和和Mode3应用总结应用总结n如果用如果用82548254驱动蜂鸣器,要工作于方波方驱动蜂鸣器,要工作于方波方式,即式,即Mode3.Mode3.n若工作为定时中断,则工作在若工作为定时中断,则工作
46、在Mode2Mode2比较比较合适。但是,用方式合适。但是,用方式2 2方式方式3 3都没问题。都没问题。8889本节复习题本节复习题1、8254的编程结构是怎样的?的编程结构是怎样的?2、8254中计数器的中计数器的3个引脚个引脚CLK、OUT、GATE信号的作用是什么?信号的作用是什么?3、 8254计数过程中的计数值是如何读出的?计数过程中的计数值是如何读出的?4、方式、方式2中中OUT输出频率如何计算?输出频率如何计算?5、 8254有几种工作方式,每种工作方式的有几种工作方式,每种工作方式的特点是什么?特点是什么?6、8254的初始化步骤是怎样的?的初始化步骤是怎样的?本章作业本章作
47、业n1.试述试述CPU与外设交换数据的方式及其特点与外设交换数据的方式及其特点n2.设设8254三个计数器的三个计数器的CR/OL端口地址为端口地址为70H、71H、72H,控制寄存器端口地址,控制寄存器端口地址73H。编写初始化。编写初始化程序片段,使:程序片段,使:n计数器计数器0,工作模式,工作模式1,使用,使用16位,初值为位,初值为1234,BCD计数计数n计数器计数器1,工作模式,工作模式4,使用低,使用低8位,初值为位,初值为100,二,二进制计数进制计数n计数器计数器2,工作模式,工作模式2,使用,使用16位,初值为位,初值为65536,二进制计数二进制计数90n3.设设825
48、4的端口地址同的端口地址同2,编写程序片段,读出计数,编写程序片段,读出计数器器2的内容,并把读出的数据装入寄存器的内容,并把读出的数据装入寄存器AX.n4.设计数器的时钟输入频率为设计数器的时钟输入频率为1.91MHz,为产生,为产生25KHZ的的 方波输出信号,应向计数器装入的计数初方波输出信号,应向计数器装入的计数初值为多少?值为多少?n5.若若8254的的4个通道地址分别为个通道地址分别为90H、92H、94H、96H,且已知通道,且已知通道0的时钟频率为的时钟频率为2.5MHz。n (1)请问通道)请问通道0的最大定时时间是多长?的最大定时时间是多长?n (2)请使用)请使用74LS138译码器完成译码器完成8254端口地址端口地址的译码(可附加与或非门)。的译码(可附加与或非门)。 91本章作业本章作业n(3)若要使用通道)若要使用通道0周期性地产生周期性地产生5ms的定时中断的定时中断(方式(方式2),试编写初始化程序段。),试编写初始化程序段。n(4)若要产生)若要产生1s的定时中断,说明实现方法。的定时中断,说明实现方法。 92本章作业本章作业