430f149的定时器A的中断程序
扫描二维码
随时随地手机看文章
使用定时器来计时,每隔1s让led等发生变化:
#include
#include "Config.h"
int count =0;
int a;void Port_Init()
{
LED8DIR = 0xff;//设置IO口方向为输出
}
void TIMERA_Init(void)//连续计数模式,计数到0XFFF
{TACTL |= TASSEL1 + TACLR + ID0 + ID1 + MC0 + TAIE;//SMCLK做时钟源,8分频,增加计数
模 式,开中断smclk/分频=8/8=1M;
TACCR0 = 9999;//定时100ms进行一次中断,1M/(9999+1)=100ms
}
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV)//需要判断中断的类型
{
case 2:break;
case 4:break;
case 10:count++;break;//设置标志位,CCR0中断标志
}
a=count/100;
if(a>8)
{
count =0;
a=0;
}
switch(a)
{
case 0:LED8=0xff; break;
case 1:LED8=0xfe; break;
case 2:LED8=0xfc;break;
case 3:LED8=0xf8;break;
case 4:LED8=0xf0;break;
case 5:LED8=0xe0;break;
case 6:LED8=0xc0;break;
case 7:LED8=0x80; break;
case 8:LED8=0x00;break;
}
}
void main(void)
{
WDT_Init();
Clock_Init();//时钟初始化
TIMERA_Init();
Port_Init();//端口初始化,用于控制IO口输入或输出
_EINT();
}