430f149的定时器A的中断程序
来源:互联网 发布时间:2018-12-24 分享至微信


使用定时器来计时,每隔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();

}




[ 新闻来源:互联网,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!