[原创] pic18 starterkit 学习0x06——定时器Timer0(任务调度)

mzb2012   2016-11-25 23:39 楼主
一、简介 定时器作为单片机内一个必不可少的外设,有着十分巨大的作用。可以利用它实现精确延时处理,来完成任务调度和事件分时处理以及其它更复杂的功能。 二、硬件连接 三、寄存器 QQ截图20161125222228.png (1)TMR0L和TMR0H 计数寄存器的低八位和高8位,用于存储当前计数值。在8位模式下TMR0从FFh溢出到00h,或16位模式下TMR0从FFFFh溢出到0000h时,将产生TMR0中断。 注意:每次中断后需要重新填初值 (2)INTCON 包含各个中断允许位、优先级位和标志位。 其中,TMR0IF中断标志在每次中断后需要清零。 (3)T0CON 控制Timer0定时器模块所有方面,包括分频比的选择,时钟源等。 四、代码 (1)定时器初始化 QQ截图20161125225341.png 初值计算 QQ截图20161125225639.png 计算方法 FOSC= 11.0592Mhz 计一个数的时间: t = 分频比*4/FOSC,T0PS选择64分频比 计5ms计数值: N = 0.005/t=5*11059200/1000/256 =216 定时器初值: M = 0xFFFF-N (2)中断初始化 QQ截图20161125230600.png 使能外设、全局和Timer0中断 (3)应用函数 计数并置标志函数,在中断调用 QQ截图20161125230912.png 查询标志位并执行函数,在主循环调用 QQ截图20161125231023.png 任务函数,分为10ms任务、100ms任务和1s任务 QQ截图20161125231239.png QQ截图20161125231252.png QQ截图20161125231301.png 五、应用 调度3个任务,三个按照不同的速度闪烁,分别是10ms、100ms和1s。 示波器测量结果如图: IMG_20161125_114855.jpg IMG_20161125_114808.jpg IMG_20161125_114732.jpg 六、附件
04 - 定时器.rar (35.38 KB)
(下载次数: 62, 2016-11-25 23:30 上传)
本帖最后由 mzb2012 于 2016-11-25 23:38 编辑

回复评论 (3)

不错,学习了,楼主用什么下载程序,pickit3吗,用MPLAB哪个版本的开发环境
点赞  2016-11-26 16:02
引用: lansebuluo 发表于 2016-11-26 16:02
不错,学习了,楼主用什么下载程序,pickit3吗,用MPLAB哪个版本的开发环境

kit3下载,MPLAB版本都可以,目前8.92
点赞  2016-11-26 22:18
不错,谢谢!
点赞  2017-9-28 22:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复