-
多谢提示啊,可以用了。头文件后面的注释没看,就自己瞎揣摩TI工程师的意思了,哎!真是非常感谢!
-
#include
unsigned char state = 0;
unsigned int count = 0;
unsigned int temp;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
P1SEL |= BIT6;
P1DIR |= BIT6 + BIT0;
P1OUT &= ~BIT0;
P1REN |= BIT3;
P1IE |= BIT3;
P1IES |= BIT3;
P1IFG &= ~BIT3;
TACTL |= MC_1 + TASSEL_2;
TA1CTL |= MC_1 + TASSEL_2 + ID_2;
TACCTL1 = OUTMOD_7;
TACCR0 = 1000;
TACCR1 = temp;
_BIS_SR(GIE);
// while(1);
_BIS_SR(LPM0_bits + GIE);
}
#pragma vector = PORT1_VECTOR
__interrupt void P1_EX(void)
{
if((P1IFG & BIT3) == BIT3) //只要一进这个中断,TACCR1就被还原到初始值了
{
P1IE &= ~BIT3;
TA1CCR0 = 5000;
TA1CCTL0 = CCIE;
P1IFG &= ~BIT3;
count++;
temp = TACCR1;
if(state == 0)
{
if(temp < 950)
temp += 50;
else
state = 1;
}
else
{
if(temp > 50)
temp -= 50;
else
state = 0;
}
TA0CCR1 = temp;
}
}
#pragma vector = TIMER0_A1_VECTOR
__interrupt void Timer_A1(void)
{
if((TA1CCTL0 & CCIFG) == CCIFG) //这个中断就一直进不来
{
if((P1IN & BIT3) == 0)
{
P1OUT ^= BIT0;
if(state == 0)
{
if(TACCR1 < 950)
TACCR1 += 50;
else
state = 1;
}
else
{
if(TACCR1 > 50)
TACCR1 -= 50;
else
state = 0;
}
}
TA1CCTL0 &= ~CCIFG;
}
P1IE |= BIT3;
TA1CCTL0 &= ~CCIE;
}
-
可是定义的是unsigned char,怎么就变成bit了呢?"/* */"前面的” :1“应该是定义的位数了吧?以前没看到过这样的定义,还是没全懂啊。
-
相当不错啊,不过担心会给山寨们提供大门啊。
-
可以免费申请学习板?求详情啊!
-
这个很正常啊,好多器件都有这方面的考虑,这才是一个优良产品所必备的一点人性化考虑
-
为什么这么多人想要看隐藏的内容呢?
-
顶啦
-
张晓林,貌似是我们学校的额,不过老师照样鼓励我们搞控制类的,应该不会有什么问题吧。