#include <msp430f5529.h> #define uint unsigned int #define uchar unsigned char unsigned int a[32],b[4]; unsigned int i=50,j=50; void delay(uint z); void pwm(); void circle(); void main( void ) { P1OUT=0x00; WDTCTL = WDTPW + WDTHOLD; UCSCTL4&=0x0000; pwm(); while(1) { ADC12CTL0=ADC12SHT0_2+ADC12ON+ADC12TOVIE; /* 16 x ADC10CLKs *//* ADC10 On/Enable*//* ADC10 Interrupt Enalbe */ ADC12CTL0|=0x0020; /* Reference generator on 0 Reference off 1 Reference on */ ADC12CTL1=ADC12INCH_6; /* Selects Channel 1 */ ADC12CTL1|=ADC12CSTARTADD_6; /* ADC10 Analog Enable 0 */ ADC12CTL0|=ADC12ENC+ADC12SC;/*ADC10 Enable Conversion *//* ADC10 Start Conversion */ _bis_SR_register(CPUOFF+GIE); b[1]=ADC12MEM; delay(2); ADC12CTL0=ADC12SHT0_2+ADC12ON+ADC12TOVIE; ADC12CTL0|=0x0020; ADC12CTL1=ADC12INCH_7; ADC12CTL1|=ADC12CSTARTADD_7; ADC12CTL0|=ADC12ENC+ADC12SC; _bis_SR_register(CPUOFF+GIE); b[3]=ADC12MEM; delay(2); ADC12CTL0=ADC12SHT0_2+ADC12ON+ADC12TOVIE; ADC12CTL0|=0x0020; ADC12CTL1=ADC12INCH_12; ADC12CTL1|=ADC12CSTARTADD_12; ADC12CTL0|=ADC12ENC+ADC12SC; _bis_SR_register(CPUOFF+GIE); b[0]=ADC12MEM; delay(2); ADC12CTL0=ADC12SHT0_2+ADC12ON+ADC12TOVIE; ADC12CTL0|=0x0020; ADC12CTL1=ADC12INCH_13; ADC12CTL1|=ADC12CSTARTADD_13; ADC12CTL0|=ADC12ENC+ADC12SC; _bis_SR_register(CPUOFF+GIE); b[2]=ADC12MEM; delay(2); if(b[1]>b[3]) { if(b[1]-b[3]>150) { TA0CCR1=TA0CCR1+i; delay(300); i=i+3; } } if(b[3]>b[1]) { if(b[3]-b[1]>150) { TA0CCR1=TA0CCR1-i; delay(300); i=i+3; } } if(b[0]>b[2]) { if(b[0]-b[2]>150) { TA0CCR1=TA0CCR1+j; delay(300); j=j+3; } } if(b[2]>b[0]) { if(b[2]-b[0]>150) { TA0CCR1=TA0CCR1-j; delay(300); j=j+3; } } } } void pwm() { P2DIR|=BIT2; P2SEL|=BIT2; P2DIR|=BIT3; P2OUT|=BIT3; TA0CTL|= MC_1+TASSEL__SMCLK;/*Timer A Control *//* Timer A mode control: 1 - Up to CCR0 */ /* Timer A clocksource select: 2 - SMCLK */ TA0CCTL1 = OUTMOD_7;/* Timer A Capture/Compare Control 1 *//* PWM outputmode: 7 - PWM reset/set */ TA0CCR0 = 20000; TA0CCR1 = 1000 ; } void delay(uint z) { uint i,j; for(i=210;i>0;i--) for(j=z;j>0;j--); } #pragma vector=ADC12_VECTOR __interrupt void ADC12_ISR(void) { __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR) }
|