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

📄 phy.i

📁 ATmega128L+CC2420的单片机源程序
💻 I
📖 第 1 页 / 共 2 页
字号:
 **************************               EXTERNAL INTERRUPTS                 **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
// Rising edge trigger for external interrupt 0 (FIFOP)

// FIFOP on external interrupt 0

// SFD interrupt on timer 1 capture pin
//-------------------------------------------------------------------------------------------------------





 /******************************************************************************************************
 *******************************************************************************************************
 **************************                        LED                        **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
// LED


//------------------------------------------------------------------------------------------------------



 /******************************************************************************************************
 *******************************************************************************************************
 **************************                        KEY                        **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
// KEY
//------------------------------------------------------------------------------------------------------






 /******************************************************************************************************
 **************************                     函数声明                      **************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
void PORT_Init(void);
void SPI_Init(void);

void USART0_Init(void);
void USART0_Send_Char(unsigned char data);
void USART0_Send_Str(unsigned char *ptr);
unsigned char USART0_Receive_Char(void);
void USART0_Flush(void);
void USART0_Clear_rx_buffer0(void);  

void Sleep(void);
//------------------------------------------------------------------------------------------------------






/******************************************************************************
*******************              Commonly used types        *******************
******************************************************************************/
typedef unsigned char       BOOL;

// Data
typedef unsigned char       BYTE;
typedef unsigned int        WORD;
typedef unsigned long int   DWORD;

// Unsigned numbers
typedef unsigned char       UINT8;
typedef unsigned int        UINT16;
typedef unsigned long int   UINT32;

// Signed numbers
typedef signed char         INT8;
typedef signed int          INT16;
typedef signed long int     INT32;

   
   
   









// 下面两个要设置成一样大

 
//#define I_Am_What           COORDINATOR
//#define I_Am_What           ROUTER






/***********************************************************************************************
* 写命令选通寄存器函数
* cmd : 要写入的命令选通寄存器
* bool : 是否由本函数来使能和禁止CSn
* 返回状态字节
************************************************************************************************/
unsigned char WriteStrobeReg_spi(unsigned char cmd)
{
    unsigned char Value;
    ( PORTB &= ~(1 << (0  )) ) ;   //使能 CSn                    
    Value = spi(0x00|cmd);
    ( PORTB |=  (1 << (0  )) ) ;  // 禁止 CSn 
    //delay_ms(1);
    return Value;
}

unsigned char WriteStrobeReg(unsigned char cmd)
{
    unsigned char Value;
    Value = spi(0x00|cmd);
    //delay_ms(1);
    return Value;
}


/***********************************************************************************************
* 写配置寄存器函数
* cmd : 要写入的配置寄存器
* data : 要写入的数据
* bool : 是否由本函数来使能和禁止CSn
* 返回状态字节
************************************************************************************************/
unsigned char WriteConfigReg_spi(unsigned char cmd, unsigned int data)
{
    unsigned char TempH,TempL,Value;
    TempH = (data >> 8);
    TempL = (data & 0x00FF);

    ( PORTB &= ~(1 << (0  )) ) ;   //使能 CSn                    
    Value = spi(0x00|cmd);
    spi(TempH);
    spi(TempL);   
    ( PORTB |=  (1 << (0  )) ) ;  // 禁止 CSn 

    //delay_ms(1);
    return Value;
} 



/***********************************************************************************************
* 读配置寄存器函数
* cmd : 要读的配置寄存器
* 返回配置寄存器的值
************************************************************************************************/
unsigned int ReadConfigReg_spi(unsigned char cmd)
{
    unsigned char Status,ValueH,ValueL;
    unsigned int  Value;
    
    ( PORTB &= ~(1 << (0  )) ) ;   //使能 CSn      
    Status = spi(0x40|cmd); 
    ValueH = spi(0x00); 
    ValueL = spi(0x00);
    ( PORTB |=  (1 << (0  )) ) ;  // 禁止 CSn 
    
    Value = ValueH ;
    Value = Value<<8 ;
    Value |= ValueL ;
    
    return Value;
}




/***********************************************************************************************
* 写TXFIFO函数
* data : 要写入的数据的指针
* n : 要写入的数据的长度
************************************************************************************************/
void Write_TXFIFO(unsigned char *data,unsigned char n)
{
    unsigned char i;
    
    ( PORTB &= ~(1 << (0  )) ) ;
    WriteStrobeReg(0x3E  );
    for (i = 0; i < (n); i++) 
    {
        spi(*data++);
    }
    ( PORTB |=  (1 << (0  )) ) ;
}



/***********************************************************************************************
* 写RAM函数
* cmd : 要写入的配置寄存器
* data[] : 要写入的数据
* n : 要写入数据的长度 
* bool : 是否由本函数来使能和禁止CSn
************************************************************************************************/
void WriteRAM_spi(unsigned int cmd,unsigned char data[],unsigned char n)
{
    unsigned char cmdTempH,cmdTempL,i;
    cmdTempH = (0x007F & cmd);
    cmdTempL = ((cmd>>1) & 0x00C0);

    ( PORTB &= ~(1 << (0  )) ) ;   // 使能 CSn                    
    spi(0x80|cmdTempH);
    spi(0x00|cmdTempL);
    for(i=0; i<n; i++)
    {   
        spi(data[i]);
    }  
    ( PORTB |=  (1 << (0  )) ) ;  // 禁止 CSn

    delay_ms(1);
}



/***********************************************************************************************
* 读RAM函数
* cmd : 要读的RAM区域
* 返回读出的数据
************************************************************************************************/
unsigned char ReadRAM(unsigned int cmd)
{
    unsigned char cmdTempH,cmdTempL;
    unsigned char Value;
    cmdTempH = (0x007F & cmd);
    cmdTempL = ((cmd>>1) & 0x00C0); 

    spi(0x80|cmdTempH);
    Value = spi(0x20|cmdTempL);

    delay_ms(1);
    return Value;
}


/***********************************************************************************************
* 物理层初始化函数
************************************************************************************************/
void PHY_Init(void)
{
    PORT_Init();
    SPI_Init();
    
    if( 0x03 == 0x01 )
        USART0_Init();
}
    
    

⌨️ 快捷键说明

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