欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

cc2530之定时器1(*模式,中断模式)

程序员文章站 2022-06-09 19:28:44
...

1、查看中断图
cc2530之定时器1(*模式,中断模式)
2、配置定时器1
cc2530之定时器1(*模式,中断模式)

T1CTL = 0x0d;	//设置为128分频,选择*运行模式

cc2530之定时器1(*模式,中断模式)
cc2530之定时器1(*模式,中断模式)

TIMIF = 0x40; //设置了 TIMIF.OVFIM,让定时器1产生中断

cc2530之定时器1(*模式,中断模式)

IRCON = 0x00; //清理中断标志位
EA = 1; //打开总中断
T1IE = 1; //打开定时器T1中断

3、总体代码

#include<ioCC2530.h>

#define D3LED P1_0
#define D4LED P1_1

#define LedOpen 1
#define LedClose 0

int times = 0;      //产生中断的次数
void delay(int ms)  //延时函数
{
  int i,j;
  for(i=0; i<ms; i++)
    for(j=0; j<120; j++);
}

void initT1()
{
  T1CTL = 0x0d;	//设置为128分频,选择*运行模式
  TIMIF = 0x40; //设置了 TIMIF.OVFIM,让定时器1产生中断
  EA = 1; //打开总中断
  T1IE = 1; //打开定时器T1中断
  IRCON = 0x00; //清理中断标志位
}

void initLED()
{
  P1SEL |= 0x00;      //设置为通用io模式
  P1DIR |= 0x03;      //设置成输出状态
  D3LED = LedClose;	//灯的初始状态是关闭的
  D4LED = LedClose;
}

void main()
{
  initLED();	//初始化led灯
  initT1();	   //初始化定时器1
  while(1)
  {
    switch (times)
    {
      case 1:
        D3LED = !D3LED;		//灯3亮
        D4LED = !D3LED;		//灯4灭
        break;
      case 2:
        D3LED = LedOpen;	//亮
        D4LED = LedOpen;	//亮
        break;
      case 3:
        D3LED = LedClose;	//灭
        D4LED = LedClose;	//灭
        break;
    }
  }
}

#pragma vector = T1_VECTOR	//Timer1中断向量
__interrupt void T1(void)
{
  IRCON = 0x00; //清理中断标志位
  times++;
  if(times == 4)
    times = 1;
}
相关标签: cc2530