×
嵌入式 > 技术百科 > 详情

定时器中断实验

发布时间:2020-09-22 发布时间:
|
///////////////////////////////////////////////////////////////////

//   msp430G2553的定时器中断控制LED每秒钟进行亮熄变化

///////////////////////////////////////////////////////////////////

#include
void led_init();
void timer_init();
void delay(int);
//----------------------------------
void led_init()
{
  P1DIR|=(1<<6); //P1.6为LED
}
//--------------------------
void timer_init()
{
  TACCR0 =2500;  //计到2500,约20ms
  TACTL = TASSEL_2+ID_3+MC_1+TACLR;  //设置TIMERA的时钟源为SMCLK(1M),8分频后(125K),计数模式为up,到CCR0再自动从0开始计数
  TACCTL0 |= CCIE;                             // CCR0 interrupt enabled
}
//--------定时器中断函数------------
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A(void)
{
  //TACCTL0&=~ CCIE; //关中断
  static int cc=0;
  cc+=1;
  if(cc==50)  //1s=1000ms=20*50 定时
  {
   P1OUT^=(1<<6); //P1.6 LED取反
   cc=0;
  }
}
//--------延时函数 -------
void delay(int n)
{
  unsigned char temp = 0;
 unsigned int i=0;
 for(i=0;i
 {
   for(temp=0;temp<33;temp++);
 }
}
//************主函数***************************
void main()
{
 
  WDTCTL = WDTPW + WDTHOLD;          // Stop WDT
  BCSCTL1 = CALBC1_1MHZ;
  DCOCTL = CALDCO_1MHZ;
 
  led_init();
  timer_init();  
   _BIS_SR(GIE);              //开总中断
  for(;;)
  {
   ;
  }
}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题