完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
#include #define D1 P1_0 #define D2 P1_1 #define SW1 P1_2 int count = 0;//用于定时器计数,每进入中断一次计数值+1 void Init_Port() { P1SEL &= ~0X07; P1DIR |= 0X03; P1DIR &= ~0X04; P1 &= ~0X03; } void Init_Tiner1() { //*********************************** T1CC0L = 0XD4;//1.写入最大计数值低8位 T1CC0H = 0X30;//写入最大计数值高8位 //*********************************** T1CCTL0 |= 0X04;//2.开启通道0的比较模式 T1CTL = 0X0E; //3.设置定时器1的分频系数和工作模式 T1IE = 1;//4.使能定时器1中断 EA = 1; //5.使能总中断 } #pragma vector = T1_VECTOR __interrupt void T1() { count++; } void main() { Init_Port(); Init_Tiner1(); while(1) { if(count == 5)//计数值为5的时候,也就是0.5s的时候打开灯 { D1 = 1; D2 = 1; } if(count == 10)//计数值为10的时候,也就是1s的时候关闭灯 { D1 = 0; D2 = 0; count = 0;//将计数值清空,为下一轮做准备 } } } 这串代码实现的是0.1s的定时器中断,0.5s切换一次灯的亮灭状态 这里为大家介绍一下定时器的原理和功能 一、定时/技术器的基本原理 定时/计数器,是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向CPU提出中断处理请求,从而实现定时或者计数功能的外设。 定时/计数器的最基本工作原理是进行计数。不管是定时器还是计数器,本质上都是计数器,可以进行加1(减1)计数,每出现一个计数信号,计数器就会自动加1(自动减1),当计数值从0变成最大值(或从最大值变成0)溢出时,定时/计数器就会向CPU提出中断请求。 二、CC2530的定时/计数器 CC2530共有5个定时/计数器,其中定时器1是一个16位的定时器,为CC2530中功能最全的一个定时/计数器,在 应用中应优先选用。定时器1的工作模式有三种: <1> 自由运行模式:计数器从0x0000开始,在每个活动 时钟边沿增加1,当计数器达到0xFFFF时溢出,计 数器重新载入0x0000并开始新一轮的递增计数。该 模式的计数周期是固定值0xFFFF,当达到最终计数 值0xFFFF时,标志位T1IF和OVFIF被设置。 <2> 模模式:计数器从0x0000开始,在每个活动时钟边 沿增加1,当计数器达到T1CC0寄存器保存的值时 溢出,计数器又将从0x0000开始新一轮的递增计数, 模模式的计数周期可由用户自行设定。 <3> 正计数/倒计数模式:计数器反复从0x0000 开始,正计数到TICC0保存的最终计数值,然后再倒计数回0x0000,当达到最终计数值时,标志位T1IF和OVFIF被设置。 三、CC2530的定时/计数器中断系统 定时器有3种情况能产生中断请求: <1> 计数器达到最终计数值(溢出或回到零)。 <2> 输入捕获事件。 <3> 输出比较事件(模模式时使用)。 使用模模式要特别注意,需要开启通道0的输出比较模式,否则计数器的 值达到T1CC0后,是不会产生溢出中断的。 简单概括定时器初始化的方法和原理 <1> 将定时器1的最大计数值写入T1CC0。 <2> 通过T1CCTL0寄存器开启定时器1通道0的输出比较模式。 <3> 设置定时器1的相关中断控制位。 <4> 设置分频系数和工作模式并启动定时器。 定时器计数值的计算 最大计数值=定时时长/定时器计数周期 0.1s = ————— 1/16M*128 =12500 = 0x30D4 写几个常用的给大家 30D4是0.1s 7A12是0.25s F424是0.5s |
|
|
|
只有小组成员才能发言,加入小组>>
3280 浏览 9 评论
2958 浏览 16 评论
3460 浏览 1 评论
9004 浏览 16 评论
4052 浏览 18 评论
1115浏览 3评论
573浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
571浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2303浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:05 , Processed in 1.175160 second(s), Total 51, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号