1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机接口技术,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机接口技术,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机接口技术,*,2025/3/17 周一,微型,计算机接口技术,1,第,4,章 定时,/,计数技术,本章主要内容,微机系统中的定时系统,外部定时方法及硬件定时器,计数器的计数初值计算及装入,定时,/,计数器的应用,2025/3/17 周一,1,4.1,定时,/,计数技术,1.,定时,例如,:,一天,24
2、小时的计时,(,称为日时钟,),。,在监测系统中,对被测点的定时取样。,在读键盘时,为去抖,一般延迟一段时间,再读。,在步进电机速度控制程序中,利用时间间隔来控制步进电机的,转速。,2.,计数,例如,:,对零件和产品的计数;,对大桥和高速公路上车流量的统计,等等。,2,2025/3/17 周一,4.2,微机系统中的定时系统,微机中的定时分为,内部,定时,和,外部定时,两个定时系统,1.,内部定时,内部,定时,产生运算器、控制器等,CPU,内部的控制时序,如取指周期、读,/,写周期、中断周期等,主要,用于,CPU,内部指令执行过程的定时,。,2.,外部定时,外部,定时,是,外设在实现,某种,功
3、能时,所需要,的,一种,时序关系,。例如,打印机接口标准,Centronics,,就规定了打印机与,CPU,之间传输信息应遵守的工作时序,。,内部,定时,和,外部定时,是,彼此独立的两个定时系统,,各按自身的规律进行定时操作,。内部定时是由,CPU,硬件决定的,固定不变。在,实际应用中,外部定时与用户的关系比内部定时更,密切。,3,2025/3/17 周一,4.3,外部定时方法及硬件定时器,4.3.1,定时方法,1,.,软件定时,软件定时,是,运用,软件编程,,,循环执行一段程序,而,产生的等待延时,。,优点,:,不需增加硬设备,,只需编制相应的延时程序以备调用。,缺点,:,CPU,执行延时待
4、时间,增加了,CPU,的时间开销,,延时时间越长,,,这种,等待开销越大,而且延时与主机的工作频率有关,,定时程序的通用性很差,。,2.,硬件定时,硬件定时,是,采用,可编程的,定时,/,计数器,或,单稳延时电路,产生,定时或延时,。,优点,:,不占用,CPU,的时间,,定时时间长,使用灵活;,定时准确,定时时间不受主机频率影响,,定时程序具有,通,用,性,,故得到广泛应用。,缺点,:设置定时电路,,增加额外硬件开销,。,4,2025/3/17 周一,4.3.2,定时器,硬件,定时器有不可编程定时器和可编程定时器两种,。,1.,不可编程定时器,不,可编程定时器的,定时间隔,和,定时范围固定,,
5、采用,中小规模集成电路器件构成的定时电路。常见的定时器件有,单稳触发器和,555,、,556,定时器,等,利用其外接电阻、电容的组合,可实现一定范围的定时。,2.,可编程定时器,可编程,定时器,的,定时间隔,和,定时范围,可由,程序进行设定和改变,,使用方便灵活。可编程定时电路一般都是,采用可编程定时,/,计数器,外围支持,芯片,,如,Intel 82C54A,来实现的。,5,2025/3/17 周一,4.4,实现,外部定时,/,计数的解决方案,采用可编程定时,/,计数器,82C54A,实现外部定时的方案。,82C54A,是微处理器处理实时事件的重要支持芯片,在,实时时钟、事件计数以及速度控制
6、等方面,都非常,有用。,4.4.1,定时,/,计数器,82C54A,的外部特性,1.,外部特性,82C54A,的外部引脚,如图,4.1,所示。,6,2025/3/17 周一,图,4.1 8253,引脚,82C54A,的引脚可分为面向,CPU,和面向,I/O,设备两侧,1,)面向,CPU,的信号,线,数据总线,D0,D7,:为三态输出,/,输入线。用于将,8253,与系统,数据总线相连。,片选线,CS,:为输入信号,低电平有效。,读信号,RD,:为输入信号,低电平有效。,写信号,WR,:为输入信号,低电平有效。,地址线,A1A0:,这两根线接到系统地址总路线的,A1A,上。,2,)面向,I/O,
7、设备的信号线,计数器时钟信号,CLK,:,CLK,为输入信号。,计数器门控选通信号,GATE(0-2),:为输入信号。,计数器输出信号,OUT(0-2),;为输出信号。,7,2025/3/17 周一,4.4.2,定时,/,计数器,82C54A,的工作方式,为了,满足不同的应用要求,,82C54A,设置了,6,种工作方式,,其中,,2,方式和,3,方式比较常用,应重点掌握,。,1,.,0,方式:,事件,计数器方式,,其波形如图,4.2,所示。,8,2025/3/17 周一,图,4.2,方式,0,0,方式特点:,0,方式的典型应用是做事件计数器,,计数器的大小就是计数初值,改变计数初值就可以改变计
8、数器的大小。,0,方式,当写入计数初值后,启动计数器开始计数,,OUT,信号变为低电平,并维持低电平至减法计数器的内容减到,0,时,停止工作,,OUT,信号变为高电平,并维持高电平到再次写入新的计数值,可见,,0,方式输出单次波,。,0,方式的,计数过程由写信号软启动,,写入计数初值后开始计数,不需外加启动信号;计数结束,自动停止,不需外加停止信号。,9,2025/3/17 周一,2.,1,方式:,可重触发单,稳,触发,器方式,1,方式波形,如图,4.3,所示。,10,2025/3/17 周一,图,4.3,方式一输出波形,1,方式特点:,1,方式的典型应用是作可编程单稳态触发器,,单稳延迟时间
9、计数初值,时钟脉宽,延时期间输出的是低电平,低电平的宽度可以由程序控制,即改变计数初值就可以改变延时时间,。,1,方式,在,写入计数初值后,再,由,GATE,门信号硬启动计数,,,OUT,变为低电平,每来一个,CLK,,计数器减,l,直到计数值减到,0,时,停止工作,,OUT,输出高电平,并维持高电平到,GATE,门信号再次启动。,1,方式,由,GATE,门信号每触发,1,次仅,输出一个波形,故,1,方式也是输出,单次波,。,11,2025/3/17 周一,3.2,方式:,分频器方式,2,方式是一种具有自动装入时间常数,的,分频器,,其波形如图,4.4,所示。,12,2025/3/17
10、周一,图,4.4,方式二,2,方式特点:,2,方式的典型应用是做分频,器,,,分频系数就是计数初值。改变计数初值就可以改变输出负脉冲波形的频率。,2,方式,在,写入计数初值后,,由写信号软启动计数器,开始减,l,计数,直到减到,l,时,,OUT,输出一个宽度为时钟,CLK,周期的低电平,接着又变为高电平,软启动计数开始且计数初值自动重装,开始下一轮计数,如此往复,不停地工作。,2,方式具有自动重装计数初值功能,故,2,方式能够连续,输出负脉冲波形,。,13,2025/3/17 周一,4.3,方式:,方波发生器方式,3,方式具有自动装入时间常数(计数初值),的,功能。,3,方式的波形如图,4.5
11、所示。,14,2025/3/17 周一,3,方式的波形图如下。,15,2025/3/17 周一,图,4.5,方式三,3,方式特点:,3,方式的典型应用是做方波发生器,,,方波的周期,=,计数初值,时钟脉冲的周期。改变计数初值就可以改变输出方波的频率,。,3,方式,在写入计数初值后,,由写信号软启动计数器,开始计数,,OUT,输出占空比为,11,或近似,11,的连续方波。当计数初值为偶数时,输出波形的占空比为,11,,如图,4.10,(,a,)所示。当计数初值为奇数时,输出波形的占空比为近似,11,,如图,4.10,(,b,)所示。,计数结束后,计数初值自动重装,开始下一轮计数,如此往复,不停
12、的工作,因此,,3,方式连续输出方波,。而,2,方式连续输出的是负脉冲波。,16,2025/3/17 周一,5.4,方式:,单次负脉冲发生器方式,4,方式的输出波形,如图,4.6,所示。,17,2025/3/17 周一,图,4.6,方式四,4,方式特点:,4方式的典型应用是单次负脉冲发生器,,负脉冲宽度等于时钟脉冲的周期。改变计数初值就可以改变选通脉冲产生的时间。,4方式计数从写入计数初值后开始,OUT输出高电平,减1计数直到计数值减到0时,在OUT端输出一个宽度等于时钟CLK脉冲周期的负脉冲,并停止工作。显然,,4,方式的,计数过程由写信号软启动,。,4方式,不具备计数初值重装能力,故,输出
13、单次波形,。,18,2025/3/17 周一,19,2025/3/17 周一,6.5,方式:,单次负脉冲发生器方式,5,方式的输出波形如图,4.7,所示,图,4.7,方式五,2025/3/17 周一,20,5,方式特点:,5方式的典型应用是做单次负脉冲发生器,,选通脉冲宽度等于时钟脉冲的周期。改变计数初值就可以改变选通脉冲产生的时间。,5方式的计数开始是由GATE门信号硬启动,,OUT输出高电平,开始减1计数直到计数值减到0时,在OUT端输出一个宽度等于时钟CLK脉冲周期的负脉冲,并停止工作。,5方式,不具备计数初值重装能力,也是,输出单次波形,。,5,方式与,4,方式不同之处是计数启动信号不
14、同,,5,方式是,GATE,信号硬启动,,4,方式是写信号软启动。,2025/3/17 周一,21,小结:,6,种工作方式的,比较,0,方式和,1,方式,,这两种方式的,输出波形类似,均为单次波,。,区别在于计数启动方式不同,,前者为软启动,后者是硬启动。,2,方式和,3,方式,,这两种方式,共同的特点是具有自动再加载,(装入),功能能力。二者的,区别在于:,2,方式连续输出,宽度为,1,个,TCLK,的,负脉冲,。,3,方式连续输出,占空比为,1:1,的,方波,或近似方波。,4,方式和,5,方式,。这两种方式的,OUT,输出波形相同,,两者的,区别是计数启动的触发信号不同,,前者由写信号启动
15、计数,后者由,GATE,信号启动计数。,2025/3/17 周一,22,2025/3/17 周一,23,4.4.3,定时,/,计数器,82C54A,的编程模型,82C54A,的,编程模型,包括,内部可访问的,寄存器,及其,端口地址,、,工作方式,、,命令字,。用户可利用这个编程模型对,82C54A,进行编程,。,1.,82C54A,内部寄存器,2C54A,内部,寄存器,有,1,个命令寄存器,和,3,个独立的计数器,(,0,2,),也叫做计数器通道。,3,个,独立的计数器中,,每个计数器内部又,包含,3,个不同功能的,16,位寄存器:,计数初值寄存器,、,减法计数器,和,当前计数值,锁存器,。,
16、2C54A,内部逻辑结构如图,4.8,所示。,24,2025/3/17 周一,图,4.8 82C54A,的内部寄存器,下面介绍,82C54A,的,3,个独立计数器内部寄存器的作用。,3,个独立计数通道,(,计数器,),如图,4.9,所示。,2025/3/17 周一,25,图,4.9,计数器通道的,3,个寄存器,2025/3/17 周一,26,每个计数通道,包含,计数,初值寄存器、减,1,计数器和当前计数,值锁存器,计数,初值寄存器(,16,位),:,用于存放计数,初值,(,定时常数、分频系数),最大计数值为,65536,(,64KB,),。,计数初值寄存器的计数初值,,在,计数器,计数 过程,
17、中保持不变,。当需要重复计数时,取出计数初值重装到,减,1,计数器。,减,1,计数器(,16,位),:,在,初始化时同时一起装入的计数初值,,用于进行减,1,计数操作,,每来一个时钟脉冲,它就作减,1,运算,直至将计数初值减为零,。,当前计数值锁存器(,16,位),:,用于锁存减,1,计数器的内容,,以供读出和查询。,2025/3/17 周一,27,2.,82C54A,的编程命令,82C54A,有,3,个命令,,其中,方式命令最重要,,应重点学习。,(1),方式命令,方式命令的,作用,是对,82C54A,进行初始化,,初始化的内容见,4.6,节。,方式命令的,格式,如图,4.10,所示。,图,
18、4.10 82C54A,工作方式命令格式,2025/3/17 周一,28,(2),锁存命令:,锁,存命令的,作用,是,将当前计数值先锁存起来再读,。,锁,存命令只有当要求读取当前计数值时才,使用,。,锁存命令的,格式,如图,4.11,所示。,图,4.11,锁存命令格式,2025/3/17 周一,29,锁存命令字,8,位,分两个字段:,计数器选择,字段(,D,7,D,6,);,锁存命令特征位,字段(,D,5,D,4,),。,当,D,5,D,4,=00,时,就是锁存命令;,当,D,5,D,4,00,时,就是方式命令的读,/,写指示位,。,其余,位,(,D,3,D,0,),与锁存命令无关,。,202
19、5/3/17 周一,30,(3),读回命令:,读回命令,与前面的锁存命令不同,,它,既能锁存计数值又能,锁存状态信息,,而且,读回命令,可以,锁存与读回,单个,或,3,个,计数器的当前计数值和状态,。其格式如图,4.12,所示。,图,4.11,读回,命令,格式,例如:,读取,计数器,2,的,当前计数值,,则,读回命令,=,11011000B,;,读取,计数器,2,的,当前状态,,则,读回命令,=,11101000B,;,读取,计数器,2,的,当前计数值和状态,,则,读回命令,=,11001000B,;,读取,全部,3,个计数器的当前计数值和状态,,则,读回命令,=,11001110B,。,4.
20、5,实现,外部,定时的计数初值计算,4.5.1,计数初值的计算,计数,初值,分,两种情况,:若,作计数器用时,,则,无须计算,,,将计数的次数直接装入;若,作定时器用时,,则,计数初值需要经过换算才能得到,。其,换算方法,如下。,(1)要求产生定时时间间隔的定时常数TC,(4-1),(2)要求产生频率为f的信号波形的定时常数TC,(4-2),31,2025/3/17 周一,4.5.2,计数初值的装入,由于,82C54A,内部的减法计数器和计数初值寄存器是,16,位,,而,82C54A,外部引脚数据信号线只有,8,位,故,16,位计数初值要分两次,装入,,并且,按先装低,8,位、后装高,8,位的
21、顺序,写入计数器的数据口,。,只有,2,方式和,3,方式具有自动重装计数初值的功能,其他方式都需要用户,通过程序人工重装计数初值,。,4.5.3,计数,初值,的范围,由于,计数初值寄存器和减法计数器是,16,位,故计数初值的范围以二进制数表示为,0000H,FFFFH,;以十进制数(,BCD,)表示为,0000,9999,。,32,2025/3/17 周一,4.6,外部定时,/,计数器的初始化,82C54A,初始化,有,两个工作要做,:,1.,向命令寄存器写入方式命令字,,,包括选择计数器(,3,个计数器之一),确定工作方式(,6,种方式之一),指定计数器计数初值的长度和装入顺序以及计数值的码
22、制(,BCD,或二进制码)。,2.,向已选定的计数器,按方式命令的要求,写入计数初值,。,写入计数初,值的顺序如下:,当,RW,1,RW,0,=01,时,只写入低,8,位,高,8,位自动置,0,;,当,RW,1,RW,0,=10,时,只写入高,8,位,低,8,位自动置,0,;,当,RW,1,RW,0,=11,时,写入,16,位,先写低,8,位,后写高,8,位。,33,2025/3/17 周一,例如,,选择,2,号计数器,工作在,3,方式,计数初值为,533H,(,2,个字节),采用,二进制计数。,汇变语言初始化程序段如下。,MOV DX,307H ;,命令口,MOV AL,10110110B,
23、2,号计数器的,方式命令字,OUT DX,AL MOV DX,306H ;2,号计数器数据口,MOV AX,533H,;,计数初值,OUT DX,AL ;,先送低字节到,2,号计数器,MOV AL,AH ;,取高字节送,AL OUT DX,AL ;,后送高字节到,2,号计数器,2025/3/17 周一,34,4.7,定时,/,计数器的应用,4.7.1,系统配置的定时,/,计数器应用,1.,系统配置的,82C54A,应用,设置,如图,4.13,所示。其中:,OUT0,用用作,时钟,中断,OUT1,用要用做,存储器,动态,定时,刷新,OUT2,用用作扬声器,发声,控制,0,号计数器,=,40H,
24、端口地址),1,号计数器,=,41H,(端口地址),2,号计数器,=,42H,(端口地址),方式,命令寄存器,=43H,(端口地址),。,以上,用途设置及地址的分配用户不能更改,。,系统,提供个时钟脉冲频率为,1.19318MHz,。,35,2025/3/17 周一,图,4.13,微机系统配置的,82C54A,应用,36,2025/3/17 周一,2,微机系统配置的,82C54A,初始化程序段,(,1,)计数器,0,:用于,定时中断,(约,55ms,申请,1,次中断),MOV AL,00110110B,;,初始化,方式命令,OUT 43H,AL,MOV AX,00H,;,初值,为,0000H
25、最大值),OUT 40H,AL ;,先写低字节,MOV AL,AH,OUT 40H,AL ;,再写高字节,(,2,)计数器,1,:用于,DRAM,定时刷新,(每隔,15,s,请求,1,次,DMA,传输),MOV AL,01010100B,;,初始化,方式命令,OUT 43H,AL,MOV AL,12H,;,初值,为,12H,OUT 41H,AL ;,只写低字节,(,3,)计数器,2,:用于产生约,900Hz,的方波使,扬声器发声,MOV AL,10110110B,;,初始化,方式命令,OUT 43H,AL,MOV AX,533H,;,初值,为,533H,OUT 42H,AL ;,先写低字节
26、MOV AL,AH,OUT 42H,AL ;,再写高字节,4.8.1,定时,/,计数器用作测量,脉冲宽度,例,4.1,用,82C54A,测量脉冲宽度,1.,要求,某,应用系统中,,要求,测量脉冲的宽度,。系统提供的输入时钟,CLK=1MHz,,采用二进制计数。,2.,分析,在软启动时,门控信号,GATE,的作用是允许或禁止计数。例如,,0,方式就有这种特点,因此可以,利用,GATE,门进行脉冲宽度测量,,,把被测的脉冲作为,GATE,门信号来控制计数器的计数过程,,即控制计数的启,/,停。在被测脉冲信号为低电平时,装计数初值,当被测脉冲信号变高电平时,开始计数,直至被测脉冲信号再次变低电平,
27、停止计数,并锁存。然后读出计数器,1,的当前值,n,,最后得到被测脉冲宽度是(,65536-n,),s,。,4.8,定时,/,计数器的应用设计举例,2025/3/17 周一,37,3.,设计,选择,计数器通道,1,,工作方式为,0,方式。如图,4.14,所示。,从波形图中可以看出,,当,GATE1,门信号也就是,被测信号为低电平时,,即使写入计数初值也,不开始计数,,只有,当,GATE1,门信号也就是,被测信号,变为高电平时才开始计数操作,,并且,直到,GATE1,门信号也就是,被测信号,再次变为低电平时才结束。,于是,把这一段计数过程中所累积的时钟计数,脉冲的个数乘以脉冲的周期,就得到,被测
28、信号的宽度。,2025/3/17 周一,38,图,4.14,脉冲宽度测量原理图,脉宽测量汇编语言程序段如下。,MOV DX,307H ;82C54A,的命令口,MOV AL,70H,;,方式命令,OUT DX,AL,MOV DX,305H ;1,号计数器的数据口,MOV AX,0000H,;,定时常数,OUT DX,AL ;,定时常数低字节,MOV AL,AH ;,定时常数高字节,OUT DX,AL,MOV DX,307H ;82C54A,的命令口,MOV AL,40H,;1,号计数器的,锁存命令,MOV DX,305H,IN AL,DX ;,从,1,号计数器,读当前计数值,,保存,MOV B
29、L,AL,IN AL,DX,MOV BH,AL,MOV AX,0000H,SUB AX,BX,;65536-BX,可得,被测脉冲的宽度,2025/3/17 周一,39,4.8.2,定时,/,计数器用,作,定时,例,4.2,用,82C54A,定时,1.,要求,某应用系统中,,要求,定时器每隔,5ms,发出一个扫描负脉冲,,系统提供的时钟,CLK,为,20kHz,,使用十进制计数。试写出定时器的初始化程序,。,2.,分析,(,1,)选择工作方式,为了,产生每隔,5ms,一次的连续的定时脉冲,,选择,82C54A,的,2,方式是合适的,。为此,利用,82C54A,的计数器,2,,将它的,OUT2,作
30、为定时脉冲输出。,(,2,)计算定时常数,因为是做定时器,,故需要进行定时常数计算,。将,系统提供的,CLK,作为通道,2,的输入时钟,CLK2,,其周期,T=1/20kHz=0.05ms,按照要求定时时间为,5ms,,,根据式(,4-1,),,,可得定时常数,为,TC=5ms/0.05ms=100,2025/3/17 周一,40,3,初始化程序,定时器汇编语言初始化程序段如下。,MOV DX,307H ;82C54A,的命令口,MOV AL,95H,;,方式命令,OUT DX,AL,MOV DX,306H ;,计数器,2,的数据口,MOV AL,100,;,定时常数,OUT DX,AL,20
31、25/3/17 周一,41,4.8.3,定时,/,计数器用,作,分频,例,4.3,用,82C54A,进行分频,1.,要求,某应用系统中,,要求,方波发生器产生,f=1000Hz,的方波,,系统提供的输入时钟,CLK=1.19318MHz,,采用二进制计数。试写出分频器的初始化程序,。,2.,分析,(,1,)选择工作方式,为了,产生方波,,选择,82C54A,的,3,方式是合适的,。为此,利用,82C54A,的计数器,0,,将它的,OUT0,作为方波输出。,(,2,)计算计数初值,将,系统提供的,CLK,作为计数器,0,的输入时钟,CLK0,,按照要求输出,OUT0=1000Hz,的方波,,根据
32、式(,4-2,),,,可得定时常数,为,TC=CLK0/OUT0=1.19318MHz/1000Hz=1193=4A9H,2025/3/17 周一,42,3,初始化程序,分频器汇编语言初始化程序段如下。,MOV DX,307H ;82C54A,的命令口,MOV AL,36H,;,方式命令,OUT DX,AL,MOV DX,304H ;,计数器,0,的数据口,MOV AX,4A9H,;,定时常数,OUT DX,AL ;,装入定时常数低字节,MOV AL,AH,OUT DX,AL ;,装入定时常数高字节,2025/3/17 周一,43,2025/3/17 周一,44,4.8.4,定时,/,计数器,
33、同时,用作,计时和分频,例,4.4,利用,82C54A,在生产线进行计数与定时,1.,要求,某罐头包装流水线,一个包装箱能装,24,罐,,要求,每通过,24,罐,流水线要暂停,5s,,等待封箱打包,完毕,,然后重启流水线,,继续装箱。按,Esc,键则停止生产。,2.,分析,为了,实现上述要求,有,两个工作要做,:,一,是对,24,罐计数,;,二,是对,5s,停顿定时,。并且,,两者之间又是相互关联的。,为此,,选用,82C54A,的,计数器,0,作计数器,,,计数器,1,作定时器,,并且,把计数器,0,的,计数已到(,24,)的,输出信号,OUT0,,,连到计数器,1,的,GATE1,线上,,
34、作为,外部硬件启动信号触发,计数器,1,的,5s,定时,,去控制流水线的暂停与重启。,其工作流程中的计数与定时之间的关系如图,4.15,所示。,2025/3/17 周一,45,图,4.15,工作流程中的计数与定时之间的关系,3.,设计,(1),硬件设计,电路结构原理如,图,4.16,所示。,检测原理,是,罐头从光源和光敏电阻(,R,)之间通过时,,,在晶体管(,T,)发射极上会产生罐头的脉冲信号,,此脉冲信号,作为计数脉冲,,接到计数器,0,的,CLK0,,,对罐头进行计数,。,计数器,0,作为计数器,工作在,2,方式。计数器,1,作为定时器,工作在,1,方式,2025/3/17 周一,46
35、图,4.16,包装流水线计数,-,定时装置电路原理,(2),软件设计,包装流水线汇编语言程序段,(只写出代码段)如下。,code segment,START,:MOV DX,307H ;,计数器,0,初始化,MOV AL,15H ;,命令字,OUT DX,AL,MOV DX,304H ;,写计数器,0,计数初值,MOV AL,24 ;,计数器,0,计数初值,OUT DX,AL,MOV DX,307H ;,计数器,1,初始化,MOV AL,73H ;,命令字,OUT DX,AL,MOV AX,1F4H,;,计数器,1,定时常数,MOV DX,305H,OUT DX,AL ;,先写低字节,MOV
36、 AL,AH,OUT DX,AL ;,再写高字节,CHECK:MOV AH,0BH,;,有键按下?,INT 21H,CMP AL,00H,JE CHECK,;,无键,则等待,MOV AH,08H,;,是,ESC,?,INT 21H,CMP AL,1BH,JEN CHECK,MOV AX,4C00H ;,是,ESC,,则返回,DOS,INT 21H,code ends,end start,2025/3/17 周一,47,4.8.5,定时,/,计数器,同时,用作,发声器,例,4.5,发声器设计,1.,要求,要求,利用系统配置的定时,/,计数器,82C54A,设计一个发声器,,,发,600Hz,的长
37、/,短音,按任意键,开始发声;按,ESC,键,停止发声,。,82C54A,的输入时钟,CLK,的频率为,1.19318MHz,。,2.,分析,(,1,)计数初值计算,根据式(,4-2,),,可,求得,产生,600Hz,方波的,定时常数,为,TC=1.19318,106Hz/600Hz=1983,(,2,)长,/,短音的控制,设置一个延时常数寄存器,(如,BL,),,改变寄存器的内容,就可改变延时时间,。该寄存器的内容就是调用延时子程序的入口参数。,2025/3/17 周一,48,2025/3/17 周一,49,(,3,)扬声器开,/,关控制,设置,一个与门,并利用,系统并行接口芯片,82C5
38、5A,的,PB0,和,PB1,引脚,分别作为,82C54A,的,GATE2,和与门的输入信号,,控制扬声器的启,/,停,。,3.,设计,(1)硬件设计,发声器的电路原理如图4.17所示。,图,4.17,发声器电路原理,2025/3/17 周一,50,(,2,)硬件设计,发声器的主程序流程图如图4.1,8,所示。,具体程序段见教材,P6567.,图,4.18,发声主程序流程图,2025/3/17 周一,微型,计算机接口技术,51,本 章 小 结,定时,/,计数技术的基本原理与概念,定时,/,计数器芯片,的工作方式与编程模型,计数初值,/,定时常数是决定,计数多少和定时长短的重要参数,它的计算有两种情况。,定时与计数的应用举例,2025/3/17 周一,51,






