cc2530裸机编程系列笔记2--定时器Timer1模模式程序 中断方式

发布者:fuehrd努力的最新更新时间:2019-09-04 来源: eefocus关键字:cc2530  裸机编程  定时器  中断方式 手机看文章 扫描二维码
随时随地手机看文章

上篇专题中描述的是采用查询的方式完成定时器Timer1模模式程序的设计,本篇则介绍采用中断的方式完成定时器Timer1模模式程序的设计。查询的方式,上篇已经介绍过就是在主程序中不断的查询中断标志是否被置位,置位后则进行相应处理。中断的方式则为,当中断产生时,CC2530在硬件的作用下将程序跳转到中断中断服务程序去执行。先贴出中断方式的程序:


#include

 

#define uint8  unsigned char

#define uint16 unsigned int

#define BIT(x) (1 << x)

 

#define LED1 P1_0

 

/****************************/

//函数声明

/****************************/

void initial(void);

 

 

/**************************************/

//主函数

/**************************************/

 

void main(void)

{

  initial();

  

  while(1)

  {

 

  }

}

 

/****************************/

//初始化函数

/****************************/

void initial(void)

{

  /*设置P1.0为输出模式*/

  P1DIR ^= BIT(0);

  

  /*关闭LED1*/

  LED1 = 1;

  

  /*选择外部石英晶振*/

  CLKCONCMD &= ~0x40; 

  

  /*等待晶振稳定*/

  while(!(SLEEPSTA & 0x40));   

  

  /*TICHSPD二分频,CLKSPD不分频*/

  CLKCONCMD &= ~0x47; 

  

  /*关闭RC振荡器*/

  SLEEPCMD |= 0x04; 

 

  

  /*设置定时器T1,128分频,模模式,从0计数到T1CC0*/

  T1CTL |= 0x0E;            

  

  /*装入定时器初值(比较值)*/

  T1CC0L = 62500%256;

  T1CC0H = 62500/256;  

  

  /*设置捕获比较通道0为比较模式,用以触发中断*/

  T1CCTL0 ^=BIT(2);      

  

  /*使能Timer1中断*/

  T1IE = 1;    

  

  /*开启总中断*/

  EA = 1;              

}

 

/****************************/

//定时器1中断函数

/****************************/

#pragma vector = T1_VECTOR

__interrupt void T1_ISR(void)

{

  LED1 = !LED1;

}

关键字:cc2530  裸机编程  定时器  中断方式 引用地址:cc2530裸机编程系列笔记2--定时器Timer1模模式程序 中断方式

上一篇:cc2530裸机编程系列笔记3--定时器Timer1自由模式程序
下一篇:cc2530裸机编程系列笔记4--GPIO口的使用

推荐阅读最新更新时间:2024-10-30 13:50

STM32之定时器的一般应用
STM32系列芯片拥有最少3个、最多8个16位的定时器,这是定时器通过可编程预分频器驱动的16位自动装载计数器构成。 定时器的主要功能有如下几个大点: 1.16位向上、向下、向上/向下自动装载计数器。 2.16位可编程预分频器。 3.4个独立通道(输入捕获,输出比较,PWM生成,单脉冲模式输出)。 4.使用外部信号控制定时器和定时器互连的同步电路。 5.如下事件发生时产生中断/DMA(更新,触发事件,输入捕获,输出比较等)。 tips:高级定时器1和8还具有死区时间可编程的互补输出。 在学习定时器的时候,许多的底层问题,我们可以参考相应的参考手册,这里主要介绍定时器固件库函数的使用。 1.TIM_DeInit函数的功能是将外设TI
[单片机]
无线传感器网络时间同步协议的实现
    本文主要是以高速运动目标的监测系统为研究背景,该监测系统是将多个ZigBee节点布设在监测区域(移动目标可能出现的区域),其中心节点和路由节点一直处于丁作状态;其他的节点在没有任务时,设定唤醒时间后进入休眠状态。最终各个传感器节点通过不同跳转路径将数据汇总到中心节点,由中心节点进行处理或者通过网关将数据传送到其他设备再进行处理。整个系统的网络示意图如图1所示。     本系统中由于目标的运动速度非常高,目标的具体位置和状态需要由多个ZigBee节点共同协作来工作,所以针对系统的时间同步研究是非常的重要。而导致时间同步的因素很多,除了发送时间、访问时间、传送时间、传播时间、接收时间、接受时间会影响网络时间的同步,还有就是
