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

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

?? fft_new_test.c

?? 在c8051平臺上實現的FFT運算
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*-------------------------------------------------------------------------------------------------
文件名稱:FFT_New_Test.c
創建日期:07.06.12
修改日期:07.06.18
           -整理
文件說明:功能:
           -基于C8051F000系列單片機的FFT試驗程序
         參數:
		   -通道0的IDT:0x00000100
           -通道0的MSK:0x1FFFFFFF(通道0只能接受IDT為0x00000100的消息)
		   -通道1的IDT:0x00000101
		   -通道1的MSK:0x1FFFFFFF(通道1只能發送IDT為0x00000101的消息)
		   -UartBuffer大小為16字節
		   -CanBuffer 大小為16字節
創建人:  李大偉
-------------------------------------------------------------------------------------------------*/
#include <stdio.h>
#include "C8051F000.h"
#include "FFT_Code_Tables.h"

//ADC0寄存器定義
sfr16 ADC0     =     0xBE;             

//數據的位數
#define NUM_BITS     16                    

//外部XRAM數據的起始
#define DATA_BEGIN   0x0000 
           
//外部時鐘頻率,PLL輸出頻率=(EXTCLK*9/4)(Hz)
#define EXTCLK       22118400          
#define SYSCLK       49760000         

//UART0波特率
#define BAUDRATE     115200 
           
//采樣頻率(Hz)
#define SAMPLE_RATE  10000             

//為:1,只運行一次
#define RUN_ONCE     1                 

typedef union IBALONG 
{
  long l;
  unsigned int  i[2];
  unsigned char b[4];
}IBALONG;

typedef union BAINT 
{ 
   int i;
   unsigned char b[2];
}BAINT;

//函數申明
void WindowCalc(int Win_Array[], unsigned char SE_data);
void IntFFT(int ReArray[], int ImArray[]);
void BitReverse(int BR_Array[]);
void ADC0_ISR (void);

//全局變量
//FFT的XRAM空間=NUM_FFT*4字節(起始于DATA_BEGIN)
int xdata Real[NUM_FFT] _at_  DATA_BEGIN;
int xdata Imag[NUM_FFT] _at_ (DATA_BEGIN+(NUM_FFT*2));

//NUM_FFT的定義在"FFT_Code_Tables.h"頭文件中
#if(NUM_FFT>=256)
unsigned int index,ADC_Index;
#endif

#if(NUM_FFT<256)
unsigned char index,ADC_Index;
#endif

unsigned int BinNum;		//循環變量
bit Conversion_Set_Complete;//一輪采樣結束標志位
/*=================================================================================================
01.名稱:main
   入口:無
   出口:無
   功能:系統主函數
=================================================================================================*/
void main()
{
  WDTCN   = 0xDE;					   //看門狗
  WDTCN   = 0xAD;
  OSCICN  = 0x07;					   //時鐘
  XBR0    = 0x04;					   //I/O
  XBR2    = 0x40;
  REF0CN  = 0x03;					   //參考電壓
  CKCON   = 0x10;					   //定時器
  TCON    = 0x40;
  TMOD    = 0x20;
  TH1     = 0xCC;
  TMR3CN  = 0x06;
  TMR3RLL = 0x40;
  TMR3RLH = 0x01;
  TMR3L   = 0x40;
  TMR3H   = 0x01;
  SCON    = 0x40;					    //UART
  ADC0CF  = 0x80;						//ADC
  ADC0CN  = 0x85;
  IE      = 0x80;						//中斷使能
  
  
  while(1)
  {
  	DisOfRuler1=SingleFrqMeasure(1);
    DisOfRuler2=SingleFrqMeasure(2);
    DisOfRuler3=SingleFrqMeasure(3);
  }
}
/*=================================================================================================
01.名  稱:SingleFrqMeasure()
   功  能:單尺測量過程
   參  數:Sel: 0 - 關閉
                1 - 5.9348MHz
				2 - 593.48KHz
				3 - 59.348KHz
   返  回:對應尺的距離值
=================================================================================================*/
float SingleFrqMeasure(unsigned char SelFrq)
{
  float PhaseW,PhaseN;
	
  //光強檢測GetSignalRange();

  //SelFrq控制CPLD選擇相應的頻率測距

  PhaseW=GetPhase(OUT);
  PhaseN=GetPhase(IN);

  //將角度值轉化為距離值
  switch(Sel)
  {
	case 0x01://5.9348MHz
	break;
	case 0x02://593.48KHz
	break;
	case 0x03://59.348KHz
	break;
	case 0x00://00
	break;
	default:
    break;
  }
  //距離:
  return (PhaseW-PhaseN);
}
/*=================================================================================================
01.名  稱:GetPhase()
   功  能:計算距離值
   參  數:無
   返  回:無
=================================================================================================*/
float GetPhase(unsigned char NW)
{
  float angle;

  //NW控制電機打到內或者外光路

  ADC_Index=0;
  Conversion_Set_Complete=0;
  EIE2|=0x02;                         //ADC中斷允許
  while(!Conversion_Set_Complete);

  //對Real數據進行排序
  Sort(Real);

  WindowCalc(Real,1);                 //加窗
  BitReverse(Real);                   //將輸入的數據位反向重排
  IntFFT(Real,Imag);                  //對輸入的數據進行FFT運算

  angle=atan(Imag[1]/Real[1]);
  return ((180/pi)*angle);            //轉成距離值
}
/*=================================================================================================
02.名稱:WindowCalc
   入口:
        -Win_Array[]:為0到(NUM_FFT/2)-1的采樣數據所對應窗口系數,對于NUM_FFT/2到NUM_FFT-1的采樣數據
		             所對應窗口系數可通過0到(NUM_FFT/2)-1的采樣數據所對應窗口系數鏡像得到。窗口值為
					 一個小于1的值(WindowFunc[x]/65536),NUM_FFT/2處的值假設為1.0(65536)。
        -SE_data	:為1:
		               -則輸入數據被假定為單端信號,那么將他調整為差分信號數據,這樣就可以去除直
		                流流偏值。
					 為0:
					   -則輸入數據被假定為差分信號。
   出口:無
   功能:使用存儲在數組WindowFunc[]中的數值對Win_Array[]數組加窗
=================================================================================================*/
void WindowCalc(int Win_Array[],unsigned char SE_data)
{
#if(WINDOW_TYPE!=0)                               //加窗類型
  IBALONG NewVal;

  if(SE_data)  Win_Array[0]^=0x8000;              //如果數據時單端的轉換為差分的
  NewVal.l=(long)Win_Array[0]*WindowFunc[0];      //加窗
  if((NewVal.l<0)&&(NewVal.i[1])) Win_Array[0]=NewVal.i[0]+1;
  else Win_Array[0]=NewVal.i[0];
  if(SE_data) Win_Array[NUM_FFT/2]^=0x8000;       //如果數據時單端的轉換為差分的

  for(index=1;index<NUM_FFT/2;index++)
  {
    if(SE_data) Win_Array[index]^=0x8000;         //數組的1到(NUM_FFT/2 - 1)
    NewVal.l=(long)Win_Array[index]*WindowFunc[index];
    if((NewVal.l<0)&&(NewVal.i[1])) Win_Array [index]=NewVal.i[0]+1;
    else Win_Array[index]=NewVal.i[0];
	
	if(SE_data)	Win_Array[NUM_FFT-index]^=0x8000; //數組的(NUM_FFT/2 + 1)到(NUM_FFT - 1)
    NewVal.l=(long)Win_Array[NUM_FFT-index]*WindowFunc[index];
    if((NewVal.l<0)&&(NewVal.i[1])) Win_Array[NUM_FFT-index]=NewVal.i[0]+1;
    else Win_Array[NUM_FFT-index]=NewVal.i[0];
  }
#endif
#if(WINDOW_TYPE==0)                               //不加窗
  if(SE_data)                                     //如果數據時單端的
  {                                               //轉換為差分的
    for(index=0;index<NUM_FFT;index++) Win_Array[index]^=0x8000;//最高位通過和1取異或取反
  }
#endif
} 
/*=================================================================================================
03.名稱:BitReverse
   入口:BR_Array[]:
          -操作的對象數組。
   出口:無
   功能:對經過為反向的地址重新排序

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品在线观看| 欧美精品 国产精品| 国产精品一级黄| 美女一区二区三区| 欧美aaaaa成人免费观看视频| 亚洲综合色自拍一区| 亚洲免费电影在线| 午夜精品久久久久久久99樱桃| 亚洲一区二区三区爽爽爽爽爽 | 久久爱www久久做| 蜜桃视频在线观看一区| 国产一区91精品张津瑜| 国产激情视频一区二区在线观看| 国产麻豆一精品一av一免费| 国产成人精品免费一区二区| 成人激情开心网| 91影院在线免费观看| 91国产免费看| 欧美一二三四在线| 久久九九久久九九| 亚洲免费大片在线观看| 午夜欧美电影在线观看| 韩国v欧美v亚洲v日本v| 99久久精品免费| 91 com成人网| 国产日韩欧美亚洲| 亚洲一区电影777| 韩国一区二区视频| 欧美性色黄大片| 精品国产一区久久| 亚洲激情图片一区| 加勒比av一区二区| 91色乱码一区二区三区| 日韩午夜av一区| 一区二区三区四区在线免费观看 | 国产人成一区二区三区影院| 综合分类小说区另类春色亚洲小说欧美| 亚洲精品菠萝久久久久久久| 精品一区二区精品| 欧洲精品中文字幕| 国产精品丝袜一区| 日本免费新一区视频| 色综合天天综合| 久久久青草青青国产亚洲免观| 亚洲精选视频在线| 国产精品亚洲а∨天堂免在线| 色综合天天综合网天天狠天天| 欧美成人一区二区| 亚洲一区二区三区美女| 波多野结衣视频一区| 制服丝袜亚洲精品中文字幕| 亚洲视频 欧洲视频| 国产制服丝袜一区| 91精品国产综合久久小美女| 自拍偷拍国产亚洲| 成人综合激情网| 久久综合色之久久综合| 日本中文字幕不卡| 欧美日韩国产影片| 亚洲乱码国产乱码精品精小说| 国产精品一品二品| 久久影院午夜片一区| 日韩电影在线免费观看| 欧美三区免费完整视频在线观看| 国产精品久久久久aaaa樱花| 国产美女一区二区三区| 久久亚洲私人国产精品va媚药| 日韩国产一二三区| 欧美日韩精品欧美日韩精品一 | 91精品久久久久久久91蜜桃| 亚洲综合999| 色婷婷亚洲综合| 亚洲精品成人在线| 日本精品免费观看高清观看| 亚洲欧洲综合另类| 91福利在线免费观看| 在线观看精品一区| 一本大道av伊人久久综合| 欧美午夜精品理论片a级按摩| 在线观看av一区| 日韩理论电影院| 色综合久久中文字幕| 亚洲免费av高清| 欧美视频在线观看一区二区| 一区二区三区四区乱视频| 色综合欧美在线| 午夜私人影院久久久久| 欧美日本高清视频在线观看| 日韩中文字幕麻豆| 精品久久一区二区| 国产成人av电影在线| 亚洲特级片在线| 精品视频全国免费看| 蜜桃一区二区三区四区| 国产亚洲成年网址在线观看| 高清shemale亚洲人妖| 又紧又大又爽精品一区二区| 欧美日韩国产a| 激情五月激情综合网| 久久久www成人免费毛片麻豆| 成人av中文字幕| 亚洲高清免费一级二级三级| 日韩欧美激情四射| 波多野结衣精品在线| 日韩成人av影视| 久久久精品2019中文字幕之3| 99免费精品在线观看| 视频一区欧美精品| 国产午夜精品一区二区三区四区 | 一区二区免费视频| 欧美成人一区二区三区在线观看| 成人国产精品免费网站| 午夜不卡av免费| 中文字幕精品在线不卡| 欧美电影一区二区三区| 春色校园综合激情亚洲| 欧美96一区二区免费视频| 国产精品高潮久久久久无| 日韩一区二区电影网| 色网综合在线观看| 国产成人亚洲综合a∨婷婷| 偷偷要91色婷婷| 国产精品久久久久久久蜜臀 | 中文字幕免费观看一区| 91麻豆精品国产91久久久| 成人动漫中文字幕| 精品中文av资源站在线观看| 亚洲激情自拍偷拍| 亚洲国产成人午夜在线一区| 欧美一级夜夜爽| 一本一道久久a久久精品综合蜜臀| 国产一区美女在线| 玖玖九九国产精品| 首页综合国产亚洲丝袜| 亚洲美女视频一区| 国产精品乱人伦| 国产亚洲欧美一级| 久久一区二区三区国产精品| 91精品婷婷国产综合久久| 欧美三级乱人伦电影| 91在线播放网址| 97精品电影院| 99久久久国产精品免费蜜臀| 国产精品白丝av| 国产精品一二三| 国产精品综合网| 国产精品2024| 极品瑜伽女神91| 国产综合色视频| 国产一区二区看久久| 久久av中文字幕片| 精品一区二区三区在线视频| 免费成人在线观看视频| 欧美aaa在线| 国产在线精品一区二区三区不卡| 美女在线一区二区| 精品中文av资源站在线观看| 韩国v欧美v日本v亚洲v| 国产精品白丝jk白祙喷水网站| 国模少妇一区二区三区| 国产精品一区二区在线播放| 成人伦理片在线| 成+人+亚洲+综合天堂| av在线不卡电影| 在线免费观看日韩欧美| 在线观看免费一区| 日韩一区二区不卡| www亚洲一区| 国产精品色婷婷| 亚洲免费高清视频在线| 日韩在线卡一卡二| 国内不卡的二区三区中文字幕 | 午夜亚洲国产au精品一区二区| 天天色综合天天| 极品少妇xxxx精品少妇| 成人97人人超碰人人99| 欧美日韩久久不卡| 久久精品一区八戒影视| 一区二区三区不卡视频| 蜜臀99久久精品久久久久久软件| 国产河南妇女毛片精品久久久 | 97久久精品人人做人人爽50路| 欧美在线观看视频在线| 欧美成人精品二区三区99精品| 国产女人水真多18毛片18精品视频| 亚洲欧洲日韩av| 日本欧美大码aⅴ在线播放| 国产suv精品一区二区三区| 欧美性大战久久久久久久蜜臀| 欧美成人国产一区二区| ...中文天堂在线一区| 免费成人美女在线观看.| 成人高清视频免费观看| 欧美一区二区日韩一区二区| 国产精品乱人伦一区二区| 日韩精品乱码免费| 91亚洲精品一区二区乱码| 精品少妇一区二区三区视频免付费| 亚洲猫色日本管| 国产成人免费在线观看不卡|