6.4 定时器计数器综合应用举例

合集下载

第六章单片微机的定时器计数器原理及应用

第六章单片微机的定时器计数器原理及应用

中断矢量001BH
⑴T0方式3下的T0
在方式3情况下,T0被拆成二个独立的8位计数器TH0、TL0。 ▲ TL0:8位定时/计数器,使用T0原有的控制寄存器资 源:TF0,TR0,GATE,C/T,INT0,中断矢量等; ▲ TH0:8位定时器,占用T1的中断溢出标志TF1,运行控 制开关TR1,中断矢量001BH,只能对片内机器周期脉冲计数
复位后,两个寄存器全部清零。
6.3.2 定时器/计数器T2的工作方式
T2的工作方式用控制位CP/RL2(T2CON.0)和RCLK +TCLK来选择。T2有3种工作方式,如表6-2所示:捕获方式、 自动重装载方式和波特率发生器方式。
⒈ 捕获方式
在一定条件下,自动将计数器TH2和TL2的数据读入捕获寄存器 RCAP2H和RCAP2L,亦即TH2和TL2内容的捕获是通过捕获寄 存器RCAP2H和RCAP2L来实现的。其工作原理可参见图6-7。
当CP/RL2=0时,选择自动重装载方式。 若T2的中断是被允许的,则无论发生TF2=1还是EXF2 =1,CPU都会响应中断,此中断向量的地址为002BH。响应 中断后,应用软件撤除中断申请。TF2 和EXF2都是直接可寻 址位,可采用CLR TF2和CLR EXF2指令实现撤除中断申请的 功能。
触发 方式
89H IE0
中断 标志
88H IT0
触发 方式
⒊ T0、T1 的数据寄存器——TH1、TL1,TH0、TL0 ⒋ 定时器/计数器中断
⑴ 中断允许寄存器IE
⑵ 中断矢量 ⑶ 中断优先级寄存器IP
6.2.2 定时器/计数器T0、T1 的工作方式
T0:有4种工作方式可选(方式0,1,2,3)
当CP/RL2=l时,选择捕获方式。

chap6 MCS-51的定时计数器

chap6 MCS-51的定时计数器

9
6.2 有关的特殊功能寄存器
T0的计数寄存器 的计数寄存器—— TH0、TL0; 的计数寄存器 、 ; T1的计数寄存器 的计数寄存器—— TH1、TL1; 的计数寄存器 、 ; 有关的SFR除TH0、TL0、TH1、 与T0、T1有关的 、 有关的 除 、 、 、 TL1外,还有 个: 外 还有2个
21
6.4 定时 计数器的应用举例 定时/计数器的应用举例
使用定时器/计数器前都要对其初始化, 使用定时器 计数器前都要对其初始化, 计数器前都要对其初始化 主要是设置4个 主要是设置 个SFR: :
TMOD-设置工作方式(定时或计数)、 -设置工作方式(定时或计数)、 工作模式等 TH1 TL1(TH0 TL0 )-设置计数初值 ( )-设置计数初值 TCON-启动工作 -
TH1 8位
15
TL1
×××
5位
模式0 T1 模式0逻辑电路结构
定时 定时脉 冲输入 计数脉 冲输入 计数 选通控制 计数器启 计数器启 动/停止 外部中断信号
16
计数器的输入 信号受到3 信号受到3个 信号的控制
加1计数
计满溢出 置位TF1 置位TF1
GATE=0:或门输出1 GATE=0:或门输出1,与门开放 TR1=0,断开,无计数信号输入,停止计数 =0,断开,无计数信号输入, =1,闭合,有计数信号输入, TR1=1,闭合,有计数信号输入,启动计数 GATE=1:必须INT =1,与门才开, GATE=1:必须INT1 =1,与门才开,TR1才起作用。 才起作用。 GATE的作用是控制是否让 GATE的作用是控制是否让INT1参与控制。 的作用是控制是否让INT 参与控制。
0 0 1 0 0 1 0 1

单片机原理及应用教程(C语言版)-第6章 MCS-51单片机的定时器计数器

单片机原理及应用教程(C语言版)-第6章 MCS-51单片机的定时器计数器

