打印

msp430产生一定数量的方波程序

[复制链接]
1856|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feel123|  楼主 | 2012-5-31 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本段程序主要用在msp430控制40k超声波测距的产生一定的pwm波形来控制触发超声波探头来发送和接收。
此部分只做超声波驱动程序。
#include<msp430f149.h>
unsigned int i;
void int_clk()
{
  unsigned int iq0;
  BCSCTL1 &=~XT2OFF;                    //打开时钟振荡器
   do
   {
      IFG1 &= ~OFIFG;   // 清除振荡器失效标志
  for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振
   }
   while ((IFG1 & OFIFG) != 0);  // 判断XT2是否起振
   BCSCTL2 |=SELM_2 + SELS;             //MCLK,SMCLK时钟为XT2
}
void timera0(void)                     //定时器a设置
{
  TACCTL0 |= CCIE;                     
  TACCR0 = 200;                        //设置周期8m/200=40k
}
void timera1(void)                    //定时器b设置
{
  P1SEL |= BIT2;
  P1DIR |= BIT2;
  TACCTL1 |= OUTMOD_7;                //pwm输出模式7
  TACCR1 = 100;                        //设置占空比为50%
}
void main()
{
  WDTCTL = WDTPW + WDTHOLD;
  int_clk();
  TACTL = TASSEL_2 + MC_1;
  timera1();
  timera0();
  _EINT();
  while(1);
}
#pragma vector = TIMERA0_VECTOR
__interrupt void timera0_isr(void)
{
  i++;
  if(i==10)                           //产生10个方波之后将占空比调整                                    为100%
  {
   TACCR1 = 215;                       //此处设置为215也是为了让其有点                                       延时保持最终输出高电平
   CCTL0 &=~ CCIE;
  }
}

相关帖子

沙发
Linda_008| | 2012-6-16 15:37 | 只看该作者
40K超声波,倒车雷达

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

94

帖子

0

粉丝