[嵌入式]
PIC16F877定时器0的查询方式调试
PIC16F877单片机定时器0的查询方式调试程序如下: #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void init(void); uint intnum; void main(void) { init(); while(1) { if(T0IF) { T0IF = 0; if(++intnum =1953) { intnum = 0; RD0 = !RD0; } } } } void init(void) { TRISD =
[单片机]
51单片机定时器模式2与波特率的应用
这里我们主要说的是波特率和定时器2的应用。 一般来说,我们串口通讯用到的都是异步串行通讯,工作的方式为方式1. 方式1即为发送一个完整的信号为10个bit.起始信号为低电平,终止信号为高电平,串口通讯的两根线在平常时候都是处于高电平状态,当一旦有数据要进行转发的时候,电平拉低,通讯芯片马上对信号进行监听。这样子就能正常收发数据了。 一般来说,我们都是采用定时器1的模式2(自动重装模式)来作为波特率发生器的,同理,定时器1的中断也就被我们遗弃了,因为为了波特率产生的时候不会受到干扰(如果定时器1有中断函数,那么处理中断函数会关闭定时器1中断,这时候波特率发生器就处于关闭状态了)。根据STC给我们的文档,定时器1所具有的功
[单片机]
51单片机<font color='red'>定时器</font>模式2与波特率的应用
c51: 串口中断方式,收发字符串
/* 程序设计功能: 1.参数 f=12MHZ,baud=1200 2.串口中断方式:发送字符串存放字符数组tran_buf 中,接收字符串存放字符数组rec_buf 中。 2.发送字符串由16位键盘控制。由T2定时中断,每10ms扫描一次键盘。不同按键发送不同字符串。 */ #include reg52.h #include string.h #define uchar unsigned char //发送字符串缓存 uchar tran_buf ; //接收字符串缓存 uchar rec_buf ; uchar tnum=0; uchar rnum=0; //串口初始化
[单片机]
理解单片机中的计数器和定时器
一、计数概念的引入 从选票的统计谈起:画“正”。这就是计数,生活中计数的例程处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例程,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的办法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就能知道走过的线有多长了。 二、计数器的容量 从一个生活中的例程看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计
[单片机]
理解单片机中的计数器和<font color='red'>定时器</font>
STM32定时器的应用
一: 定时器简介 1:高级定时器 计数方式(向上,向下)、预分频值 1—65532、四通道,输出输入捕获,PWM互补输出 2:普通定时器 计数方式(向上,向下)、预分频值 1—65532、四通道,输出输入捕获 3:基本定时器计数方式(向上 )、预分频值 1—65532、 二:定时器配置方法步骤: 在配置前我们要添加定时器的库函数 stm32f10x_tim.c 1:配置中断向量表 2:配置定时器时钟 3:配置定时器 4:使能定时器 5:使能中断 三:事例分析(定时中断3) 1:配置中断向量表 void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_Init
[单片机]
IMX6ULL裸机-1-RTC定时器
1 引入RTC定时器 RTC定时器被叫做实时时钟(real time clock)。 CPU内部有很多定时器,像看门狗WDT,PWM定时器,高精度定时器Timer等等, 只在“启动”即“通电时”运行,断电时停止。当然,如果时钟不能连续跟踪时间,则必须手动设置。那么当关机后就没办法自动计数统计时间了。 定时器的本质就是计数器,有向上计数,也有向下计数。RTC有一个与主机单独分离的电源,如纽扣电池(备用电池),即使主机电源关闭,它也保持计数定时功能。这也是为什么我们手机关机后时间还能保持准确。再比如以前的老诺基亚手机,拆掉电池就时间不准了,因为rtc电源被切断了,无法在计数,RTC定时器的计数器会被清0,需要手动设置当前时间。 RTC
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved