430f149的定時(shí)器A的中斷程序
使用定時(shí)器來(lái)計(jì)時(shí),每隔1s讓led等發(fā)生變化:
#include
#include "Config.h"
int count =0;
int a;void Port_Init()
{
LED8DIR = 0xff;//設(shè)置IO口方向?yàn)檩敵?br/>}
void TIMERA_Init(void)//連續(xù)計(jì)數(shù)模式,計(jì)數(shù)到0XFFF
{TACTL |= TASSEL1 + TACLR + ID0 + ID1 + MC0 + TAIE;//SMCLK做時(shí)鐘源,8分頻,增加計(jì)數(shù)
模 式,開(kāi)中斷smclk/分頻=8/8=1M;
TACCR0 = 9999;//定時(shí)100ms進(jìn)行一次中斷,1M/(9999+1)=100ms
}
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV)//需要判斷中斷的類(lèi)型
{
case 2:break;
case 4:break;
case 10:count++;break;//設(shè)置標(biāo)志位,CCR0中斷標(biāo)志
}
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();//時(shí)鐘初始化
TIMERA_Init();
Port_Init();//端口初始化,用于控制IO口輸入或輸出
_EINT();
}