6.1.1 单片机定时器/计数器的结构
MCS-51单片机定时器/计数器的原理结构图
T0(P3.4) 定时器0 定时器1 T1(P3.5) 定时器2 T2EX(P1.1)
T2(P1.0)
TH0
溢 出 控 制
TL0
模 式 溢 出
TH1
控 制
TL1
模 式 溢 出
TH2
TL2
重装 捕获
RCAP 2H
RCAP 2L
6.2.2 T0、T1的工作模式
信号源 C/T设为1,为计数器,用P3.4引脚脉冲 C/T设为0,为定时器,用内部脉冲 运行控制 GATE=1,由外部信号控制运行 此时应该设置TR0=1 P3.2引脚为高电平,T0运行 GATE=0, 由内部控制运行 TR0设置为1,T0运行
6.2.2 T0、T1的工作模式
6.2.3 T0、T1的使用方法
例6-1 对89C52单片机编程,使用定时器/计 数器T0以模式1定时,以中断方式实现从P1.0引 脚产生周期为1000µ s的方波。设单片机的振荡频 率为12MHz。 分析与计算 (1)方波产生原理 将T0设为定时器,计算出合适的初值,定 时到了之后对P1.0引脚取反即可。 (2)选择工作模式 计算计数值N
6.2.1 T0、T1的特殊功能寄存器
TR1、TR0:T1、T0启停控制位。 置1,启动定时器; 清0,关闭定时器。
注意: GATE=1 ,TRx与P3.2(P3.3)的配合控制。
IE1、IE0:外部中断1、0请求标志位 IT1、IT0:外部中断1、0触发方式选择位
6.2.2 T0、T1的工作模式
6.2.1 T0、T1的特殊功能寄存器
GATE=0,禁止外部信号控制定时器/计数器。 C/T——定时或计数方式选择位 C/T=0,为定时器;C/T=1,为计数器 计数采样:CPU在每机器周期的S5P2期间,对 计数脉冲输入引脚进行采样。

《定时器及应用举例》课件

《定时器及应用举例》课件
根据应用需求选择定时器的时 间单位,如秒、分钟、小时等

设置触发条件
根据应用需求设置定时器的触 发条件,如时间到达、外部信 号触发等。
设置时间间隔
根据应用需求设置定时器的时 间间隔,如每隔一定时间触发 一次。
保存设置
完成设置后保存相关参数,确 保定时器能够按照预设参数进
行工作。
04
定时器的应用举例
软件编程
01
02
03
04
选择编程语言
根据定时器的厂商提供的编程 语言进行编程。
编写程序
根据应用需求编写程序,设置 定时器的触发条件、时间间隔
等参数。
调试程序
通过模拟或实际测试,对程序 进行调试,确保定时器能够按
照预期工作。
下载程序
将编写好的程序下载到定时器 中进行测试或实际应用
用于控制室内温度,实现 自动开关机,节省能源。
冰箱
用于控制冷藏和冷冻室的 温度,保持食物的新鲜度 。
洗衣机
用于控制洗涤和漂洗的时 间,实现自动化洗衣。
工业控制领域应用举例
自动化生产线
仪器仪表
用于控制生产线的启动和停止,保证 生产过程的稳定性和效率。
用于控制和监测各种工业设备的运行 状态和参数。
不要将电源直接连接到定时器的输出端,以防设 备损坏和火灾风险。
使用注意事项
设置时间
在设置定时器时间时,确保时间设置正确,避免误操作导致设备 无法正常工作。
安装位置
确保定时器安装在通风良好、干燥、无尘的地方,以防设备过热或 受潮。
定期校准
定期检查和校准定时器,以确保其准确性和可靠性。
维护与保养
清洁外壳
03
定时器的使用方法

定时器-计数器的应用实例

定时器-计数器的应用实例

定时器/计数器的应用实例
在实时系统中,定时通常使用定时器,这与软件循环的定时完全不同。

虽然两者都是依赖系统时钟,但是在定时器计数时,其它指令可以继续进行,但软件定时时不允许其它任何事件发生。

 对许多连续计数和持续时间操作,最好使用16位定时/计数器。

当计数器翻转后,它会继续计数。

若在计数开始或定时时间间隔开始读出计数器的值,在计数或时间间隔结束时从读出值中减去开始时的读出值,则所得计数数值为其间的计数或持续的时间间隔。

