#includemsp430g2553.h#defineCPU_F((double)1000000)#definedelay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))#definedelay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))unsignedcharcount,count1;unsignedinttemp=0,temp1=0;voidkey1_init(void){P1REN|=BIT3;P1OUT=BIT3;P1IES|=BIT3;P1IE|=BIT3;P1IFG&=~BIT3;}#pragmavector=PORT1_VECTOR//中断函数·__interruptvoidPORT2(void){unsignedinti=0;for(i=0;i12000;i++);temp=1;P1IFG&=~BIT3;delay_ms(1000);}constunsignedcharsin[256]={//正弦波代码数组0x80,0x83,0x86,0x89,0x8C,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE,0xB1,0xB3,0xB6,0xB9,0xBC,0xBF,0xC1,0xC4,0xC7,0xC9,0xCC,0xCE,0xD1,0xD3,0xD5,0xD8,0xDA,0xDC,0xDE,0xE0,0xE2,0xE4,0xE6,0xE8,0xEA,0xEB,0xED,0xEF,0xF0,0xF1,0xF3,0xF4,0xF5,0xF6,0xF8,0xF9,0xFA,0xFA,0xFB,0xFC,0xFD,0xFD,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFA,0xFA,0xF9,0xF8,0xF6,0xF5,0xF4,0xF3,0xF1,0xF0,0xEF,0xED,0xEB,0xEA,0xE8,0xE6,0xE4,0xE2,0xE0,0xDE,0xDC,0xDA,0xD8,0xD5,0xD3,0xD1,0xCE,0xCC,0xC9,0xC7,0xC4,0xC1,0xBF,0xBC,0xB9,0xB6,0xB3,0xB1,0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99,0x96,0x93,0x90,0x8C,0x89,0x86,0x83,0x80,0x7D,0x7A,0x77,0x74,0x70,0x6D,0x6A,0x67,0x64,0x61,0x5E,0x5B,0x58,0x55,0x52,0x4F,0x4D,0x4A,0x47,0x44,0x41,0x3F,0x3C,0x39,0x37,0x34,0x32,0x2F,0x2D,0x2B,0x28,0x26,0x24,0x22,0x20,0x1E,0x1C,0x1A,0x18,0x16,0x15,0x13,0x11,0x10,0x0F,0x0D,0x0C,0x0B,0x0A,0x08,0x07,0x06,0x06,0x05,0x04,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x04,0x05,0x06,0x06,0x07,0x08,0x0A,0x0B,0x0C,0x0D,0x0F,0x10,0x11,0x13,0x15,0x16,0x18,0x1A,0x1C,0x1E,0x20,0x22,0x24,0x26,0x28,0x2B,0x2D,0x2F,0x32,0x34,0x37,0x39,0x3C,0x3F,0x41,0x44,0x47,0x4A,0x4D,0x4F,0x52,0x55,0x58,0x5B,0x5E,0x61,0x64,0x67,0x6A,0x6D,0x70,0x74,0x77,0x7A,0x7D};//0-255voidmain(){WDTCTL=WDTPW+WDTHOLD;//停止看门狗BCSCTL1=CALBC1_8MHZ;DCOCTL=CALDCO_8MHZ;//设置内部时钟8MHZTA1CTL=TASSEL_2+TACLR;//定时器时钟源SMCLKTA1CTL=TASSEL_2+TACLR;BCSCTL2=DIVS_2;TA1CCR0=312;//正弦波频率设置为8000000/(312*512)=50.08HZTA1CCTL1=OUTMOD_3+CCIE;TA1CCTL2=OUTMOD_7+CCIE;TA1CCR1=128;TA1CCR2=128;P2DIR|=BIT1;P2SEL|=BIT1;P2DIR|=BIT4;P2SEL|=BIT4;TA1CTL|=MC0;count=0;count1=0;temp=0;_EINT();while(1){LPM0;};}#pragmavector=TIMER1_A1_VECTOR__interruptvoidtime_a1(void){P1DIR|=BIT0;P1OUT^=BIT0;switch(TA1IV){caseTA1IV_TACCR1:{TA1CCR1=sin[count++];if(count==255){count=0;}break;};caseTA1IV_TACCR2:TA1CCR2=sin[count1++];if(count1==255){count1=0;P1DIR|=BIT0;P1OUT|=BIT0;}break;case10:break;default:break;}}