亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? msp430-fw-dds[1].c

?? 老外用DDSAD9854和MSP430做的一個收音機的源程序.
?? C
?? 第 1 頁 / 共 2 頁
字號:
//===================================================================
//
//  MSP430F149 based direct digital conversion
//  software defined radio receiver
//
//  (C) 2005 Jan Florian Wagner OH2GHR, jwagner@cc.hut.fi
//  http://users.tkk.fi/~jwagner/electr/dc-rx/
//
//  Firmware Version 1.03
//
//  Licence: free as per GNU GPL
//
//  This program is free software; you can redistribute it and/or
//  modify it under the terms of the GNU General Public License
//  as published by the Free Software Foundation; either version 2
//  of the License, or (at your option) any later version.
//  
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  
//  For further details see the included GPL.TXT 
//  or go to http://www.gnu.org/copyleft/gpl.html  
//
//===================================================================
//
//  Contains AD9854 configuration routines for parallel mode, and
//  some auxiliary user functions.
//  
//  DDS has an external 50MHz crystal oscillator connected.
//  
//  Also contains different board operational mode functions, like
//  auto scanning, manual scanning, chirp or modulation, etc.
//  (currently only the "manual scanning" over PC, tuning wheel and
//  keyboard is implemented)
//
//  Additionally contains funcs to convert the DDS tuning word
//  into a frequency and string representation.
//
// port 4: 8 bit data and
//         5 bit address through 74hc573 latch
// port 5: 5.0 RST, 5.1 !RD, 5.2 !WR, 5.3 IOCLK,
//         5.4 ALE,
//         not yet used : 5.5 FSK/MOD, 5.6 KEYING

#include "MSP430-fw-stdincludes.h"

#define DEBUG_DDS
#define POS_STEP 4
#define NEG_STEP -4

volatile unsigned long long   dds_lo_tw;        // tuning frequency (LO main freq)
volatile unsigned long long   dds_delta;        // freq step
volatile signed int           dds_wheeldivider; // wheel divider (turns vs freq steps)

char freq_str[12+10]; // filled out by call to DDS_Tuningword2FreqStr(tw), 
                      // [0..11]=LCDformat, [12..21]=PCformat, [22]=spare

//===================================================================
//
//       DDS CONFIGURATION ROUTINES
//


//-------------------------------------------------------------------
// DDS_init ( long long )
//
// Initialize the DDS : parallel data, external update clock,
//   no keying, no inverse sinc filtering, multipliers off, 
//   single tone mode
//
void DDS_init(void) 
{
   int i=0;

   // set frequency and step size (tuning wheel)
   dds_wheeldivider = 1;
//   if(RestoreSettings()==RESP_NACK) {  // get stored settings (not working 100% yet...)
      dds_delta = DEFAULT_DELTA;       // or use default settings
      dds_lo_tw = DEFAULT_LO_TW;
//   }
   
   // msp430 port setup
   DDS_DATA_DIR = 0xFF;
   DDS_CTRL_DIR = ~DDS_CLK;  // first, all outputs except AD9854 clock (input)
   DDS_DATA_OUT = 0;
   DDS_CTRL_OUT = 0xFF;

   // assert reset for a while
   DDS_CTRL_OUT |= DDS_RST;
   for(i=32000; i>0; --i) _NOP(); // wait a bit  
   DDS_CTRL_OUT &= ~DDS_RST;

   // assign to external update clock
   // addr 0x1F bits: 7=clrAcc1 6=clrAcc2 5=Triangle
   //                 4=SrcQDac (hi=no quadrature)
   //                 3=Mode[2] 2=Mode[1] 1=Mode[0]
   //                 0=Ext/IntUpdateClk (0=ext 1=int)
   DDS_writeByte( 0x00, 0x1F );
   DDS_commit();
   for(i=32000; i>0; --i) _NOP(); // wait a bit

   DDS_CTRL_DIR = 0xFF;  // now MSP430 can steer the clock signal (output)

   // DAC setup
   // addr 0x1D bits: 7=x 6=x 5=x 4=comparator power down (pd)
   //                 3=0 2=qdac pd 1=dac pw 0=dig pd
   // 0001 0001 - user-specified digital multipliers disabled, comp disabled
   DDS_writeByte( 0x10, 0x1D );

   // clock setup
   // addr 0x1E bits: 7=x
   //                 6=PLL range (0 <200MHz, 1 200..300MHz) 5=bypass PLL
   //                 4..0=ref clock multplier
   // 010 00100 - range 1, pll on, x4 (50->200 MHz)
   // DDS_writeByte( 0x40+DDS_MULTIPLIER, 0x1E );
   DDS_writeByte( 0x00+DDS_MULTIPLIER, 0x1E );

   // invsinc and other settings
   // addr 0x20 bits: 7=x 6=power down inv sinc
   //                 5=osk enable (shaped keying)
   //                 4=osk int (1 internal multipliers, 0 user specified multipliers)
   //                 3=x 2=x
   //                 1=lsb first (serial I/O) 0=sdo active (serial I/O)
   // 0101 0000 - inv sinc off, internal multipliers, keying off
   DDS_writeByte( 0x50, 0x20 );

   DDS_commit();

   return;
}


