我是靠谱客的博主 清爽寒风,最近开发中收集的这篇文章主要介绍CC2530————T1定时器正计数/倒计数模式采用中断方式控制LED灯宏定义初始化中断主函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

CC2530————T1定时器正计数/倒计数模式采用中断方式控制LED灯

  • 宏定义
  • 初始化
  • 中断
  • 主函数

宏定义

# 主函数
/**************************************/
/*         CC2530例程             */
/*例程名称:定时器(中断方式)        */
/*描述:通过定时器T1中断方式控制LED1周期性闪烁
**************************************/
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0	   //定义LED1为P1_0口控制

uchar count=0;

//函数声明
void InitLed(void);		//初始化P1口
void InitT1();                  //初始化定时器T1
//初始化程序
/*****************************/

初始化

void InitLed(void)
{
    P1DIR |= 0x01;    //P1_0定义为输出
    LED1 = 0;       //LED1灯初始化熄灭
}
//定时器初始化
void InitT1() //系统不配置工作时钟时默认使用内部RC振荡,即16MHz
{
  T1CTL = 0x0F;  //128分频,正计数/倒计数模式,计数值由T1CC0L和T1CC0H确定
  T1CC0L=0x12;
  T1CC0H=0x7A;
  //T1OVFIM=1;
  T1IE=1;
  EA=1;
  //T1STAT= 0x21;          //通道0, 中断有效   
}

中断

/***************************
* 函数名称:T1_INT
 * 功    能:定时器1中断处理函数
 * 入口参数:无
 * 出口参数:无
 * 返 回 值:无
***************************/
#pragma vector=T1_VECTOR
__interrupt void T1_INT(void)
{
   T1STAT&=~0x21;
   ++count;
   if(count == 3)   //如果溢出次数到达3说明经过了1.5秒
   {
      LED1 = 1;        //点亮LED1
   }
   if(count == 4)   //如果溢出次数到达4说明经过了2秒
   {
      LED1 = 0;        //熄灭LED1
      count=0;
   }
}

主函数

/***************************
* 函数名称:main
 * 功    能:main函数入口
 * 入口参数:无
 * 出口参数:无
 * 返 回 值:无
***************************/
void main(void)
{
    InitLed();		//调用初始化函数
    InitT1();
    while(1)
    {       
      
    }
}

最后

以上就是清爽寒风为你收集整理的CC2530————T1定时器正计数/倒计数模式采用中断方式控制LED灯宏定义初始化中断主函数的全部内容,希望文章能够帮你解决CC2530————T1定时器正计数/倒计数模式采用中断方式控制LED灯宏定义初始化中断主函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部