CC2530使用定时器实现灯的闪烁,计数器原理和应用
#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使用定时器实现灯的闪烁,计数器原理和应用相关推荐
- 用定时器控制灯的闪烁梯形图_三菱PLC设计报警及灯光闪烁
三菱PLC设计要求: 根据要求设计一个报警器,要求当条件x1=0N满足时蜂鸣器鸣叫,同时报警灯连续闪烁16次,每次亮2s,熄灭3s,此后停止声光报警. 操作步骤如下: 1. 设计电路分析 报警灯 ...
- 用定时器控制灯的闪烁梯形图_用西门子PLC设计灯的闪烁的梯形图,就只要梯形图。...
展开全部 使用特32313133353236313431303231363533e58685e5aeb931333431373235殊标志寄存器即可实现你想要的功能,如果想要设计出亮的时间固定.灭的时 ...
- Holtek合泰单片机 《四》 从TM定时器中断到led灯1s闪烁
跳过中断直接讲TM中断是不是有些超前了? 由于最近参加了一个项目,真是忙的不要不要的,没办法,只有抽了点放假的时间来更新下自己的博文,希望对正在学习HT单片机的同学有帮助. 重庆合泰初赛是5月15日, ...
- CC2530————通过定时器T1查询方式控制LED1周期性闪烁(模模式)
CC2530----通过定时器T1查询方式控制LED1周期性闪烁(模模式) 宏定义与函数声明 初始化 主函数 宏定义与函数声明 /*********************************** ...
- STM32之定时器中断控制LED闪烁
上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...
- CC2530串口控制LED灯奇怪玩法
CC2530串口控制LED灯奇怪玩法 实验目的:CC2530用串口从上位机发送16进制命令代码来控制LED3.4.5.6并返回相应动作 文章目录 CC2530串口控制LED灯奇怪玩法 一.串口设置 二 ...
- CC2530的定时/计数器原理与应用
目录 1.定时计数器的基本原理 2.CC2530的定时/计数器 2.1.定时器1的工作原理 2.2.定时器1的三种工作模式 3.CC2530的定时/计数器中断系统 3.1.定时器1的最大计数值和计算与 ...
- 第二节:delay()延时实现LED灯的闪烁。
第二节:delay()延时实现LED灯的闪烁. 开场白: 上一节鸿哥列出了初学者七大误区,到底什么才是初学者关注的核心?那就是裸机奔跑的程序结构.一个好的程序结构,本身就是一个微型的多任务操作 ...
- 跟着吴坚鸿学单片机——第2天:delay()延时实现LED灯的闪烁
原文链接:delay()延时实现LED灯的闪烁. 文章目录 原文 读后感 自我练习 原文 第二节:delay()延时实现LED灯的闪烁. 开场白: 上一节鸿哥列出了初学者七大误区,到底什么才是初学者关 ...
最新文章
- 互联网架构师必备技能
- 计算机基础知识教程职称怎么计算,2017年职称计算机考试基础知识教程详解(二十)...
- linux内核配置参考,[转]Linux内核配置选项 参考(3)
- 使用literal语法格式化字符串
- 优先级队列 c语言,使用最小堆使用优先级队列(c语言版本)
- 【Linux系统编程学习】Linux线程控制原语
- 为什么铺天盖地都是 Python 的广告?
- 2014蓝桥杯:地宫取宝(DFS详解)
- 【Android】ArcFaceDemo
- VM 与 与 Linux 的安装
- fg、bg、jobs、、nohup、ctrl + z命令
- 实地测试电源模块性能
- 电子与电工技术实验——集成运算放大器的应用
- Unity3D自带例子AngryBots的分析
- 宝利通视频会议常见故障
- 3D游戏角色建模设计这样做,模型满分!
- 【汇正财经】企业资本的具体形式
- 计算机各种硬盘的规格,PS4硬盘基本规格和普通电脑硬盘有何区别?具体解析一览...
- android 处理home键,android处理home键的方法
- OA系统:实现签到签退功能
热门文章
- python--import statsmodels.api as sm报错: cannot import name 'factorial'解决方法
- 爱尔兰B计算器的MFC实现
- 关于POI合并单元格后加边框问题,请大家拍砖
- ansys如何删除线,ansys删除体留下的线
- 有道云生成html,有道云笔记添加收藏功能实现原理
- java socket 设置 ttl_嵌入式 socket编程设置TTL
- 迪赛智慧数——柱状图(多色柱状图):近十年上榜中国最具幸福感城市次数
- 日常生活英语单词大全(转)
- python基础游戏之井字棋(讲解)
- Linux环境下Risk of rain 2(雨中冒险2)服务器搭建