//-------------------------------------------------------------------
// unsigned char DDS_readByte ( unsigned char )
//
// Read back one byte from the DDS registers. Mainly useful for
// debugging the DDS routines.
//
unsigned char DDS_readByte(unsigned char addr)
{
   unsigned char temp=0;

   // write address
   DDS_DATA_DIR = 0xFF;
   DDS_DATA_OUT = addr;
   DDS_CTRL_OUT |= DDS_ALE;        // address into latch
   DDS_CTRL_OUT &= ~DDS_ALE; 

   // read data
   DDS_DATA_DIR = 0x00;
   DDS_CTRL_OUT &= ~DDS_NRD;       // "read"=0/lo

   temp = DDS_DATA_IN;

   DDS_CTRL_OUT |= DDS_NRD;        // return "read" to hi
   DDS_DATA_DIR = 0xFF;

   return temp;
}


//-------------------------------------------------------------------
// DDS_writeByte ( unsigned char, unsigned char )
//
// Writes one byte to the DDS but doesn't commit it yet.
//
void DDS_writeByte(unsigned char data, unsigned char addr) 
{
   DDS_DATA_DIR = 0xFF;

   // write address
   DDS_DATA_OUT = addr;
   DDS_CTRL_OUT |= DDS_ALE;      // address into latch
   DDS_CTRL_OUT &= ~DDS_ALE;

   // write data
   DDS_DATA_OUT = data;
   DDS_CTRL_OUT &= ~DDS_NWR;     // "write"=0/lo
   DDS_CTRL_OUT |= DDS_NWR;      // return write to hi

   // remember to call DDS_commit() later
   // to have the AD9854 apply the new settigns
   return;
}


//-------------------------------------------------------------------
// DDS_commit ( )
//
// Commit the transferred DDS data, pulses the IO update clock to
// move the data from the AD9854 internal buffer to its registers.
//
void DDS_commit(void) 
{
   DDS_CTRL_OUT |= DDS_CLK;
   DDS_CTRL_OUT &= ~DDS_CLK;
}


//-------------------------------------------------------------------
// DDS_writeLongTuningword ( long long )
//
// Writes the tuning word to the DDS, but doesn't commit the 
// data yet.
//
void DDS_writeLongTuningword(long long tw) 
{
   long long tmp = tw;
   unsigned char out; int i;
   
   // write last 6 bytes of tuningword (=all DDS TW registers)
   for(i=0;i<6;i++) {
      out = (unsigned char)(tmp&0xFF);
      DDS_writeByte(out, 0x09-i);
      tmp=tmp>>8;
   }
   // remember to call DDS_commit() later
   // to have the AD9854 apply the new settigns
   return;
}




//===================================================================
//
//       OPERATIONAL MODE FUNCTIONS
//


