程序求修改

来源:互联网 发布:unity 模型 优化 插件 编辑:程序博客网 时间:2024/06/08 19:14

#include <msp430x14x.h>
#define   uint  unsigned int
#define   uchar unsigned char
static uchar adc_flag1=1;
static uchar adc_flag2=1;
 
uint AD_TEMP0=0;
uint AD_TEMP1=0;
int A[99]=[0.00,0.08,0.16,0.24,0.32,0.40,0.48,0.56,0.64,0.72,0.80,0.88,0.96,1.04,1.12,1.20,1.28,1.36,1.44,1.52,1.60,1.68  ,1.76,1.84,1.92,2.00,1.92,1.84,1.76,1.68,1.60,1.52,1.44,1.36,1.28,1.20,1.12,1.04,0.96,0.88,0.80,0.72,0.64, 
0.56,0.48,0.40,0.32,0.24,0.16,0.08,0.00,-0.08,-0.16,-0.24,-0.32,-0.4,-0.48,-0.56,-0.64,-0.72,-0.80,-0.88,-0.96,-1.04,-1.12
,-1.20,-1.28,-1.36,-1.44,-1.52,-1.60,-1.68,-1.76,-1.84,-1.92,-2.00,-1.92,-1.84,-1.76,-1.68,-1.60,-1.52,-1.44,-1.36,-1.28,-1.20,-1.12,-1.04,-0.96,-0.88,-0.80,-0.72,-0.64,-0.56,-0.48,-0.40,-0.32,-0.24,-0.16,-0.08];
void int_clk()
{
    uchar i;
    BCSCTL1&=~XT2OFF;            //打开XT振荡器
    BCSCTL2|=SELM1+SELS;          //MCLK 8M and SMCLK 1M 
    do
 {
        IFG1 &= ~OFIFG;                                       
        for(i = 0; i < 100; i++)
        _NOP();                             
 }
while ((IFG1 & OFIFG) != 0);            
IFG1&=~OFIFG;
}
void  int_adc()

  P6SEL|=0x03;                         
  ADC12CTL0|=ADC12ON+MSC+SHT0_2+REF2_5V+REFON;
  ADC12CTL1|=SHP+CONSEQ_1;       
  ADC12MCTL0=INCH_0; 
  ADC12MCTL1=INCH_1+EOS;
  ADC12IE|=0x02;                   // 使能转换中断 
  ADC12CTL0|=ENC;                  // 使能AD转换器 
}
void  int_pwm()
{
int n;
for (n=0;n<100;n++)
{
if ( AD_TEMP1- AD_TEMP0- A[n]==0)
  { 

    }
else if (AD_TEMP1- AD_TEMP0>A[n])
    {
P1OUT|=BIT1;
P1OUT|=BIT2;  
     }
else if (AD_TEMP1- AD_TEMP0<A[n])
     {
P1OUT|=BIT0;
P1OUT|=BIT3;
    }
}
}
#pragma vector=ADC_VECTOR                             
__interrupt void ADC12ISR (void)
{
  AD_TEMP0=ADC12MEM0;
  AD_TEMP1=ADC12MEM1;
             //设置ADC转换完标志,并且读取ADC值
  int_pwm();
  adc_flag1=1;
  adc_flag2=1;
 
}
void  main( void )

  WDTCTL=WDTPW+WDTHOLD;                     
  P1DIR |= BIT0;
  P1DIR |= BIT1;
  P1DIR |= BIT2;
  P1DIR |= BIT3;
  int_clk();                                         
  int_adc();    
  _EINT();                                        //使能中断
  while(1)
  {
    while(adc_flag1==1||adc_flag2==1)
    {     
       ADC12CTL0 |= ADC12SC;                     // 开启转换
       adc_flag1=0;
       adc_flag2=0;
       
    }
  }                    
}

原创粉丝点击