使用定時器來計時,每隔1s讓led等發(fā)生變化:
#include
#include "Config.h"
int count =0;
int a;void Port_Init()
{
LED8DIR = 0xff;//設(shè)置IO口方向為輸出
}
void TIMERA_Init(void)//連續(xù)計數(shù)模式,計數(shù)到0XFFF
{TACTL |= TASSEL1 + TACLR + ID0 + ID1 + MC0 + TAIE;//SMCLK做時鐘源,8分頻,增加計數(shù)
模 式,開中斷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;//設(shè)置標志位,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();
}