当前位置:首页 > 单片机 > 单片机
[导读]使用定时器来计时,每隔1s让led等发生变化:#include#include "Config.h"int count =0;int a;void Port_Init(){LED8DIR = 0xff;//设置IO口方向为输出}void TIMERA_Init(void)//连续计数模式,计数到0XFFF{TACTL |= T

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

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