//======================================//
// T16定时
//案例为:
//利用T16计数器来计时,计时两秒后控制LED灯由亮变灭
//======================================//
#include "extern.h"
bit LED : PA.5 //定义LED灯的引脚
byte time_10ms;
word reload_T16;
void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/16, IHRC=16MHz, VDD=5V;
$ LED out,high; //初始把灯点亮(高电平点灯)
$ T16M SYSCLK,/16,bit10; //T16的时钟源选择,内部的时钟分频器,中断源选择(当选择位由低到高或者由高到低时,发生中断事件);
//时钟源选择可以选择STOP, SYSCLK, PA4_F, IHRC, EOSC, ILRC, PA0_F;分频器可选择/1, /4, /16, /64
//中断源可选择BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15
reload_T16 = 1024 - 625; //每次进中断为10ms;
//计算公式为 [1/(时钟源/分频器)]*(中断源-reload_T16)=[1/(1M/16)]*(2^10-(1024-625))=0.01s
stt16 reload_T16; //设定计数器初始值reload_T16,当计数器累加超过设定中断源时产生中断;
$ INTEN T16; //中断允许寄存器,启用从T16的溢出中断;1:启用,0:停用。
$ INTRQ T16; //中断请求寄存器,此位是由硬件置位并由软件清零;1:请求,0:不请求。
//注:INTEN,INTRQ没有初始值,所以要使用中断前,一定要根据需要设定数据。即使INTEN为0,INTRQ还是会被中断发生源触发。
$ INTEGS BIT_R; //T16中断边缘选择,上升缘请求中断为BIT_R,下降缘请求中断为BIT_F;默认为上升
应广单片机PFC PMC 定时器T16配置
最新推荐文章于 2024-05-15 10:01:56 发布
该代码示例展示了如何利用T16定时器进行10ms计时,并在达到200次计数(即2秒)后切换LED灯的状态。通过设置时钟源、中断源、计数器初始值和中断处理函数,实现了精确的定时功能。注意在计算定时时间时需考虑分频和计数值。

最低0.47元/天 解锁文章
4424

被折叠的 条评论
为什么被折叠?



