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

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

?? acorr.c

?? 五部分
?? C
字號:
/****************************************************************************
**                       $TITLE: ACORR.C$
** ACORR.C
** ---------
**    Brings data in from the codec, and runs it through an Acorr algorithm.
**    the data can be plotted in real time at the host or be sent to 
**    oscilloscope through the codec.
**
****************************************************************************/
/*--------------------------------------------------------------------------
   EXTERNAL DECLARATIONS
--------------------------------------------------------------------------*/
extern volatile int user_tx_buf[6];
extern volatile int user_tx_ready;
extern volatile int user_rx_buf[6];
extern volatile int user_rx_ready;
/*--------------------------------------------------------------------------
    INCLUDES
--------------------------------------------------------------------------*/
#include <def21060.h>
#include <21065l.h>
#include <signal.h>
#include <macros.h>
#include <limits.h>
#include <trans.h>
#include <float.h>
#include <math.h>
#include <ezkit/1819regs.h>

/*--------------------------------------------------------------------------
   CONSTANT & MACRO DEFINITIONS
--------------------------------------------------------------------------*/
/* Number of sample points in the calculation */
#define NUM_POINTS 256

/* Codec tag word to send out left and right samples */
#define DOUT_TAG         0x9800

/* Codec tag word to send out address and data slots */
#define REGOUT_TAG       0xe000

/* This is the codec register setting for line input on both channels */
#define SOURCE_IS_LINE   0x0404
/* This is the codec register setting for mic input on both channels */
#define SOURCE_IS_MIC   0


/* Codec addreses */
#define SOURCE_ADDR      0x1a00
#define RECGAIN_ADDR     0x1c00

#define BETWEEN_SAMPLES  50000   /* Do fft every .5 secs @ 48 kHz */

/* The program can be in 1 of 3 modes.  The other mode is a wait mode
   and is anything greater than 2 */
#define SAMPLE_MODE     1
#define CALCULATE_MODE  2

#define CODEC_ISR_VECT 0X9001
/*--------------------------------------------------------------------------
   GLOBAL DECLARATIONS
--------------------------------------------------------------------------*/

int data_count;
int out_count;
/* The output data is stored here */
int data[NUM_POINTS];

int mode; //  mode 1 = collecting data points. mode 2 = calculating ACORR

/* Use this array for calculating the acorr, then copy result into data[] */
int tempdata[NUM_POINTS];
float result[NUM_POINTS];
/*--------------------------------------------------------------------------
   FUNCTION PROTOTYPES
--------------------------------------------------------------------------*/
void main (void);
void sample_codec( void );
void init_codec( void );
/****************************************************************************
** Procedure:  sample_codec()
**
** Arguments:  None
**
** Returns:    None
**
** Desc:       Gets data in from the codec and sends the data or noise
**             back out to the codec.  If mode = SAMPLE_MODE, 128
**             consecutive samples are taken from the codec for calculating
**             the FFT.
**
****************************************************************************/
void sample_codec( void )
{
  // Copy output buffers to transmit data buffers.
   user_tx_buf[LEFT_CHANL] = data[out_count];
   user_tx_buf[RIGHT_CHNL] = data[out_count];
   out_count++;
   if(out_count>=NUM_POINTS) out_count=0;
   user_tx_buf[TAG] = DOUT_TAG;
   user_tx_ready = 1;  
    //
   if( mode == SAMPLE_MODE )
   {
      tempdata[data_count] = user_rx_buf[LEFT_CHANL];
      data_count++;

    /* If we have 128 samples, stop sampling and calculate */
      if( data_count >= 128 )
      {
          data_count = 0;
          mode = CALCULATE_MODE;
      }
   }
}

/****************************************************************************
**
** Procedure:  init_codec()
**
** Arguments:  None
**
** Returns:    None
**
** Desc:       Turns on the codec interrupt then initializes the codec
**             source and record gain.
**
****************************************************************************/
void init_codec( void )
{
   asm("#include <def21065l.h>");
   interrupt(SIG_SPT1I,(void (*)(int))CODEC_ISR_VECT);
   asm("BIT SET IMASK SPT1I;");   /* unmasks sport interrupt */

   /* Set source to LINE */
   user_tx_buf[TAG] =  REGOUT_TAG;
   user_tx_buf[ADDR] = SOURCE_ADDR;
   user_tx_buf[DATA] = SOURCE_IS_LINE;
   user_tx_ready = 1;
   idle();                       /* Wait for codec register to get set */
   idle();

   /* Set record gain */
   user_tx_buf[TAG] =  REGOUT_TAG;
   user_tx_buf[ADDR] = RECGAIN_ADDR;
   user_tx_buf[DATA] = 0;
   user_tx_ready = 1;
   idle();                      /* Wait for codec register to get set */
   idle();

   return;
}