假设定时器用于V-F(电压到频率)转换器信号的周期测量。

若当逻辑1到来时计数值为3754,下一个逻辑1到达时是4586,则V-F转换器的周期是832个机器周期。

使用12MHz晶振为
832μs(1.202kHz),使用11.0592MHz晶振,计数值近似
903μs(1.071kHz)。

当计数值有翻转时,只要计数值以16位无符号整数对待就无算术问题。

 例1 设单片机的fosc=12MHz,要求在P1.0脚上输出周期为2ms的方波。


 解周期为2ms的方波要求定时间隔1ms,每次时间到P1.0取反。

 定时器计数率=fosc/12。

机器周期=12/fosc=1μs
 每个机器周期定时器加1,1ms=1000μs。

单片机第6章 定时器计数器

单片机第6章 定时器计数器

M1、M0——工作模式选择位。 、 工作模式选择位。 工作模式选择位 由于有M1和 两位 可以有四种工作方式。 有 种 两位, 由于有 和M0两位,可以有四种工作方式。T0有4种 工作模式,T1有3种工作模式。选择情况如表6-1所示。 工作模式, 有 种工作模式。选择情况如表 所示。 种工作模式 所示 定时器/计数器 不能工作在模式3。设置T1的 计数器T1不能工作在模式 定时器 计数器 不能工作在模式 。设置 的 M1M0=11,T1将停止工作。 将停止工作。 , 将停止工作
C/T——定时或计数方式选择位 。 定时或计数方式选择位 C/T=0时,选择定时功能 。 定时功能 = 时 选择定时 C/T=1时,选择计数方式。 计数方式 = 时 选择计数方式。 通过引脚T0( 通过引脚 (P3.4)和T1(P3.5)、T2(P1.0) ) 、 对外部信号进行计数。 对外部信号进行计数。 在每个机器周期的S5P2期间,CPU采样 期间, 在每个机器周期的 期间 采样 引脚的输入电平。 引脚的输入电平。若前一机器周期采样值为 1,下一机器周期采样值为 ,则计数器增 , ,下一机器周期采样值为0,则计数器增1, 此后的机器周期S3P1期间,新的计数值装入 期间, 此后的机器周期 期间 计数器。 计数器。
定时工作方式
定时器计数89C51片内振荡器输出经12分频后的脉 冲,即每个机器周期使定时器(T0或T1)的数值加1 直至计满溢出。当89C51采用12MHz晶振时,一个机 器周期为1µs,计数频率为1MHz。
计数工作方式
• 通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。 当输入脉冲信号产生由1至0的下降沿时定时器的值加1。 • CPU检测一个1至0的跳变需要两个机器周期,故最高计数 频率为振荡频率的1/24。 • 为了确保某个电平在变化之前被采样一次,要求电平保持 时间至少是一个完整的机器周期。

定时器/计数器及应用分析课件

在使用定时器和计数器时,需要考虑 其与系统的接口和配置,以确保其正 常工作并满足系统要求。
定时器和计数器的工作原理和应用场 景各不相同,需要根据实际需求进行 选择和使用。
定时器和计数器在嵌入式系统的设计 中扮演着重要的角色,对于实现系统 的精确控制和可靠运行具有重要意义。
展望
随着嵌入式系统的发展和应用领域的不断扩展, 定时器和计数器的功能和性能也在不断提升。
计数器可以用来实现计数值的累加, 例如记录用户点击按钮的次数或设备 的使用次数。
定时器和计数器器可以组合起来实 现更复杂的功能,例如通过定时 器控制计数器的计数值,或者使 用计数器的计数值来控制定时器
的触发时间间隔。
组合应用实例
例如,可以使用定时器来控制计 数器的计数值,每隔1秒更新一 次计数器的计数值,然后使用计 数器的计数值来控制一个设备的
代码实现
使用Arduino编程,通过定时器与计数器结合,实时计算 电机的转速,同时控制电机的运动状态
应用场景
适用于需要实时监测与控制电机转速的领域,如自动化生 产线、机器人等
定时器和计数器的综合应用——实现智能小车巡线
• 硬件准备:Arduino板、电机驱动模块、两个直流电机、红外线传感器、巡线轨道 • 原理说明:通过定时器控制电机的运动状态,实现小车的运动;通过计数器统计红外线传感器检测到的黑色线路的脉冲数,
定时器工作原理
定时器通过计数时钟周期来实现时间间隔的测量,当达到设定的时 间间隔后就会触发中断。
使用计数器实现计数值的累加
计数器概述
计数器工作原理
计数器是一种能够记录事件发生次数 的硬件或软件组件。
每当事件发生时,计数器就会自动加1 ,当达到设定的上限值后就会触发中 断或重置为0。