//-------------------------------------------------------------------
// DDS_autoscan1 ( )
//
// For DEBUGGING only
//
void DDS_autoscan1(void) 
{
   signed long scn = 0x04000000;
   // 0x08E00001 = 6.94 MHz
   // 0x01E00001 = 1.6 MHz
   // 0x05400000 = 4.1 MHz
   // 0x04000000 = 3.13 MHz
   signed long tmp;
   signed long dir = POS_STEP;

   DDS_DATA_DIR = 0xFF;

   // load multipliers (just to be safe)

   DDS_DATA_OUT = 0x21; setBit(DDS_CTRL_OUT,DDS_ALE); clrBit(DDS_CTRL_OUT,DDS_ALE);
   DDS_DATA_OUT = 0xFF; clrBit(DDS_CTRL_OUT,DDS_NWR); setBit(DDS_CTRL_OUT,DDS_NWR);
   DDS_DATA_OUT = 0x22; setBit(DDS_CTRL_OUT,DDS_ALE); clrBit(DDS_CTRL_OUT,DDS_ALE);
   DDS_DATA_OUT = 0xFF; clrBit(DDS_CTRL_OUT,DDS_NWR); setBit(DDS_CTRL_OUT,DDS_NWR);
   
   DDS_DATA_OUT = 0x23; setBit(DDS_CTRL_OUT,DDS_ALE); clrBit(DDS_CTRL_OUT,DDS_ALE);
   DDS_DATA_OUT = 0xFF; clrBit(DDS_CTRL_OUT,DDS_NWR); setBit(DDS_CTRL_OUT,DDS_NWR);
   DDS_DATA_OUT = 0x24; setBit(DDS_CTRL_OUT,DDS_ALE); clrBit(DDS_CTRL_OUT,DDS_ALE);
   DDS_DATA_OUT = 0xFF; clrBit(DDS_CTRL_OUT,DDS_NWR); setBit(DDS_CTRL_OUT,DDS_NWR);

   DDS_commit();


   // scan the frequency range

   while(1)
    {

      if(scn<SCAN_LIM_LO) dir=POS_STEP;
      if(scn>SCAN_LIM_HI) dir=NEG_STEP;

      scn += dir;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区免费在线| 欧美性猛交xxxxxx富婆| 日韩中文字幕不卡| 亚洲va欧美va人人爽午夜| 一区二区三区高清在线| 亚洲国产精品一区二区www在线| 国产精品久久久久影视| 一区二区三区在线播放| 性欧美大战久久久久久久久| 免费观看一级欧美片| 免费人成精品欧美精品| 国产一区二区三区黄视频 | 麻豆久久一区二区| 久久aⅴ国产欧美74aaa| 国v精品久久久网| jlzzjlzz亚洲女人18| 在线视频一区二区三| 欧美日本在线播放| www一区二区| 久久综合色一综合色88| 99re这里只有精品6| av电影在线观看完整版一区二区| 91免费视频网址| 欧美日韩成人在线一区| 久久亚洲捆绑美女| 亚洲人精品午夜| 日本不卡123| 不卡的av中国片| 欧美日韩精品一区视频| www激情久久| 亚洲一级在线观看| 精品亚洲国内自在自线福利| 97久久精品人人做人人爽50路| 欧美日韩国产首页| 久久精品视频网| 亚洲成人福利片| 国产精品一区二区无线| 精品婷婷伊人一区三区三| caoporn国产精品| 亚洲一区二区高清| 韩国成人福利片在线播放| 色综合久久综合中文综合网| 精品国产乱码久久久久久图片 | 欧美午夜寂寞影院| 国产无人区一区二区三区| 午夜国产精品一区| 色哟哟欧美精品| 久久看人人爽人人| 激情国产一区二区| 97久久久精品综合88久久| xvideos.蜜桃一区二区| 丝袜a∨在线一区二区三区不卡| av成人免费在线| 国产日本欧洲亚洲| 久久精品亚洲精品国产欧美| 亚洲综合丁香婷婷六月香| 成人一级视频在线观看| 欧美一级理论性理论a| 亚洲国产成人av网| 91免费版在线| 亚洲欧洲日产国码二区| 国产高清不卡二三区| 日韩你懂的电影在线观看| 亚洲国产精品一区二区久久| 色婷婷综合久色| 国产精品久久久久9999吃药| 国产a视频精品免费观看| 精品乱码亚洲一区二区不卡| 日韩电影免费一区| 欧美一区二区精品久久911| 五月婷婷综合在线| 欧美久久久久免费| 日韩黄色小视频| 欧美一二三区在线| 日本高清不卡视频| 国产精品理论片| 99天天综合性| 一区二区三区四区亚洲| 在线精品视频免费播放| 午夜久久电影网| 日韩一区二区影院| 久久国产精品99久久久久久老狼 | 精品制服美女丁香| 精品国产91久久久久久久妲己| 国内精品免费在线观看| 国产欧美一区二区精品性色| 丰满亚洲少妇av| 亚洲男人都懂的| 欧美日韩免费在线视频| 美腿丝袜亚洲综合| 久久久久久电影| 91色porny在线视频| 亚洲成人一区在线| 亚洲精品一区二区三区99| 高清不卡在线观看| 亚洲另类中文字| 欧美乱妇20p| 国产成人综合精品三级| 亚洲精品国久久99热| 欧美一区二区人人喊爽| 国产成人亚洲精品青草天美| 亚洲一区二区三区在线看| 欧美一级在线视频| av欧美精品.com| 三级成人在线视频| 国产精品―色哟哟| 欧美日韩一区在线| 成人免费毛片片v| 日韩和欧美一区二区三区| 国产欧美精品一区| 911精品国产一区二区在线| 国产老肥熟一区二区三区| 亚洲夂夂婷婷色拍ww47| 久久精品人人做人人爽人人| 在线观看国产一区二区| 国产乱码一区二区三区| 一区二区日韩av| 欧美国产禁国产网站cc| 欧美一区二区三区色| 91在线视频免费91| 韩国av一区二区三区四区| 亚洲一区在线观看网站| 中文字幕不卡的av| 日韩欧美在线综合网| 欧美午夜片在线看| av在线这里只有精品| 国产精品1区2区3区在线观看| 五月婷婷激情综合网| 国产精品久久久久婷婷二区次 | 成人av网站免费| 国产在线视频一区二区| 日韩福利视频导航| 亚洲午夜电影在线观看| 亚洲人xxxx| 中文字幕视频一区二区三区久| 精品国产乱码久久久久久牛牛| 欧美日韩一区成人| 欧美中文字幕亚洲一区二区va在线| 成人精品鲁一区一区二区| 国产精品中文字幕日韩精品| 久久99精品一区二区三区| 日韩中文字幕区一区有砖一区| 一区二区三区四区精品在线视频| 欧美激情一二三区| 中文一区在线播放| 国产精品不卡一区| 综合自拍亚洲综合图不卡区| 亚洲国产精品国自产拍av| 国产欧美日韩久久| 亚洲国产精品二十页| 中文字幕一区二区不卡| 日韩理论电影院| 亚洲欧美区自拍先锋| 一区二区在线电影| 亚洲综合久久久久| 视频一区二区欧美| 老司机精品视频导航| 国产高清精品久久久久| 成人v精品蜜桃久久一区| 99久久精品免费| 日本高清不卡视频| 欧美一区二区不卡视频| 欧美成人a在线| 中文字幕精品在线不卡| 亚洲日本在线看| 亚洲国产精品欧美一二99| 日本欧美在线看| 国产精品一区三区| 在线看国产日韩| 日韩女优av电影在线观看| 国产日韩精品久久久| 亚洲人成网站色在线观看| 亚洲高清一区二区三区| 久久精品国产一区二区三| 国产成人精品免费| 在线免费亚洲电影| 日韩欧美中文字幕公布| 国产精品久久久久久户外露出| 亚洲午夜激情网站| 国产精品自拍在线| 色噜噜狠狠一区二区三区果冻| 5566中文字幕一区二区电影| 国产欧美日韩综合精品一区二区| 亚洲三级久久久| 老司机一区二区| 95精品视频在线| 精品国产一区二区三区四区四| 国产精品久久久久久久久久久免费看| 亚洲国产日韩a在线播放性色| 精东粉嫩av免费一区二区三区| 色婷婷精品大在线视频| 久久蜜桃av一区精品变态类天堂| 一区二区三区毛片| 成人做爰69片免费看网站| 在线电影国产精品| 国产精品国产三级国产有无不卡| 蜜桃视频一区二区| 欧美日韩和欧美的一区二区| 中文字幕欧美日本乱码一线二线| 日本不卡视频在线|