MSP430F5529 程序没有看明白,求中文注释。主要目的是为了完成频率改变,谢谢~~

/******************
* 按键改变频率控制字
******************/
void key_scan(void)
{
if((P2IN & 0x04) == 0x04) //如果P2.2=1
{
key_press = 0;
key_flag = 0;
} //扫描初始化
else
{
if(!key_press)
{
key_press = 1;
flag_20ms = 0;
}
else if(flag_20ms)
{
if(!key_flag)
{
key_flag = 1;
if((P2IN & 0x04) != 0x04)
{
P8OUT ^= 0x02;
x+=2;
if(x == 250)
x = 60;
step = x;
}
}
}
}
}

第1个回答  2015-05-15
您好,这样的:
/*首先将WDT设为定时器功能。而中断服务子程序则是把WDT改为看门狗功能。这样就通过中断控制的周期性的重启程序,实现了LED闪烁*/
/*注意,这里默认的时钟源不是32KHZ,而是内部的DCO-SMCLK(之后会讲到)1.045MHZ。所以前面WDTIS定义的时间大约都要缩小1045/32=32倍*/

#include <msp430.h>
void main(void)
{
/*清零-设定为计数器-时间设定为010模式,即256S/32=8S*/
WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS1;
__enable_interrupt(); //开总中断
SFRIE1|=WDTIE; //开看门狗定时器中断
P1DIR=0xff;
int i,j;
P1OUT=0xff;
for(i=0;i<30000;i++)
for(j=0;j<50;j++); //延时约8S
P1OUT=0x00;
while(1);
}

/*中断服务程序*/
#pragma vector=WDT_VECTOR
__interrupt void WatchTimer(void)
{
WDTCTL=WDTPW+WDTCNTCL+WDTIS1; //看门狗模式,时间设定约为8S
}
相似回答