CC2530定时器1计数和端口1中断综合应用

#include
#define KEY P1_1
#define LED P1_4
int count=0;
void delay(int xms)
{
  int i,j;
  for(i=0;i     for(j=555;j>0;j--);
}
void KeyInit()
{
  IEN0 |=0x80;//总的中断使能
  IEN2 |=0x10;//端口1中断使能
  //IRCON2 &=~0x08;//端口1中断标志清除
  //P1DIR &=~0x02;//key为输入
  PICTL |=0x02;//端口1上升沿触发中断
  P1IEN |=0x02;//key中断使能
  //P1IFG &=~0x20;//key中断标志清除
}
void LedInit()
{
  P1DIR |=0x10;//led为输出
}
void TimerInit()
{
  T1CTL=0x0d;//128分频,自由运行模式
  T1STAT=0x21;//通道0,中断有效
}
void main()
{
  KeyInit();
  LedInit();
  TimerInit();
  while(1)
  {
    if(IRCON>0)//定时器1中断标志,定时器1溢出的标志
    {
      IRCON=0;//定时器1溢出标志清除
      count++;
      if(count==1)
      {
        LED=~LED;
        count=0;
      }
    }
  }
}
#pragma vector = P1INT_VECTOR
__interrupt void ledd(void)
{
  LED=1;
  delay(1000);
  IRCON2 &=~0x08;//端口1中断标志清除
  P1IFG &=~0x02;//key中断标志清除
}

你可能感兴趣的:(CC2530)