AT89S51单片机的定时器.ppt_第1页
AT89S51单片机的定时器.ppt_第2页
AT89S51单片机的定时器.ppt_第3页
AT89S51单片机的定时器.ppt_第4页
AT89S51单片机的定时器.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6 AT89S51单片机的定时器 计数器 2 思考 单片机系统实现定时功能的方法 软件定时 软件定时不占用硬件资源 但占用了CPU时间 降低了CPU的利用率 采用时基电路定时 例如采用555电路 外接必要的元器件 电阻和电容 即可构成硬件定时电路 但在硬件连接好以后 定时值与定时范围不能由软件进行控制和修改 即不可编程 3 思考 单片机系统实现定时功能的方法 采用可编程芯片定时 这种定时芯片的定时值及定时范围很容易用软件来确定和修改 此种芯片定时功能强 使用灵活 在单片机的定时 计数器不够用时 可以考虑进行扩展 单片机内部定时 计数器 4 本章主要内容 6 1 定时器概述6 2 定时器的控制6 3 定时器的4种模式及其应用6 4 定时器 计数器综合应用举例 5 6 1定时器概述 AT89S51单片机有2个16位的可编程定时器 计数器 称为定时器 计数器0和定时器 计数器1 分别由两个8位的特殊功能寄存器TH0 TL0和TH1 TL1组成 6 用于定时控制 延时 外部事件计数和检测等场合 每个定时器可由软件设置为定时工作方式或技术工作方式及其它灵活的可控功能方式 这些功能由TMOD和TCON所控制 定时器的实质 16位加1计数器 7 定时器 计数器的结构和工作原理 定时器 计数器的结构定时器 计数器的实质是加1计数器 16位 由高8位和低8位两个寄存器组成 TMOD是定时器 计数器的工作方式寄存器 确定工作方式和功能 TCON是控制寄存器 控制T0 T1的启动和停止及设置溢出标志 8 计数器工作原理 计数功能所谓计数是指对外部事件进行计数 外部事件的发生以输入脉冲表示 因此计数功能的实质就是对外来脉冲的计数 AT89S51芯片的信号引脚T0 P3 4 和T1 P3 5 分别是两个计数器的计数输入端 外部输入的脉冲在负跳变时有效 供计数器进行加1计数 9 计数器工作原理 计数器输入的计数脉冲源系统的时钟占当期输出脉冲经12分频后产生 通过T0或T1引脚对外部脉冲信号计数 计数过程每来一个脉冲计数器加1 当加到计数器为全1 即FFFFH 时 再输入一个脉冲就使计数器回零 且计数器的溢出使TCON中TF0或TF1置1 向CPU发出中断请求 定时器 计数器中断允许时 如果定时器 计数器工作于定时模式 则表示定时时间已到 如果工作于计数模式 则表示计数值已满 10 计数器工作原理 计数方式下 单片机在每个机器周期的S5P2对计数脉冲输入引脚进行采样 如果前一个机器周期为高电平 后一个机器周期为低电平 即为一个有效的计数脉冲 在下一个机器周期的S3P1进行计数 由于采样计数脉冲是在2个机器周期完成的 所以计数脉冲的周期不能小于2个机器周期 11 定时器工作原理 定时功能定时功能是通过对单片机内部脉冲进行计数来实现的 即每个机器周期产生1个计数脉冲 使计数器加1 在使用定时器时 既可以根据计数值计算定时时间 也可以根据定时时间的要求计算出计数器的预置值 12 定时与计数都是利用计数实现 加法计数器是计满溢出时才申请中断 所以在给计数器赋初值时 不能直接输入所需的计数值 而应输入的是计数器计数的最大值与这一计数值的差值 设最大值为M 计数值为N 初值为X 则X的计算方法为 计数状态 X M N定时状态 X M 定时时间 机器周期 13 62 1工作模式寄存器寄存器 TMOD字节地址 89H 不可位寻址 定时器 计数器1 定时器 计数器0 功能 用于设定定时器 计数器的工作方式 只能用字节传送指令设置其内容 TMOD的低半字节对应定时器 计数器0 高半字节对应定时器 计数器1 前后半字节的位格式完全对应 6 2定时器的控制 14 M1和M0 工作方式选择位 15 C T 定时方式或计数方式选择位 C T 0定时工作方式C T 1计数工作方式GATE 门控位 GATE 0以运行控制位 TR0或TR1 启动定时器GATE 1以外部中断请求信号 INT0或INT1 启动定时器 16 6 2 2定时器 计数器控制寄存器 TCON字节地址 88H位地址 88H 8FH 可位寻址 功能 用于保存外部中断请求以及定时器的计数溢出 TCON既有定时器 计数器的控制功能 又有中断控制功能 其中与定时有关的控制位共4位 TF1 TR1 TF0 TR0 17 TF0和TF1 计数溢出标志位当计数器产生计数溢出时 相应的溢出标志位由硬件置 1 计数溢出标志位的使用有两种情况 使用中断方式时 作中断请求标志位来使用 在转向中断服务程序时由硬件自动清 0 使用查询方式时 作查询状态位来使用 查询有效后应以软件方法及时将该位清 0 18 TR0和TR1 运行控制位 软件置1或清0 TR0 TR1 0停止定时器 计数器工作TR0 TR1 1启动定时器 计数器工作 19 中断允许控制寄存器 IE字节地址 0A8H位地址 0A8H 0AFH 其中与定时器 计数器有关的控制位共3位 EA 中断允许总控制位ET0和ET1 定时器 计数器中断允许控制位ET0 ET1 0禁止定时器 计数器中断ET0 ET1 1允许定时器 计数器中断 20 6 3定时器的4种模式及应用 计数器工作方式选择 21 模式0 模式0为13位计数 由TL0的低5位 高3位未用 和TH0的8位组成TL0的低5位溢出时向TH0进位 TH0溢出时 置位TCON中的TF0标志 向CPU发出中断请求 该方式计算不方便 建议不采用 22 6 3 1模式1及应用 模式1的计数位数是16位 由TL0 TL1 作为低8位 TH0 TH1 作为高8位 组成了16位加1计数器 23 例6 1 用定时器T1产生一个50Hz的方波 由P1 1输出 方波周期为T 1 50 0 02s 20ms 用T1定时10ms 单片机采用12MHZ晶振 一个机器周期是1us 即是计数器计数10000次 TH1 65536 10000 256 TL1 65536 10000 256 注意定时器的初值计算方法 24 用查询方式编程 voidmain TMOD 0 x10 T1模式1 定时TR1 1 定时器开始计数while 1 TH1 65536 10000 256 TL1 65536 10000 256 装入计数初值while TF1 1 TF1 0 清除T1溢出标志位P1 1 P1 1 25 用中断方式编程 初始化程序应该完成以下工作 1 对TMOD赋值 以确定T0和T1的工作方式 2 计算初值 并将其写入TH0 TL0或TH1 TL1 3 中断方式时 则对IE赋值 开放中断 4 使TR0或TR1置位 启动定时计数器 26 程序流程 主程序流程 中断服务子程序流程 27 程序 主程序 include defineucharunsignedchar defineuintunsignedintsbitP1 1 P1 1 voidmain TMOD 0 x10 T1模式1 16位计数器TH1 65536 10000 256 TL1 65536 10000 256 装入计数初值EA 1 开总中断ET1 1 开定时器1中断TR1 1 定时器开始计数while 1 28 程序 定时器1中断服务程序 voidtimer1 int void interrupt3 TH0 65536 10000 256 TL0 65536 10000 256 重新装入计数初值P1 1 P1 1 29 例题6 2 用单片机和内部定时器来产生矩形波 要求频率为100Hz 占空比为0 25 设单片机的时钟频率为12MHz 占空比 在一串理想的脉冲周期序列中 正脉冲的持续时间与脉冲总周期的比值 30 5 3 2模式2及其应用 模式2为自动重装初值的8位计数方式 在模式2下 当计数器计满255 FFH 溢出时 CPU自动把TH的值装入TL中 不需用户干预 因此特别适合于用作较精确的脉冲信号发生器 31 二 模式2工作特点 可以自动重新装载的8位定时器 计数器 在程序初始化时 TL0和TH0由软件赋予相同的初值 用于定时工作方式时 定时时间为 t 28 TH0初值 振荡周期 12 用于计数工作方式时 计数长度最大为 28 256个脉冲 该模式可省去软件中重装常数的语句 并可产生相当精确的定时时间 适合于作串行口波特率发生器 32 例6 3 当P3 4引脚上的电平发生负跳变时 从P1 0输出一个500us的同步脉冲 请编程实现该功能 方法1 只用T0 按照查询方式编程 请同学们自行编写 选择T0为模式2电平发生负跳变采用外部计数方式 当P3 4引脚上发生负跳变时 T0计数器加1 溢出标志TF0置1 然后改变T0为500us定时方式 并使P1 0同步输入一个500us脉冲 同步脉冲输出后T0又恢复外部事件计数方式 33 方法2 计数用T0 采用查询方式 定时用T1中断 均采用模式2 T0工作在外部事件计数方式 当计数达到0FFH时候 再加1计数器就会溢出 T1工作在定时工作方式 设晶振频率为6MHz 500 s相当于250个机器周期 因此 初值X为 256 X 2 s 500 sX 6 06H 34 电路 用脉冲信号源模拟外部事件 用示波器对照显示P3 4口的输入和P1 0口的输出 方波信号源的周期必须大于1000us即频率小于1000HZ 这里我们为了清楚在示波器上进行对比 方波信号源发生频率为500HZ 35 程序 主程序设置T0 T1的模式 T0 T1装入初值 T0开始计数 判断T0是否溢出 溢出后清溢出标志位 P1 0清0开T1开始计时T1中断P1 0拉高关T1 36 例6 4 利用定时器T1的模式2对外部信号计数 要求每计满100次 将P1 0端取反 外部信号由P3 5引脚输入 每发生一个负跳变计数器加1 输入100个脉冲后计数器发生溢出中断 TH1 TL1 28 100 0 x9C 采用信号发生器产生周期为0 01s 频率为100Hz的方波信号 计数满100次即耗时1s P1 0口接一发光二极管 现象为发光二极管每隔一秒闪烁 37 电路 38 6 3 3模式3及应用 方式3只适用于定时器 计数器T0 定时器T1方式3时相当于TR1 0 停止计数 工作方式3将T0分成为两个独立的8位计数器TL0和TH0 39 6 4定时器 计数器综合应用举例 例6 5 以中断方式产生单片机秒 分脉冲发生器 为便于仿真 设计一能显示分和秒的计时器 40 include defineucharunsignedchar defineuintunsignedintucharm 0 uchars 0 uchari 0 ucharcodesmg 0XC0 0XF9 0XA4 0XB0 0X99 0X92 0X82 0XF8 0X80 0X90 0 9共阳级段码 41 分处理函数和秒处理函数 分钟处理函数voidIncrease Minute if m 9 m 0 P3 smg m 秒处理函数voidIncrease Second if s 59 s 0 Increase Minute P0 smg s 10 P2 smg s 10 42 主函数 voidmain TMOD 0 x10 T1模式1TH1 65536 50000 256 TL1 65536 50000 256 装入计数初值 12MHz晶振一次溢出为50msEA 1 开总中断ET1 1 开定时器1中断TR1 1 定时器1开始计数P3 smg 0 while 1 43 定时器1中断程序 voidtimer1 int void interrupt3 TH1 65536 50000 256 TL1 65536 50000 256 重新装入计数初值i if i 20 50ms 20 1s时间到 i 0 Increase Second 44 例6 6演奏一段音阶 共14个音符 要求音阶演奏由定时器控制完成 45 例6 7频率测量 按下K1按键后 数码管显示出外部所接入的信号源频率 外部信号源频率取值为0 99HZ的整数 46 作业 课本习题 6 5 6 7 例题6 7 电路图见网上教学平台 课本习题和例题均用PROTEUS绘制电路图 KEIL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论