/****************************************************************************
**
** Procedure:  main()
**
** Arguments:  None
**
** Returns:    None
**
** Desc:       Sets everything up and then goes into its sampling and
**             processing loop.
**
****************************************************************************/
void main ( void )
{
   int i;                       /* counter variable */
   int cntr;                    /* counter variable */
   float fdata[NUM_POINTS];     /* array to convertg int points to floats */
   int *optr;
   float *fptr, *xptr, *yptr;
   float  fmin,fmax,favg,range;
   int offset;
   float scale_value;
   data_count = 0;
   out_count = 0;
   mode = SAMPLE_MODE;   /* Start with the first 128 samples */

   init_codec();         /* Set up codec for line in */

   for(;;)              /* Start the sample/calculate/wait loop */
   {
        /* Just after accumulating the 128 points, calculate the FFT */
        if( mode == CALCULATE_MODE )
        {
            optr = tempdata;
            fptr = fdata;
            /* to convertg int points to floats */
            for( i=0 ; i<NUM_POINTS ; i++ )
            {
                *fptr++ = *optr++;
            }
            /* Acorr*/
            /* Stage 1 */
	    fptr = result+NUM_POINTS/2-1;
            for (cntr=0; cntr< NUM_POINTS/2; cntr++)
            {
 	          xptr=fdata;
 	          yptr=fdata+cntr;
 	          for( i=NUM_POINTS/2; i>0 ; i-- )
              	  {
		        *fptr = *fptr + *xptr++ * *yptr++;
              	  }
                  fptr++;
            }
            /* Stage 2 */
	    xptr=result+NUM_POINTS/2-2;
	    yptr=result+NUM_POINTS/2;
	    for( i=0 ; i<NUM_POINTS/2-1 ; i++ )
	    {
	      	*xptr-- = *yptr++;
	    }

          ///////scale result///////////
            offset = 50;scale_value = 25.0;
            fmin = FLT_MAX;fmax = FLT_MIN;

	        favg = 0;
            fptr = &result[0];
            for( i=0 ; i<NUM_POINTS ; i++ )
            {
                fmax = fmax > *fptr ? fmax : *fptr;
                fmin = fmin < *fptr ? fmin : *fptr;
                favg += *fptr;
                fptr++;
            }
            favg /= (NUM_POINTS - 2);
            range = fmax - favg;
            
           /* Copy data into output buffer - dont let host get data
               right in the middle */
            asm("#include <def21065l.h>");
            asm volatile ("BIT CLR IMASK IRQ0I;");
			fptr = result;
            optr = data;
            for( i=0 ; i<NUM_POINTS ; i++ )
            {
                *optr++ =150*( offset + (int)(scale_value * ( (*fptr++ - favg) / range )) );
            }
            for (cntr = 0; cntr < NUM_POINTS; cntr++)
            {
				tempdata[cntr]=0;
				result[cntr]=0;
            }
            asm volatile ("BIT SET IMASK IRQ0I;");
	}

      
      /*  Waiting.....,since the host can't sample that often anyway */
      if (mode >= CALCULATE_MODE)
      {
         mode++;
		if (mode >= BETWEEN_SAMPLES)
         {
            mode = SAMPLE_MODE;
         }
      }

      user_rx_ready = 1;          /* Tell codec isr we're ready for data */
      while(user_rx_ready) idle(); /* Wait for codec data */
      sample_codec();              /* Get data */
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆成人久久精品二区三区红| 欧美日韩一卡二卡三卡| 欧美私模裸体表演在线观看| www欧美成人18+| 亚洲成人免费看| 93久久精品日日躁夜夜躁欧美| 欧美久久久久久久久久| 国产精品成人免费| 国产精品白丝jk黑袜喷水| 欧美精品乱码久久久久久按摩 | 欧美人妖巨大在线| 国产精品久久久久久久第一福利 | 成人午夜视频网站| 91精品国产品国语在线不卡| 一区二区三区中文字幕| 成人小视频免费在线观看| 精品国产乱码久久久久久闺蜜| 一区二区欧美在线观看| 91美女蜜桃在线| 国产精品理论片| 国产999精品久久久久久绿帽| 日韩精品中午字幕| 国产精品嫩草影院com| 日韩综合在线视频| 欧美主播一区二区三区美女| 亚洲桃色在线一区| gogogo免费视频观看亚洲一| 欧美激情一区二区三区蜜桃视频| 精品一区二区影视| 日韩欧美你懂的| 丝袜a∨在线一区二区三区不卡 | 毛片av一区二区| 99精品偷自拍| 久久久九九九九| 国产在线不卡视频| 2024国产精品| 成人免费高清视频| 国产精品久久久久久久久图文区| 成人精品gif动图一区| 中文字幕欧美区| 91丝袜高跟美女视频| 一区二区三区加勒比av| 欧美日韩高清不卡| 美女国产一区二区三区| 久久综合网色—综合色88| 国产精品资源站在线| 国产精品嫩草99a| 色综合久久久久综合体桃花网| 亚洲午夜视频在线| 日韩欧美一区二区不卡| 国产东北露脸精品视频| 亚洲视频一区二区在线观看| 欧美日韩国产高清一区二区三区 | 日韩欧美国产一区二区三区| 久久综合综合久久综合| 国产三级精品三级在线专区| 一本一道久久a久久精品| 日韩高清不卡一区| 国产日本亚洲高清| 99re这里只有精品6| 污片在线观看一区二区| 久久综合九色综合97_久久久| 99天天综合性| 免费看日韩精品| 亚洲国产精品ⅴa在线观看| 欧美亚洲动漫制服丝袜| 国产一区二区在线影院| 亚洲六月丁香色婷婷综合久久| 欧美日本精品一区二区三区| 国产.欧美.日韩| 午夜精品久久久| 国产精品久久午夜| 日韩欧美国产高清| 在线视频一区二区免费| 国产成人亚洲综合a∨猫咪| 亚洲一区二区三区不卡国产欧美| 亚洲精品一区二区三区99| 97国产一区二区| 亚洲成人午夜影院| 国产精品热久久久久夜色精品三区| 欧美亚洲日本一区| 国产成人精品免费在线| 日韩在线卡一卡二| 亚洲欧美中日韩| 精品成人免费观看| 欧美日韩在线播| av在线不卡电影| 狠狠色丁香久久婷婷综合_中| 亚洲最色的网站| 中文字幕日韩精品一区| 欧美v国产在线一区二区三区| 欧美午夜理伦三级在线观看| 成人精品视频网站| 国产一区久久久| 免费成人美女在线观看| 五月婷婷综合激情| 一区二区三区毛片| 亚洲丝袜另类动漫二区| 日本一区二区三区久久久久久久久不 | 日韩精品亚洲一区| 亚洲女子a中天字幕| 欧美激情在线一区二区三区| 欧美本精品男人aⅴ天堂| 欧美精品色综合| 欧美日韩国产一区二区三区地区| 成人av电影在线| www.欧美亚洲| 成人深夜在线观看| 丁香天五香天堂综合| 国产精品一区二区三区乱码| 狠狠色丁香九九婷婷综合五月| 日韩电影免费一区| 日韩国产精品久久久久久亚洲| 一区二区久久久久久| 亚洲一卡二卡三卡四卡无卡久久| 国产精品灌醉下药二区| 亚洲欧洲日韩av| 亚洲精品久久久蜜桃| 一区二区三区四区国产精品| 亚洲一区中文在线| 亚洲v日本v欧美v久久精品| 亚洲大型综合色站| 日本不卡视频在线观看| 精品一区二区久久久| 国产在线麻豆精品观看| 狠狠色狠狠色综合日日91app| 激情综合色播激情啊| 高清视频一区二区| 99久久精品国产毛片| 精品视频免费看| 欧美一区国产二区| 国产亚洲精品福利| 亚洲欧美日韩中文字幕一区二区三区| 夜夜夜精品看看| 奇米四色…亚洲| 成人手机电影网| 欧美日韩性生活| 久久久91精品国产一区二区三区| 国产精品日产欧美久久久久| 亚洲成人福利片| 久久99精品国产麻豆婷婷洗澡| 国产激情精品久久久第一区二区 | 亚洲精品一区二区三区福利| 国产日韩影视精品| 亚洲一二三专区| 国产一区二区在线观看免费| 99麻豆久久久国产精品免费| 欧美日韩高清一区二区| 久久久精品综合| 亚洲国产成人tv| 国产精品一线二线三线精华| 欧洲av一区二区嗯嗯嗯啊| 欧美刺激脚交jootjob| 国产精品不卡在线| 久久精品国产77777蜜臀| 成人黄色小视频在线观看| 欧美一区二区三级| 亚洲视频免费在线观看| 久久精品国产精品亚洲综合| 91久久香蕉国产日韩欧美9色| 欧美成人三级在线| 一区二区三区欧美视频| 国产美女精品一区二区三区| 欧美日韩中字一区| 国产日韩欧美不卡在线| 免费精品视频在线| 在线观看亚洲专区| 中文字幕乱码一区二区免费| 久久福利资源站| 欧美日韩国产影片| 亚洲精品国产第一综合99久久| 国产高清在线观看免费不卡| 91.麻豆视频| 亚洲一卡二卡三卡四卡| 9色porny自拍视频一区二区| 亚洲精品在线电影| 美女视频第一区二区三区免费观看网站| 99re这里只有精品首页| 欧美国产日韩a欧美在线观看| 久久99久久久久| 欧美一级一区二区| 五月天精品一区二区三区| 在线亚洲欧美专区二区| 亚洲女人****多毛耸耸8| 成人免费看片app下载| 国产欧美一区二区在线| 国产精品一区二区久久不卡 | 5858s免费视频成人| 亚洲精选一二三| 91天堂素人约啪| 亚洲欧美自拍偷拍色图| 波多野结衣视频一区| 国产欧美日韩精品一区| 国产精品1024| 国产精品丝袜黑色高跟| 成人av在线一区二区三区| 日韩一区在线播放| 色又黄又爽网站www久久| 亚洲伦在线观看| 在线观看91精品国产入口|