这个啊,说到底简单啊。随便就能说出几个方法来。
1、你用定时器,定时时间为1/1000000=1us,打开定时器中断,每进一次中断就取反一次输出,就行了。
2、推荐用430自带的PWM输出功能。需要有8M的外部高频时钟源。PWM占空比设为50%就可以了。
=========================================
推荐用第二种,因为自带的定时器A的PWM功能,其输出是在后台执行的,主函数中只要初始化就行了。
参考代码:
void main()
{
unsigned int i;
BCSCTL1&=~XT2OFF; //开启高频振荡器8M
do
{
IFG1 &=~OFIFG;
for(i=0xff;i>0;i--);
}
while((IFG1 & OFIFG)!=0); //消除振荡器失效标志
BCSCTL2|=SELS; //选择AMCLK时钟的频率为8M;
TACTL=TASSEL1+TACLR; //选择PWM产生的时钟源为AMCLK
CCTL2=OUTMOD_7;
CCR0=4; //设置输出频率为8MHz/4=2MHz
CCR2=2; //设置占空比
P1DIR|=0X08;
P1SEL|=0X08;
TACTL|=MC0;
while(1);
}
|