搜索
bottom↓
回复: 2

430_正弦波发生

[复制链接]

出0入0汤圆

发表于 2011-8-1 19:15:32 | 显示全部楼层 |阅读模式
#include<msp430x16x.h>
#define uint unsigned int
#define uchar  unsigned  char
#define FS_Val 4095
uchar sam_point=0,sam_point1=0;

int frequence=2000;
static int sinc[100]={
  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[sam_point];
     DAC12_1DAT=sinc[sam_point1];
    }
}
#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;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2011-9-25 13:17:22 | 显示全部楼层
请问这正弦波产生的频率是多少啊?可调吗?初学,看不懂
谢谢回答啊

出0入0汤圆

发表于 2011-9-25 13:43:14 | 显示全部楼层
回复【1楼】yjw0213
请问这正弦波产生的频率是多少啊?可调吗?初学,看不懂
谢谢回答啊
-----------------------------------------------------------------------

同问!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 07:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表