#include <ioCC2530.h>
#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

CC2530使用定时器实现灯的闪烁,计数器原理和应用相关推荐

  1. 用定时器控制灯的闪烁梯形图_三菱PLC设计报警及灯光闪烁

    三菱PLC设计要求: 根据要求设计一个报警器,要求当条件x1=0N满足时蜂鸣器鸣叫,同时报警灯连续闪烁16次,每次亮2s,熄灭3s,此后停止声光报警. 操作步骤如下: 1. 设计电路分析    报警灯 ...

  2. 用定时器控制灯的闪烁梯形图_用西门子PLC设计灯的闪烁的梯形图,就只要梯形图。...

    展开全部 使用特32313133353236313431303231363533e58685e5aeb931333431373235殊标志寄存器即可实现你想要的功能,如果想要设计出亮的时间固定.灭的时 ...

  3. Holtek合泰单片机 《四》 从TM定时器中断到led灯1s闪烁

    跳过中断直接讲TM中断是不是有些超前了? 由于最近参加了一个项目,真是忙的不要不要的,没办法,只有抽了点放假的时间来更新下自己的博文,希望对正在学习HT单片机的同学有帮助. 重庆合泰初赛是5月15日, ...

  4. CC2530————通过定时器T1查询方式控制LED1周期性闪烁(模模式)

    CC2530----通过定时器T1查询方式控制LED1周期性闪烁(模模式) 宏定义与函数声明 初始化 主函数 宏定义与函数声明 /*********************************** ...

  5. STM32之定时器中断控制LED闪烁

    上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...

  6. CC2530串口控制LED灯奇怪玩法

    CC2530串口控制LED灯奇怪玩法 实验目的:CC2530用串口从上位机发送16进制命令代码来控制LED3.4.5.6并返回相应动作 文章目录 CC2530串口控制LED灯奇怪玩法 一.串口设置 二 ...

  7. CC2530的定时/计数器原理与应用

    目录 1.定时计数器的基本原理 2.CC2530的定时/计数器 2.1.定时器1的工作原理 2.2.定时器1的三种工作模式 3.CC2530的定时/计数器中断系统 3.1.定时器1的最大计数值和计算与 ...

  8. 第二节:delay()延时实现LED灯的闪烁。

    第二节:delay()延时实现LED灯的闪烁. 开场白:     上一节鸿哥列出了初学者七大误区,到底什么才是初学者关注的核心?那就是裸机奔跑的程序结构.一个好的程序结构,本身就是一个微型的多任务操作 ...

  9. 跟着吴坚鸿学单片机——第2天:delay()延时实现LED灯的闪烁

    原文链接:delay()延时实现LED灯的闪烁. 文章目录 原文 读后感 自我练习 原文 第二节:delay()延时实现LED灯的闪烁. 开场白: 上一节鸿哥列出了初学者七大误区,到底什么才是初学者关 ...

最新文章

  1. 互联网架构师必备技能
  2. 计算机基础知识教程职称怎么计算,2017年职称计算机考试基础知识教程详解(二十)...
  3. linux内核配置参考,[转]Linux内核配置选项 参考(3)
  4. 使用literal语法格式化字符串
  5. 优先级队列 c语言,使用最小堆使用优先级队列(c语言版本)
  6. 【Linux系统编程学习】Linux线程控制原语
  7. 为什么铺天盖地都是 Python 的广告?
  8. 2014蓝桥杯:地宫取宝(DFS详解)
  9. 【Android】ArcFaceDemo
  10. VM 与 与 Linux 的安装
  11. fg、bg、jobs、、nohup、ctrl + z命令
  12. 实地测试电源模块性能
  13. 电子与电工技术实验——集成运算放大器的应用
  14. Unity3D自带例子AngryBots的分析
  15. 宝利通视频会议常见故障
  16. 3D游戏角色建模设计这样做,模型满分!
  17. 【汇正财经】企业资本的具体形式
  18. 计算机各种硬盘的规格,PS4硬盘基本规格和普通电脑硬盘有何区别?具体解析一览...
  19. android 处理home键,android处理home键的方法
  20. OA系统:实现签到签退功能

热门文章

  1. python--import statsmodels.api as sm报错: cannot import name 'factorial'解决方法
  2. 爱尔兰B计算器的MFC实现
  3. 关于POI合并单元格后加边框问题,请大家拍砖
  4. ansys如何删除线,ansys删除体留下的线
  5. 有道云生成html,有道云笔记添加收藏功能实现原理
  6. java socket 设置 ttl_嵌入式 socket编程设置TTL
  7. 迪赛智慧数——柱状图(多色柱状图):近十年上榜中国最具幸福感城市次数
  8. 日常生活英语单词大全(转)
  9. python基础游戏之井字棋(讲解)
  10. Linux环境下Risk of rain 2(雨中冒险2)服务器搭建