shiyeping 发表于 2011-8-1 19:15:32

430_正弦波发生

#include<msp430x16x.h>
#define uint unsigned int
#define ucharunsignedchar
#define FS_Val 4095
uchar sam_point=0,sam_point1=0;

int frequence=2000;
static int sinc={
0.5000*FS_Val+0.5,
0.53139523328*FS_Val+0.5,
0.56266656413*FS_Val+0.5,
0.5936905791*FS_Val+0.5,
0.62434484077*FS_Val+0.5,
0.654508371*FS_Val+0.5,
0.68406212831*FS_Val+0.5,
0.71288947771*FS_Val+0.5,
0.74087665102*FS_Val+0.5,
0.76791319584*FS_Val+0.5,
0.79389241147*FS_Val+0.5,
0.81871176997*FS_Val+0.5,
0.842277332084*FS_Val+0.5,
0.86448407756*FS_Val+0.5,
0.88525638458*FS_Val+0.5,
0.90450826323*FS_Val+0.5,
0.92216373525*FS_Val+0.5,
0.9381531227*FS_Val+0.5,
0.95241332286*FS_Val+0.5,
0.96488805734*FS_Val+0.5,//20
0.97552809415*FS_Val+0.5,
0.9842144198*FS_Val+0.5,
0.99114351597*FS_Val+0.5,
0.996057416*FS_Val+0.5,
0.99901332422*FS_Val+0.5,
1*FS_Val+0.5,
0.99901340753*FS_Val+0.5,
0.99605744045*FS_Val+0.5,
0.99114376459*FS_Val+0.5,
0.98429177149*FS_Val+0.5,
0.97552850415*FS_Val+0.5,
0.96488854577*FS_Val+0.5,
0.95241388778*FS_Val+0.5,
0.93815376189*FS_Val+0.5,
0.92216444618*FS_Val+0.5,
0.9045090431*FS_Val+0.5,
0.88525723031*FS_Val+0.5,
0.86448498582*FS_Val+0.5,
0.84227428803*FS_Val+0.5,
0.81871279228*FS_Val+0.5,//40
0.79389348478*FS_Val+0.5,
0.76791431609*FS_Val+0.5,
0.7408778137*FS_Val+0.5,
0.71289067823*FS_Val+0.5,
0.68406336193*FS_Val+0.5,
0.65450963286*FS_Val+0.5,
0.62434612588*FS_Val+0.5,
0.59369188239*FS_Val+0.5,
0.56266788046*FS_Val+0.5,
0.53139655746*FS_Val+0.5,
0.50000132679*FS_Val+0.5,
0.4686060909*FS_Val+0.5,
0.43733475222*FS_Val+0.5,
0.4063107242*FS_Val+0.5,
0.37565644434*FS_Val+0.5,
0.34549289086*FS_Val+0.5,
0.31593910532*FS_Val+0.5,
0.28711172281*FS_Val+0.5,
0.25912451166*FS_Val+0.5,
0.23208792441*FS_Val+0.5,//60
0.20610866193*FS_Val+0.5,
0.18128925235*FS_Val+0.5,
0.15772764636*FS_Val+0.5,
0.13551683096*FS_Val+0.5,
0.11474446115*FS_Val+0.5,
0.095492516647*FS_Val+0.5,
0.077836975682*FS_Val+0.5,
0.061847516793*FS_Val+0.5,
0.047587242064*FS_Val+0.5,
0.035442431087*FS_Val+0.5,
0.024472315859*FS_Val+0.5,
0.015708887983*FS_Val+0.5,
0.0088567326471*FS_Val+0.5,
0.0039428921321*FS_Val+0.5,
0.00098675908872*FS_Val+0.5,
0*FS_Val+0.5,
0.00098650915851*FS_Val+0.5,
0.003942393258*FS_Val+0.5,
0.00885986798*FS_Val+0.5,
0.015707898102*FS_Val+0.5,//80
0.024472315859*FS_Val+0.5,
0.035442431087*FS_Val+0.5,
0.047587242064*FS_Val+0.5,
0.061847516793*FS_Val+0.5,
0.077834842887*FS_Val+0.5,
0.095490177037*FS_Val+0.5,
0.11474192396*FS_Val+0.5,
0.13551410593*FS_Val+0.5,
0.15772474478*FS_Val+0.5,
0.18128618541*FS_Val+0.5,
0.20610544174*FS_Val+0.5,
0.23208456366*FS_Val+0.5,
0.25912102362*FS_Val+0.5,
0.28710812125*FS_Val+0.5,
0.31593540445*FS_Val+0.5,
0.34548910529*FS_Val+0.5,
0.37565258901*FS_Val+0.5,
0.406306681432*FS_Val+0.5,
0.43733080321*FS_Val+0.5,
0.46860211837*FS_Val+0.5,//100
                                  };

void InitSys()
{
P1DIR=0X00;
P1IES=0X02;
P1IE=0X02;
}
void InitClock()
{
uint iq0;
BCSCTL1&=~XT2OFF;
do
{
    IFG1&=~OFIFG;
    for(iq0=0xff;iq0>0;iq0--);
}
while((IFG1&OFIFG)!=0);
BCSCTL2=SELM_2+SELS;
}
void IninTA()
{
TACTL=TASSEL1+TACLR;
TACCTL0|=CCIE;
// TACCR0=(unsigned short)((float)(1000000/frequence-15)*0.08+0.5);
TBCCTL0|=CCIE;
//TBCTL=TASSEL1+TACLR;
TBCCR0=(unsigned short)((float)(1000000/frequence-15)*0.08+0.5);
CCR0=10;
TACTL|=MC0;
TBCTL|=MC0;
}
void main()
{
    WDTCTL=WDTPW+WDTHOLD;
    InitClock();
    InitSys();
    IninTA();
    ADC12CTL0=REF2_5V+REFON;
    DAC12_0CTL=DAC12IR+DAC12AMP_5+DAC12ENC;
    ADC12CTL1=REF2_5V+REFON;
    DAC12_1CTL=DAC12IR+DAC12AMP_5+DAC12ENC;
    while(1)
    {
   _BIS_SR(CPUOFF+GIE);
   DAC12_0DAT=sinc;
   DAC12_1DAT=sinc;
    }
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TAO(void)
{
sam_point=sam_point+2;
// sam_point1++;
if(sam_point==100)
{sam_point=0;sam_point1=0;}
_BIC_SR_IRQ(CPUOFF);
}
#pragma vector=TIMERA1_VECTOR
__interrupt void TA1()
{
   /* sam_point1++;
if(sam_point1==100)
    sam_point1=0;
_BIC_SR_IRQ(CPUOFF);*/
frequence+=200;
if(frequence>=2000)
frequence=200;
CCR0=(unsigned short)((float)(1000000/frequence-15)*0.08+0.5);
P1IFG=0X00;
}

yjw0213 发表于 2011-9-25 13:17:22

请问这正弦波产生的频率是多少啊?可调吗?初学,看不懂
谢谢回答啊

kerrwang 发表于 2011-9-25 13:43:14

回复【1楼】yjw0213
请问这正弦波产生的频率是多少啊?可调吗?初学,看不懂
谢谢回答啊
-----------------------------------------------------------------------

同问!!
页: [1]
查看完整版本: 430_正弦波发生