定时计数器应用举例

匹配控制寄存器(MCR)
外部匹配寄存器(EMR)
定 时 器 比计 较数 器值
位 功能
31 : 0 匹配值
复位值 0
项目:精确定时交通灯的实现
控制寄存器-TCR
定时器控制寄 存器TCR用于控制 定时器计数器的操 作。
0x0000 0000
定时器、计数器(TC)
复位
定时器控制寄存器 使能 (TCR)
} }
// 初始化定时器0 // 清除中断标志
项目:精确定时交通灯的实现
【制订方案】 实施流程图 软件流程图
项目:精确定时交通灯的实现
【项目实施】 参考程序 …….
项目拓展 修改程序实现精确定时的交通灯并具有配套的声响效果。
项目:精确定时交通灯的实现
【交流评价总结】
1、请学生演示项目实现的效果。 2、请学生叙述项目实施过程中遇到的问题及解决方法。 3、对项目实施情况进行点评。 【布置作业】 完成精确定时的交通灯并具有配套的声响效果。
访问 读写 读写
读写
复位值 0 0
0
项目:精确定时交通灯的实现
匹配功能寄存器描述-匹配控制寄存器
匹配控制寄存器 用于控制在发生匹配 时定时器所执行的操 作。
MAT[3:0]
匹配功能
匹配寄存器0(MR0) 匹配寄存器1(MR1) 匹配寄存器2(MR2) 匹配寄存器3(MR3)
匹配控制寄存器(MCR)
}
项目:精确定时交通灯的实现
int main(void) {
PINSEL0 = 0x00000000; PINSEL1 = 0x00000000; IO0DIR = BUZZER | PORTDIR; IO0SET = PORTDIR; Time0Init();

第6章 定时器计数器习题


20
IT0P:
CLR
TR0
;T0中断服务程序,停止T0计数
;把T0引脚接收过负脉冲标志F0置1, ;即接收过负跳变
SETB F0
RETI IT1P: CPL RETI P1.0 ;T1中断服务程序,P1.0位取反
程序说明:当单片机复位时,从0000H跳向主程序 MAIN处执行程序。其中调用了对T0,T1初始化子程序 PT0M2。子程序返回后执行标号LOOP处指令,循环等待 T0引脚上负脉冲的到来。由于负脉冲到来的标志位F0的
;装初值的高8位
;允许T0中断 ;总中断允许 ;启动T0 ;中断子程序,T0重装初值 ;P1.0的状态取反
程序说明:当单片机复位时,从程序入口0000H跳向主 程序MAIN处执行。其中调用了T0初始化子程序PT0M0。
6
子程序返回后,程序执行“AJMP HERE”指令,则
循环等待。 当响应T0定时中断时,则跳向T0中断入口,再从T0中 断入口跳向IT0P标号处执行T0中断服务子程序。 当执行完中断返回的指令“RETI”后,又返回断点处 继续执行循环指令“AJMP HERE”。在实际的程序中, “AJMP HERE” 实际上是一段主程序。当下一次定时 器T0的1ms定时中断发生时,再跳向T0中断入口,从而重
基本思想:设为方式2(自动装入常数方式)计数模式,
TH0、TL0初值均为0FFH。当T0脚发生负跳变时,T0计 数溢出,TF0置“1”,单片机发出中断请求。
13
初始化程序:
ORG 0000H ;跳到初始化程序 ;跳到外中断处理程序 AJMP IINI
ORG
IINI: MOV
000BH
TMOD,#06H ;设置T0为方式2
复执行上述过程。

定时器与计数器应用程序实例

定时器与计数器应用程序实例
——消防变频给水装置
1、装置构成、控制要求和 PLC 接线图 装置由稳压补水、消防泵组及变频控制柜等组成。可满足消防供水的规范要求,接受和处理各种消 防信号,发出各种运行、故障等报警信号。装置的输入/输出信号通过无源触点,与中控室进行通讯应 答。 装置配备情况:消防泵,配置 3 台,主泵为变频拖动,另两辅泵为工频运行,消防信号发生时启用; 补水泵,2 台,交替运行,故障时自行切换,对压力水罐进行日常性随机补水。 控制要求:各泵的运行都有手动/自动两种操作运行模式;有运行指示和故障指示;稳压泵交替运 行,稳压泵依据电接点压力表的上、下限信号自动补水;消防泵根据所需压力自动投切,维持恒压供水。 故障泵能自动切除,等待泵自动投入。消防泵根据压力仪表输出的上、限信号进行自动投切,由 1#变 频泵进行压力细调,另两台工频泵进行压力粗调。装置具有自动/手动巡检功能。 另外,临时需用生产供水时,补水泵长时间补水不足时,由消防 1#泵代替补水泵补水,小功率补 水泵停止运行。消防泵补水运行是按电接点压力表信号进行的,但消防运行是按压力仪表输出的上、下 限信号进行的,二者压力设置值有所不同。 可以现场控制,也可以由工控室的信号控制。由中控室来的无源触点并接于 PLC 输入回路的触点上, 可对系统启/停止进行遥控;PLC 输出继电器的无源触点信号,又返回中控室,便于工作人员监控装置 的运行状况。 该装置 PLC 为西门子产品,损坏后进行修复,换用了 40 点 LG 型 PLC,并重新根据运行要求编写了 控制程序。PLC 的接线图如下图 1: 手动/自动的切换由 SA1(万能开关)实施,手动控制电路和终端电器(接触器、指示灯)电路仍维持 原状——也无必要改动,省略未画。修复与整改任务,是弄明白 PLC 的输入/输出信号的性质,换用 PLC 并重新编写程序电路。工作重点如下: A、登记 I/O 口信号类型、接线线号,有设备图纸时供参考时当然更好;B、或者重画一下 PLC 的输 入/输出接线图,更利于编程时参考;C、PLC 的硬件电路是已经定型的,在此硬件基础上编写相应的软 件程序;D、现场调试和程序修正。用户只提供了“粗略”的控制方案,控制的“细节”部分需与现场 工作人员一起落实并修正。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LOOP1:ACALL D200 : TAB:DB 0FEH,25H,02H,0FEH,25H,02H : DJNZ R2, LOOP1 DB 0EH,25H,04H,0FDH,80H,04H INC DPTR DB 0FEH,84H,02H,0FEH,84H,02H AJMP LOOP DB 0FEH,84H,04H,0FEH,25H,04H D200: MOV R3, #81H : DB 0FEH,25H,02H,0FEH,84H,02H D200B:MOV A, #0FFH : DB 0FEH,0C0H,04H,0FEH,0C0H,04H D200A:DEC A : DB 0FEH,98H,02H,0FEH,84H,02H JNZ D200A DB 0FEH,57H,08H,00H,00H,04H DEC R3 DB 0FFH,0FFH CJNE R3, #00H,D200B END RET
SERVE: MOV TL0,#0B0H MOV TH0,#3CH DJNZ B,LOOP CLR TR0 LOOP: RETI END
端出现的正脉冲宽度。 例2:测量在 :测量在(P3.2)端出现的正脉冲宽度。 端出现的正脉冲宽度 P3.2
T
分析:利用门控制位 实现对定时器/ 分析:利用门控制位GATE实现对定时器/计数器的 实现对定时器 /停控制 来测量脉冲宽度。 停控制, 启/停控制,来测量脉冲宽度。 当GATE为1,TR1(TR0)为1时,只有 为 , 为 时 只有INT1(INT0)引 引 脚输入高电平时, 才允许计数。 脚输入高电平时,T1(T0)才允许计数。 才允许计数 当GATE为0,只要 为 ,只要TR1(TR0)为1时,T1(T0)就允许 为 时 ) 计数。 计数。 利用GATE=1时的这个功能,可测试 时的这个功能, 利用 时的这个功能 可测试INT1(P3.3)和 和 INT0(P3.2)上正脉冲的宽度。 上正脉冲的宽度。 ( 上正脉冲的宽度
MOV R0, A ORL A, R1 JZ NEXT0 MOV A, R0 ANL A, R1 CJNE A, #0FFH,NEXT SJMP MAIN NEXT: MOV TH0,R1 : MOV TL0,R0 SETB TR0 SJMP NEXT1 NEXT0:CLR TR0 : NEXT1:CLR A : INC DPTR MOVC A,@A+DPTR MOV R2, A
用定时器T0方式 来产生歌谱中各音符 用定时器 方式1来产生歌谱中各音符对应频率 方式 来产生歌谱中各音符对应频率 的方波, 输出驱动喇叭。 的方波,由P1.0输出驱动喇叭。节拍可通过调用延时 输出驱动喇叭 子程序D200(延时 子程序 (延时200ms)次数来实现,以每拍 )次数来实现, 800ms的节拍时间为例,那么一拍需要循环调用 的节拍时间为例, 的节拍时间为例 那么一拍需要循环调用D200 延时子程序4次 同理,半拍就需要调用2次 延时子程序 次。同理,半拍就需要调用 次。设单片 机晶振频率为6MHz,乐曲中的音符、频率及定时常 机晶振频率为 ,乐曲中的音符、 数三者的对应关系如下: 数三者的对应关系如下:
;定时器 模式 定时 定时器T0模式 定时器 模式1定时 ;设定初值 设定初值 ; ;等待 等待INT1变低 等待 变低 ;启动 启动T1 启动 ;等待 等待INT1变高 等待 变高 ;开始计数,等待变低 开始计数, 开始计数 ;停止计数 停止计数 ;取出 中的高八位 取出T1中的高八位 取出 ;取出 中的低八位 取出T1中的低八位 取出
开始 T0初始化(TMOD,TL0,TH0赋值) P3.2=0? Y 启动T0工作 P3.2=1? Y P3.2=0? Y 停止T0工作 取出TH0和TL0的值送入30H和31H 结束 N N
N
ORG 4000H MOV TMOD,#09H MOV TH0, #00H MOV TL0, #00H JB P3.2, $ SETB TR0 JNB P3.2, $ JB P3.2, $ CLR TR0 MOV 30H,TH1 , MOV 31H,TL1 , SJMP $ END
ORG AJMP ORG AJMP ORG MAIN : MOV MOV MOV MOV MOV SETB SETB SETB SJMP
0000H MAIN 000BH SERVE 0040H SP,#60H B,#0AH , TMOD,#01H TL0,#0B0H TH0,#3CH TR0 ET0 EA $
SETB TR1 SJMP $ SERVE: PUSH PSW PUSH ACC MOV TL1,#0B0H MOV TH1,#3CH DJNZ 20H,RETUNT MOV 20H,#0AH , MOV A,#01H , ADD A,32H , DA A MOV 32H,A , CJNE A,#60H,RETUNT , , MOV 32H,#00H ,
a
为模式1 设T1为模式 为模式 设中断次数
保护现场 赋计数初值 到1s? N N (30H)=24? Y N (30H)清0 恢复现场 返回 (31H)清0 (30H)加1
清计时单元 开中断 启动T1 启动 调用显示子程序 等待定时中断
Y (32H)加1 (32H)=60? Y (32H)清0 (31H)加1 N (31H)=60? Y a
产生1s定时 例1:设时钟频率为6MHz。编写利用 产生 定时 设时钟频率为 。编写利用T0产生 的程序。 的程序。 (1)定时器 工作模式的确定 )定时器T0工作模式的确定 模式0最长可定时 最长可定时16.384ms; ∵ 模式 最长可定时 模式1最长可定时 最长可定时131.072ms; 模式 最长可定时 模式2最长可定时 最长可定时512µs; 模式 最长可定时 定时1s,可选用模式1,每隔100ms中断一 次,中 ∴ 定时 ,可选用模式 ,每隔 中断一 断10次为 。 次为1s。 次为 (2)求计数器初值 )求计数器初值X ∵ (216-X)×12/(6 × 106) =100×10-3 s × × ∴ X=15536=3CB0H 因此: (TH0)=3CH 因此:(TL0)=0B0H
440 1.14 FDC6
494 1.01 FE07
例如:音符5 例如:音符5 · 1/392×0.5≈1.28ms × 初值) (65536-初值)×2us=1280 初值 初值=64896=(1111,1101,1000,0000)D=FD80 ∴初值
ORG 0000H AJMP MAIN ORG 000BH MOV TH0, R1 MOV TL0, R0 CPL P1.0 RETI ORG 0050H MAIN: MOV TMOD, #01H MOV IE, #82H MOV DPTR, #TAB LOOP:CLR A : MOVC A,@A+DPTR MOV R1, A INC DPTR CLR A MOVC A,@A+DPTR
例4:单片机制作可编程乐曲演奏器。 :单片机制作可编程乐曲演奏器。 原理:通过控制定时器的定时来产生不同音阶的声音, 原理:通过控制定时器的定时来产生不同音阶的声音, 音阶的声音 再利用延迟来控制发音时间的长短,即可控制音频中 再利用延迟来控制发音时间的长短, 的节拍。 节拍。 把乐谱中的音符和相应的节拍变换为定常数和延 迟常数,作成数据表格存放在存储器中。 迟常数,作成数据表格存放在存储器中。由程序表得 到定时常数和延迟常数, 到定时常数和延迟常数,分别用以控制定时器产生方 波的频率和发出该频率方波的持续时间。 波的频率和发出该频率方波的持续时间。当延迟时间 到时,再查下一个音符的定时常数和延迟常数。 到时,再查下一个音符的定时常数和延迟常数。依次 进行下去,就可自动演奏出悦耳动听的乐曲。 进行下去,就可自动演奏出悦耳动听的乐曲。 下面是歌曲“新年好”的一段简谱: 下面是歌曲“新年好”的一段简谱: 1=C 1 1 1 5 | 3 3 3 3 1 | 1 3 5 5 | 4 3 2 — |
中断服务程序( ② 中断服务程序(PITO)的主要功能 ) 是进行计时操作。 是进行计时操作。程序开始先判断计数溢出时候 满了10次 不满表明还没达到最小计时单位—秒 满了 次,不满表明还没达到最小计时单位 秒,中 断返回;如满10次则表示已达到最小计时单位 次则表示已达到最小计时单位—秒 断返回;如满 次则表示已达到最小计时单位 秒,, 程序继续向下运行,进行计时操作。 程序继续向下运行,进行计时操作。 要求满1秒则 秒位” 秒则“ 单元内容加1, 要求满 秒则“秒位”32H单元内容加 ,满60s则 单元内容加 则 分位”31H单元内容加 单元内容加1, 60min则 时位” “分位”31H单元内容加1,满60min则“时位”30H 单元内容加1,满24h则30H,31H,32H单元内容全部 单元内容加 , 则 , , 单元内容全部 清0。 。
C调音符 调音符 频率 (Hz) ) 半周期 (ms) 定时值
·
5
·0.95 FE25
2 588 0.85 FE57
3 660 0.76 FE84
4 698 0.72 FE98
5 784 0.64 FEC0
6 880 0.57 FEE3
7 988 0.51 FF01
392 1.28 FD80
例3:设计实时时钟程序。时钟 就是以秒、分、时 :设计实时时钟程序。 就是以秒、 为单位进行计时。用定时器与中断的联合应用。 为单位进行计时。用定时器与中断的联合应用。 (1)实现时钟计时的基本方法 ) 计算计数初值。 ① 计算计数初值。 时钟计时的最小单位是秒,但使用单片机定时器/ 时钟计时的最小单位是秒,但使用单片机定时器 计数器进行定时,即使按方式1工作,其最大定时时 计数器进行定时,即使按方式 工作, 工作 间也只能达131ms。因此,可把定时器的定时时间定 间也只能达 。因此, 为100ms,计数溢出 次即得到时钟计时的最小单 ,计数溢出10次即得到时钟计时的最小单 次计数可用软件方法实现。 位—秒;而10次计数可用软件方法实现。 秒 次计数可用软件方法实现 假定使用定时器T0,以工作模式1进行 进行100ms的定时。 的定时。 假定使用定时器 ,以工作模式 进行 的定时 如fosc=6MHz,则计数初值 为: ,则计数初值X为 × × ∵ (216-X)×12/(6 × 106 )=100×10-3 s ∴ X=3CB0H (TH0)=3CH 因此 :(TL0)=0B0H
相关文档
最新文档