⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uda1341.c.bak

📁 我写的atmega16驱动的nrf24l01程序
💻 BAK
字号:
//====================================================================
// File Name : 2410iis.c
// Function  : S3C2410 IIS (UDA1341) Record & Play Test Program
//             (DMA2, Double Buffer, Record, Play)
// Program   : Shin, On Pil (SOP)
// Date      : May 10, 2002
// Version   : 0.0
// History
//   0.0 : Programming start (March 06, 2002) -> SOP
//====================================================================
#define L3D_L	L3PORT&=~L3D	//
#define L3M_L	L3PORT&=~L3M	//
#define L3C_L	L3PORT&=~L3C	//

#define L3D_H	L3PORT|=L3D	//
#define L3M_H	L3PORT|=L3M	//
#define L3C_H	L3PORT|=L3C	//



#define PLAY    0
#define RECORD  1
#define REC_LEN 0x50000       //327,680 Bytes


//******************[ Init1341 ]**************************************
void Init1341(char mode)
{
    //Port Initialize
//----------------------------------------------------------
//   PORT B GROUP
//Ports  :   GPB4    GPB3   GPB2  
//Signal :  L3CLOCK L3DATA L3MODE
//Setting:   OUTPUT OUTPUT OUTPUT 
//           [9:8]   [7:6}  [5:4]
//Binary :     01  ,   01    01 
//----------------------------------------------------------    
    rGPBDAT = rGPBDAT & ~(L3M|L3C|L3D) |(L3M|L3C); //Start condition : L3M=H, L3C=H
    rGPBUP  = rGPBUP  & ~(0x7<<2) |(0x7<<2);       //The pull up function is disabled GPB[4:2] 1 1100    
    rGPBCON = rGPBCON & ~(0x3f<<4) |(0x15<<4);     //GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE)

      //L3 Interface
    _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
    _WrL3Data(0x60,0);       //0,1,10,000,0 : Reset,256fs,no DCfilter,iis

    _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
    _WrL3Data(0x20,0);       //0,0,10,000,0 : No reset,256fs,no DCfilter,iis
    
    _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
    _WrL3Data(0x81,0);       //1,0,0,0,0,0,01 : OGS=0,IGS=0,ADC_NI,DAC_NI,sngl speed,AoffDon
    
      //record
    if(mode)
    {
        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
        _WrL3Data(0xa2,0);       //1,0,1,0,0,0,10 : OGS=0,IGS=1,ADC_NI,DAC_NI,sngl speed,AonDoff

        _WrL3Addr(0x14 + 0);     //DATA0 (000101xx+00)
        _WrL3Data(0xc2,0);       //11000,010  : DATA0, Extended addr(010) 
        _WrL3Data(0x4d,0);       //010,011,01 : DATA0, MS=9dB, Ch1=on Ch2=off, 
    }
}


//===================================================================

//===================================================================
void _WrL3Addr(unsigned char data)
{       
unsigned char i;
	L3D_L;//L3D=L, L3M=L(in address mode), L3C=H
	l3M_L;
	L3C_H;

	_NOP();_NOP();	

    for(i=0;i<8;i++)                    //LSB first
    {
		L3C_L;//L3C=L
		if(data & 0x1)                  //If data's LSB is 'H'
			L3D_H;             //L3D=H             
		else
			L3D_L;             //L3D=H             
		
		_NOP();_NOP();	
		_NOP();_NOP();	
		
		L3C_H;             //L3C=H
		
		_NOP();_NOP();	
		_NOP();_NOP();	
		data >>= 1;
    }
	l3M_H;
	L3C_H;//L3M=H,L3C=H   
}

//===================================================================
void _WrL3Data(unsigned char data,int halt)
{
unsigned char  i;

    if(halt)
    {
		L3D_L;//L3D=L, L3M=L(in address mode), L3C=H
		l3M_L;
		L3C_H;
		_NOP():_NOP():_NOP()://tstp(L3) > 190ns
    }

	l3M_H;
	_NOP():_NOP():_NOP()://tstp(L3) > 190ns
    for(i=0;i<8;i++)
    {
		L3C_L;//L3C=L
		if(data & 0x1)                  //If data's LSB is 'H'
			L3D_H;             //L3D=H             
		else
			L3D_L;             //L3D=H             
		
		_NOP();_NOP();	
		_NOP();_NOP();	
		
		L3C_H;             //L3C=H
		
		_NOP();_NOP();	
		_NOP();_NOP();	
		data >>= 1;
    }
	l3M_H;
	L3C_H;//L3M=H,L3C=H   
}


//===================================================================
void Muting(void)
{

    if(mute)    //Mute
    {
        _WrL3Addr(0x14 + 0);            //DATA0 (000101xx+00)
        _WrL3Data(0xa4,0);              //10,1,00,1,00 : after, no de-emp, mute, flat 
    }
    else        //No mute
    {
        _WrL3Addr(0x14 + 0);            //DATA0 (000101xx+00)
        _WrL3Data(0xa0,0);              //10,1,00,0,00 : after, no de-emp, no mute, flat 
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -