1、6.4 可编程定时可编程定时/计数器计数器8254及其应用及其应用 l为什么需要定时为什么需要定时/计数器计数器 在自动化流水线中在自动化流水线中 在测控系统中在测控系统中 在智能化仪器仪表中在智能化仪器仪表中两项基本工作两项基本工作计数计数定时定时l关于定时关于定时定时定时软件定时软件定时硬件定时硬件定时不可编程芯片定时(如不可编程芯片定时(如555定时器)定时器)可编程芯片(如可编程芯片(如8254定时器)定时器)l定时器工作原理定时器工作原理漏水模型漏水模型如如8254装水模型装水模型如如80C51 6.4.1 8254定时器定时器/计数器计数器(1)8254的外部引脚和内部结构的外部引
2、脚和内部结构*A1 A0 选择选择片内片内各端口(各端口(3个通道个通道和和一个控制寄存器一个控制寄存器)0 0 0 1 1 0 1 1通道通道0 通道通道1 通道通道2 控制寄存器控制寄存器8254与与CPU连接示例连接示例 RD WRCSA1A0D0:D7 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 地址地址译码器译码器A9:A2A1A0IORIOW 控制控制 寄存器寄存器8254 DB 片选片选片内端口选择片内端口选择A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0
3、0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 20CH 选中通道选中通道0 20DH 选中通道选中通道120EH 选中通道选中通道2 20FH 选中控制寄存器选中控制寄存器 设当设当A9A2的地址信息为:的地址信息为:1 0 0 0 0 0 1 1译码器输出有效信号译码器输出有效信号基本基本计数计数工作原理工作原理:减法计数器减法计数器计数工作单元计数工作单元CE 代表外部事件代表外部事件发生的发生的计数脉冲计数脉冲 减法计数器减法计数器计数工作单元计数工作单元 CE频率精确的频率精确的时钟脉冲串时钟脉冲串根据根据不同的工作方式,不同的工作
4、方式,OUT输出不同的信号输出不同的信号CLK 基本基本定时定时工作原理工作原理:CLK 计数初值计数初值N(定时系数)(定时系数)OUT OUT 定时系数定时系数要求定时的时间要求定时的时间/时钟脉冲周期时钟脉冲周期 定时定时的本质的本质还是计数还是计数,计数的对象必须是频率精确的脉冲串。如果,计数的对象必须是频率精确的脉冲串。如果时钟脉冲时钟脉冲的周期是的周期是1s,要求定时,要求定时1ms,则计数,则计数1000次即可,即:次即可,即:定时系数定时系数为为1000;(对秒计数(对秒计数60次就是次就是1分钟)分钟)计数初值计数初值N 注意!注意!工作原理工作原理 在计数工作方式下在计数工
5、作方式下:计数初值写入:计数初值写入CR;CE为为0时表明时表明计数达到规定值计数达到规定值。在定时工作方式下在定时工作方式下:定时系数写入:定时系数写入CR;CE为为0时表明时表明定时时间到定时时间到。16计数初值寄存器计数初值寄存器 CR16位计数工作单元位计数工作单元 CEOUT16输出锁存器输出锁存器 OL用户编程写入用户编程写入外部控制外部控制外部事件脉冲外部事件脉冲时钟脉冲时钟脉冲计数结束时计数结束时OUT输出信号输出信号开始计数时开始计数时CR装入装入CE随随CLK一次减一次减1内部总线内部总线 GATE CLK CLK:计数计数或或定时脉冲定时脉冲输入引脚输入引脚GATE:门控
6、门控引脚:允许引脚:允许/禁止计数;启动禁止计数;启动/终止计数终止计数OUT:输出引脚:输出引脚:计数通道计数通道的内部结构的内部结构CRH CRLOLH OLL不同的工作方式下有不同的输出不同的工作方式下有不同的输出(2)8254的工作方式的工作方式 8254的的基本计数工作方式基本计数工作方式和和基本定时工作方式基本定时工作方式是基础是基础,在这两种基本方式,在这两种基本方式下,可以演绎出下,可以演绎出6种种工作方式。工作方式。注意注意每一种方式下:每一种方式下:*定时或计数的定时或计数的启动启动方式方式*GATE的的控制控制作用作用*OUT引脚上的引脚上的输出波形输出波形每一种方式分为
7、每一种方式分为基本功能基本功能和和工作特点工作特点两部分,细节很多。我们通过波形图,两部分,细节很多。我们通过波形图,介绍概要。介绍概要。因为因为各种方式各种方式主要是通过主要是通过OUT引脚表现出来,请引脚表现出来,请关注关注OUT。1)方式方式0 计数结束中断计数结束中断 典型的事件计数(基本计数工作方式)典型的事件计数(基本计数工作方式)基本功能基本功能:完成计数,:完成计数,OUT输出高电平输出高电平工作特点:工作特点:*写入控制字后,写入控制字后,OUT的的初始电平为低初始电平为低 *计数到计数到0时,时,OUT送出高电平送出高电平直到直到写入了新的计数初值。写入了新的计数初值。*通
8、常用通常用OUT的的低低高变化高变化来产生来产生中断请求中断请求或或查询信号查询信号。*软件启动,软件启动,不具备重复性不具备重复性,再次写入初值,开始新一轮计数,再次写入初值,开始新一轮计数 *写入计数初值到写入计数初值到CR后,后,第一个计数脉冲第一个计数脉冲的作用是的作用是把计数初值装入把计数初值装入CE。所以所以当计数初值当计数初值=4时,实际上当时,实际上当CLK输入输入5个计数脉冲后个计数脉冲后 OUT才为才为1。*GATE=0,暂停计数暂停计数;GATE=1,继续计数,继续计数*计数过程中可以写入计数过程中可以写入新新的计数初值,从写入后的的计数初值,从写入后的下一个脉冲开始下一
9、个脉冲开始,以,以新新 的初值进行计数的初值进行计数 下图中用波形表达了下图中用波形表达了3种情况:种情况:*1 GATE=1,完整的一轮计数,完整的一轮计数 *2 计数过程中,计数过程中,GATE=0,暂停计数,暂停计数 *3 计数过程中,重新写入计数初值的计数情况计数过程中,重新写入计数初值的计数情况 2)方式)方式1 硬件可触发单稳硬件可触发单稳基本功能:基本功能:计数器相当于一个可编程的计数器相当于一个可编程的单稳态触发器单稳态触发器。可用此方式来产生。可用此方式来产生由由程序控制脉冲宽度程序控制脉冲宽度的的负单脉冲负单脉冲,该脉冲的,该脉冲的宽度宽度(低电平持续时间)由(低电平持续时
10、间)由计数初计数初值值N确定。确定。工作特点:工作特点:*输入控制字后,输入控制字后,OUT 以高电平为以高电平为初始电平初始电平 *以以GATE的的上升边上升边为起点,一个为起点,一个CLK 脉冲后,脉冲后,OUT为低,计数完成后为低,计数完成后 OUT又回到高电平,产生一个又回到高电平,产生一个负的单脉冲负的单脉冲。相当于相当于单稳电路从单稳电路从稳态稳态(高)到(高)到暂稳态暂稳态(低)又回到(低)又回到稳态稳态 *该单脉冲的宽度(低电平继续时间)是该单脉冲的宽度(低电平继续时间)是CLK周期的周期的N倍倍 *可重复触发。可重复触发。GATE的上升边的上升边启动启动新一轮工作。新一轮工作
11、。图中用波形表达了图中用波形表达了3种情况:种情况:*1 正常正常的一次单稳动作的一次单稳动作全过程全过程。*2 N=3,表明暂稳态为,表明暂稳态为3个个CLK时间;在暂稳态过程中,时间;在暂稳态过程中,再次触发再次触发,再进行,再进行 一次一次3个个CLK周期的暂稳态。周期的暂稳态。*3 改变计数初值改变计数初值N=4,由于没有,由于没有GATE启动新一轮动作,本次仍然完成启动新一轮动作,本次仍然完成3个个 CLK暂稳态过程。当暂稳态过程。当GATE上升边到来后,上升边到来后,N=4的单稳操作才开始。的单稳操作才开始。3)方式)方式2 分频器(分频器(N分频方式,频率发生器)分频方式,频率发
12、生器)基本功能:基本功能:输出频率固定的脉冲(控制输出信号的输出频率固定的脉冲(控制输出信号的高高/低低电平的电平的比例比例。)。)工作特点:工作特点:*控制字写入后,控制字写入后,OUT以以高高电平为电平为初始电平初始电平。计数器减到。计数器减到1时,时,OUT输出一个输出一个宽度宽度 为一个为一个CLK的负脉冲。的负脉冲。*OUT输出的脉冲串,以输出的脉冲串,以N1个个CLK 脉冲为脉冲为高高电平,以电平,以一个一个CLK脉冲为脉冲为低低电平。电平。实际上,实际上,OUT输出的脉冲频率为输出的脉冲频率为CLK脉冲的脉冲的N分频。分频。*GATE 门控:为高,计数器工作;为低,暂停工作。门控
13、:为高,计数器工作;为低,暂停工作。该波形图叙述了该波形图叙述了3种情况:种情况:*1 GATE=1,OUT持续输出持续输出分频脉冲串分频脉冲串(高电平为(高电平为N-1,低电平为,低电平为1)*2 分频过程中,分频过程中,GATE=0,暂停工作暂停工作,OUT变为高电平变为高电平;=1,继续工作,继续工作,重新计数重新计数*3 GATE=1,工作过程中,工作过程中改写改写N,CE要把本次的计数初值要把本次的计数初值减到减到0,才开始才开始新一轮新一轮分频工作。分频工作。4)方式)方式3 方波发生器方波发生器基本功能基本功能:基本上与方式:基本上与方式2相同,只是相同,只是OUT输出的是完全输
14、出的是完全对称方波对称方波 或或基本对称基本对称的连续方波。的连续方波。工作特点工作特点:若:若N为偶数,则输出脉冲的为偶数,则输出脉冲的高高、低、低电平持续时间电平持续时间相同相同;若为奇,则若为奇,则高高电平持续时间为电平持续时间为(N+1)/2,低低电平持续时间为电平持续时间为(N-1)/2。3种情况:种情况:*1 GATE=1,偶数,偶数,OUT输出输出对称对称方波方波*2 GATE=1,奇数,奇数,OUT输出输出不对称不对称方波(高电平多一个方波(高电平多一个CLK时间)时间)*3 GATE=0,暂停暂停工作;工作;GATE=1,从初值开始工作,从初值开始工作 5)方式)方式4 软件
15、触发选通软件触发选通 基本功能:基本功能:单脉冲发生器,以单脉冲发生器,以装入计数初值装入计数初值来来启动启动计数器开始工作。计数器开始工作。工作特点工作特点:*无重装初值功能无重装初值功能 *装入装入控制字控制字后,后,OUT的的初始电平仍为高初始电平仍为高。*装入装入计数初值计数初值后,计数器开始倒数计数,到后,计数器开始倒数计数,到0后后OUT输出一个负脉冲(宽度为输出一个负脉冲(宽度为一一 个个CLK),),然后又恢复为高电平,直到装入下一个计数初值来启动新一轮计数。然后又恢复为高电平,直到装入下一个计数初值来启动新一轮计数。*通常用它来作为通常用它来作为负选通信号负选通信号 3种情况
16、:种情况:*1 GATE=1,正常正常软件启动计数过程软件启动计数过程*2 GATE在计数过程中的在计数过程中的作用:作用:=0,禁止计数;,禁止计数;恢复恢复1,重新计数,重新计数*3 计数过程中,计数过程中,改写改写初值对计数过程的影响初值对计数过程的影响6)方式方式5 硬件触发的硬件触发的选通信号发生器选通信号发生器 基本功能基本功能:以外部:以外部GATE信号来启动信号来启动计数器开始工作,计数器开始工作,OUT输出宽度为一个输出宽度为一个 CLK的负脉冲。的负脉冲。工作特点工作特点:*装入控制字后,装入控制字后,OUT的的初始电平为高初始电平为高。*装入计数初值后,装入计数初值后,必
17、须等必须等GATE引脚输入一个引脚输入一个上升边上升边后后,计数器才开始倒数,计数器才开始倒数计数,到计数,到0后后OUT输出一个负脉冲,宽度为一个输出一个负脉冲,宽度为一个CLK脉冲脉冲通常用它来作为负选通通常用它来作为负选通信号,信号,然后又恢复为高电平,直到装入下一个计数初值来启动新一轮计数。然后又恢复为高电平,直到装入下一个计数初值来启动新一轮计数。工作方式小结工作方式小结1)门控信号的影响高电平允许,当GATE=0,即使出现CLK,也不计数方式0,2,3,4上升沿允许(上升沿触发)方式1,52)OUT信号的状态写入方式字后,OUT的状态计数过程中,OUT的状态计数终了,OUT的状态3
18、)计数操作可否重复不可重复方式0,4自动重复方式2,3条件重复方式1,5(3)8254编程编程*8254有有3个个通道,即通道,即3个定时器个定时器/计数器单元计数器单元,选择选择哪个通道?哪个通道?*每一个定时器每一个定时器/计数器又有计数器又有6种种工作方式,如何确定工作方式,如何确定工作方式?工作方式?*每一种方式下又必须每一种方式下又必须写入计数初值,写入计数初值,怎么送?怎么送?*在某些情况下需要在某些情况下需要读出读出计数器的计数器的余值余值或计数器的或计数器的状态,状态,怎么读?怎么读?借助于用借助于用“0”“1”组成的组成的“字字”,把用户的意图告诉给把用户的意图告诉给8254
19、这些这些字字是我们使用是我们使用8254的基础的基础*方式控制字方式控制字设置设置计数器工作方式计数器工作方式*命令字命令字和和状态字状态字 两个命令字:两个命令字:计数器锁存命令字计数器锁存命令字和和读回命令字读回命令字*1计数器锁存命令字计数器锁存命令字 功能:功能:把当前把当前计数工作单元计数工作单元CE的内的内容锁存到容锁存到输出锁存器输出锁存器OL中,供中,供CPU读出读出CE的的 余值(如:预先设置计数初值余值(如:预先设置计数初值=N,一段时间后,锁存,读剩余值,一段时间后,锁存,读剩余值n,在这,在这 段时间内的计数值段时间内的计数值X=N-n)SC1,SC0:选择将要:选择将
20、要锁存锁存哪一个通道的哪一个通道的CE(11无意义)无意义)D5、D4:特征值(标识),必须为特征值(标识),必须为00。X XXX00SC0SC1D7 D6 D5 D4 D3 D2 D1 D0*2读回命令字读回命令字 功能:功能:把指定通道的把指定通道的CE当前值当前值锁存到锁存到OL,或把,或把状态状态寄存器内容锁存到状态锁存寄存器内容锁存到状态锁存 器器SL,以供以供CPU读出读出。锁存命令字锁存命令字一次只能锁存一次只能锁存一个一个通道(计数器)通道(计数器)读回命令字读回命令字能同能同时规定锁存几个通道时规定锁存几个通道。0 CN0CN1CN2STATUSCOUNT11=1通道通道2
21、=1通道通道1=1通道通道0 控制字控制字 锁存命令字锁存命令字 读回命令字读回命令字无标识无标识标识标识 00标识标识11 0同一地址入口同一地址入口D7 D6 必须为必须为11,D0必须为必须为0 这是这是特征值(标识)。特征值(标识)。D5:COUNT=0,锁存锁存选中的所有选中的所有计数器计数器D4:STATUS=0,锁存锁存选中的所有选中的所有状态寄存器状态寄存器*状态字状态字 功能:供用户查看功能:供用户查看8254某一通道的状态:某一通道的状态:计数值、工作方式、计数值、工作方式、OUT引脚的当前状态、引脚的当前状态、BCD/二进制计数方式、读二进制计数方式、读/写操作写操作 状
22、态字格式状态字格式 BCD M0M1M2RW0RW1NULLCOUNTOUTD7 D6 D5 D4 D3 D2 D1 D0D7:OUT引脚状态。引脚状态。=0,OUT=0;=1,OUT=1 D6:无效计数。无效计数。=0,计数初值已装入计数工作单元,计数初值已装入计数工作单元CE,计数值有效计数值有效 =1,计数初值,计数初值未装入未装入计数工作单元计数工作单元CE,无效计数无效计数 D5.D0 与方式控制字的对应位一致。与方式控制字的对应位一致。例:要读通道0的状态和余值,设8254的地址为20CH、20DH、20EH、20FH读回命令的用法标识位写读回命令字:1 1 0 0 1 0 0 0
23、C8H锁存余值锁存状态锁存通道0MOV DX,20FHMOV AL,0C8HOUT DX,ALMOV DX,20CHIN AL,DXMOV BL,ALIN AL,DXMOV CL,ALIN AL,DXMOV CH,AL先读回状态读回余值低八位读回余值高八位编程方法及示例编程方法及示例1)初始化编程)初始化编程 可编程接口芯片,都有一个初始化编程问题可编程接口芯片,都有一个初始化编程问题*8254的初始化编程有的初始化编程有两个步骤两个步骤 对控制寄存器对控制寄存器写入写入控制字控制字,确定某个通道的工作方式,确定某个通道的工作方式对通道对通道写入写入计数初值计数初值 设设8254各个端口的地址
24、为:各个端口的地址为:通道通道0:20CH 通道通道1:20DH通道通道2:20EH 控制寄存器:控制寄存器:20FH 例例1 设置通道设置通道0工作于方式工作于方式0,计数,计数100次次 填写方式字:填写方式字:0 0 0 1 0 0 0 0 选中选中 只读写只读写 方式方式0 二进制二进制 通道通道0 低字节低字节方式控制字为方式控制字为 10H初始化编程初始化编程 MOV DX,20FH ;取取控制寄存器控制寄存器地址地址 MOV AL,10H ;取通道;取通道0的的方式控制字方式控制字 OUT DX,AL ;方式控制字;方式控制字送入送入控制寄存器控制寄存器 MOV DX,20CH
25、;取通道;取通道0地址地址MOV AL,64H ;取通道;取通道0计数初值计数初值OUT DX,AL ;计数初值;计数初值送入送入通道通道0;到此,随着到此,随着CLK0引脚上的脉冲输入引脚上的脉冲输入,初值进入初值进入CE,开始计数。,开始计数。例例2 设置通道设置通道1工作在方式工作在方式3,输出频率为,输出频率为1KHz的方波的方波填写方式字:填写方式字:0 1 1 1 0 1 1 0 选中选中 先低先低 方式方式3 二进制二进制 通道通道1 后高后高方式控制字为方式控制字为 76H计算计数初值:计算计数初值:设从设从CLK1输入的时钟脉冲的频率是输入的时钟脉冲的频率是2.5M,周期为,
26、周期为0.4s 通道通道10.4s CLK1 OUT1 1ms 1 10-3/0.4 10-6=2500 D=9C4 H 每计满每计满2500(9C4H)个时钟脉冲,个时钟脉冲,OUT输出一个间隔为输出一个间隔为1ms的的脉冲脉冲 初始化编程初始化编程 MOV DX,20FH ;取控制寄存器地址;取控制寄存器地址 MOV AL,76H ;取通道;取通道1的的方式控制字方式控制字 OUT DX,AL ;方式控制字送入控制寄存器;方式控制字送入控制寄存器 MOV DX,20DH ;取通道;取通道1地址地址 MOV AX,09C4H ;取通道;取通道1计数初值计数初值 OUT DX,AL ;先先送计
27、数初值的送计数初值的低低字节(字节(C4H)MOV AL,AH ;OUT DX,AL ;再再送送高高字节(字节(09H);到此,;到此,OUT1输出频率为输出频率为1000Hz的方波的方波 例例3 通道级联通道级联 要求通道要求通道2定时定时1秒秒 如果仍采用如果仍采用2.5M的时钟脉冲,按的时钟脉冲,按16位的最大计数值位的最大计数值65536计算计算 0.4 10-6 65536=26214.4s 26ms 不能定时不能定时 1000ms(1秒)秒)解决的办法:采用解决的办法:采用级联级联。用通道用通道1,通道,通道2联合联合完成完成1秒定时。秒定时。通道通道1 方式方式3 通道通道2 方
28、式方式02.5MHz CLK1 OUT1 CLK2 1000Hz OUT2 1秒到秒到 通道安排:通道安排:通道通道1:工作在方式工作在方式3下,输出频率为下,输出频率为1000Hz的方波(周期为的方波(周期为1ms),作为),作为 通道通道2的时钟脉冲。的时钟脉冲。通道通道2:工作在方式:工作在方式0,对周期为,对周期为1ms的脉冲计数,计满的脉冲计数,计满1000次,次,OUT2输输 出高电平,表明出高电平,表明1秒定时到。秒定时到。填写通道填写通道2方式字:方式字:1 0 1 1 0 0 0 1 选中选中 先低先低 方式方式0 十进制十进制 通道通道2 后高后高通道通道2方式控制字为:方
29、式控制字为:B1H初始化编程:初始化编程:通道通道1初始化初始化.(同例(同例 2)MOV DX,20FH ;取控制寄存器地址;取控制寄存器地址 MOV AL,0B1H ;取通道;取通道2的的方式控制字方式控制字 OUT DX,AL ;方式控制字送控制寄存器;方式控制字送控制寄存器 MOV DX,20EH ;取通道;取通道2的地址的地址 MOV AX,1000H ;取通道;取通道2的的计数初值计数初值 OUT DX,AL ;先先送送低低字节(字节(00)MOV AL,AH OUT DX,AL ;再再送送高高字节(字节(10);以此为起点,一秒到时,;以此为起点,一秒到时,OUT变为高电平变为高
30、电平 工作编程工作编程 a)工作过程中)工作过程中改变改变计数初值计数初值b)对控制寄存器写入命令字()对控制寄存器写入命令字(计数器锁存命令字计数器锁存命令字或或读回命令字读回命令字)为)为读读某通道的某通道的 当前当前CE内容和内容和状态寄存器状态寄存器内容作准备。内容作准备。c)从通道()从通道(0,1,2)读回状态字)读回状态字d)从通道()从通道(0,1,2)读回)读回CE当前值(余值)当前值(余值)例例4 读取通道读取通道2的当前计数值(的当前计数值(余值余值)锁存命令字锁存命令字 1 0 0 0 0 0 0 0 选中选中通道通道2 特征值特征值 无意义,可任选无意义,可任选 计数
31、器锁存命令字计数器锁存命令字 80H MOV AL,80H ;取通道;取通道2计数器锁存命令字计数器锁存命令字 MOV DX,20FH ;取;取控制寄存器地址控制寄存器地址 OUT DX,AL ;锁存通道;锁存通道2的的CE当前值到锁存器当前值到锁存器 MOV DX,20EH ;取;取通道通道2地址地址 IN AL,DX ;从通道;从通道2锁存器读回余值锁存器读回余值低低8位位 MOV CL,AL ;转存;转存CL IN AL,DX ;读回余值;读回余值高高8位位 MOV CH,AL ;转存;转存CH实验装置8254接线图I/OI/O译码译码CS1CS1CS2CS2CS3CS3CS4CS4CS
32、5CS5CS6CS6CS7CS7CS8CS8I/OI/O地址地址300H300H320H320H340H340H360H360H380H380H3A0H3A0H3C0H3C0H3E0H3E0HIN 指令产生指令产生 IOR;OUT产生产生IOW D0D7:传送控制字,命令字,余值,状态:传送控制字,命令字,余值,状态 6.4.2 8254在在PC中的应用中的应用(课外阅读)(课外阅读)PC使用一片使用一片8254,其,其3个计数通道分别用于日时钟计时、个计数通道分别用于日时钟计时、DRAM刷新定时和控制扬声器发声声调。刷新定时和控制扬声器发声声调。扬声器发声的前提:扬声器发声的前提:GATE2
33、=1,即,即PB0=1与门控制端与门控制端=1,即,即PB1=1OUT2输出一定频率的脉冲串输出一定频率的脉冲串8255 B口地址:口地址:61H周期:周期:0.838s每每55ms申请申请一次中断一次中断8254 的的 4个端口地址:个端口地址:T0:40H T1:41HT2:42H控制寄存器:控制寄存器:43H 定时中断和定时刷新定时中断和定时刷新产生产生55ms方波对应的方波对应的计数值。计数值。计算计算 P203 1)MOV AL,36H ;计数器;计数器0为方式为方式3(方波发生器);(方波发生器);采用二进制计数,先低后高写入计数值;采用二进制计数,先低后高写入计数值OUT 43H
34、,AL ;写入方式控制字;写入方式控制字MOV AL,0 ;计数值为;计数值为0OUT 40H,AL ;写入低字节计数值;写入低字节计数值OUT 40H,AL ;写入高字节计数值;写入高字节计数值;到此,;到此,OUT0连续输出周期为连续输出周期为55ms的方波的方波MOV AL,54H ;计数器工作为方式;计数器工作为方式2(分频器(频率发生器)(分频器(频率发生器);采用二进制计数,只写低;采用二进制计数,只写低8位计数值位计数值OUT 43H,AL ;写入方式控制字;写入方式控制字MOV AL,18 ;计数初值为;计数初值为18(15 s。计算。计算 P204)OUT 41H,AL ;写
35、入计数值;写入计数值;到此,;到此,OUT1连续输出周期为连续输出周期为15 s的脉冲串的脉冲串 如要求扬声器发出频率为如要求扬声器发出频率为600Hz的声音,则:的声音,则:AX=1.19318106600=1988.6D=7C5H AH=07H AL=C5H;发音频率设置子程序,;发音频率设置子程序,入口参数:入口参数:AX=1.19318106发音频率发音频率SPEAKER PROC PUSH AX MOV AL,0B6H ;定时器;定时器2为方式为方式3,;先低后高写;先低后高写16位计数值位计数值 OUT 43H,AL POP AX OUT 42H,AL ;写入低;写入低8位计数值位
36、计数值 MOV AL,AH OUT 42H,AL ;写入高;写入高8位汁数值位汁数值 RETSPEAKER ENDPSPEAKON PROC ;扬声器开子程序;扬声器开子程序 PUSH AX IN AL,61H ;读取;读取61H端口的原控制信息端口的原控制信息 OR AL,03H ;D1D0PB1PB011B,其他位不变,其他位不变 OUT 61H,AL ;直接控制发声;直接控制发声 POP AX RETSPEAKON ENDPSPEAKOFF PROC ;扬声器关子程序;扬声器关子程序 PUSH AX IN AL,61H AND AL,0FCH ;D1D0PB1PB000B,其他位不变,其
37、他位不变 OUT 61H,AL ;直接控制闭音;直接控制闭音 POP AX RETSPEAKOFF ENDP 3)可编程硬件延时)可编程硬件延时中断向量号中断向量号1AH的日时钟调用程序,用以在应用程序中读取或设置时间的日时钟调用程序,用以在应用程序中读取或设置时间格式:格式:MOVAH,0 INT1AH功能:读时钟功能:读时钟返回参数:返回参数:CH:CL=h:min DH:DL=s:10-2s时钟的计时单位时钟的计时单位54.925493ms1s:18个计时单位个计时单位 54.925493ms x 18=0.98865887s1min:1092个计时单位个计时单位 54.925493ms
38、 x 1092=59.978683s1h:65543个计时单位个计时单位 54.925493ms x 65543=3599.9815s 以以计时单位计时单位表达的时表达的时间例如:间例如:DL=1,实际,实际上是上是1x55ms=55msDL=90,即为,即为90 x55=4950ms=5s可编程硬件延时可编程硬件延时;5秒延时秒延时MOV AH,0 ;读取日时钟功能调用(;读取日时钟功能调用(P314)INT 1AH ;CH:CL=h:min DH:DL=s:10-2s ADD DX,90 ;加;加5秒(秒(51890)MOV BX,DX ;期望值送;期望值送BX L1:INT 1AH ;再
39、读日时钟;再读日时钟 CMP BX,DX ;与期望值比较;与期望值比较 INE L1 ;不等,则循环;不等,则循环 ;相等,则延时结束;相等,则延时结束 BIOS 15H号中断调用号中断调用格式:格式:MOVAH,86H INT15H入口参数:入口参数:CX:DX=延时时间(以延时时间(以s 为单位)为单位)CX高字节,高字节,DX低字节低字节出口参数:出口参数:CF=0,表示调用正确,执行了延时;,表示调用正确,执行了延时;=1 调用不正确,未执行延时。调用不正确,未执行延时。2ms延时程序段:延时程序段:MOV CX,O ;2ms延时延时MOV DX,1952 ;延时;延时1.952MS2976 s MOV AH,86HINT 15H ;功能调用返回时,定时时间到;功能调用返回时,定时时间到 虽然以微秒为单位虽然以微秒为单位,但是实时时钟的最小单位是但是实时时钟的最小单位是976.56微秒微秒,所以该功能的实际所以该功能的实际延时是延时是976.56微秒的整倍数微秒的整倍数.2ms延时延时,只能取只能取2X976=1952