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

📄 mcu.i

📁 ATmega128L+CC2420的单片机源程序
💻 I
字号:
// CodeVisionAVR C Compiler
// (C) 1998-2004 Pavel Haiduc, HP InfoTech S.R.L.

// I/O registers definitions for the ATmega128


#pragma used+
sfrb PINF=0;
sfrb PINE=1;
sfrb DDRE=2;
sfrb PORTE=3;
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4;      // 16 bit access
sfrb ADCSRA=6;
sfrb ADMUX=7;
sfrb ACSR=8;
sfrb UBRR0L=9;
sfrb UCSR0B=0xa;
sfrb UCSR0A=0xb;
sfrb UDR0=0xc;
sfrb SPCR=0xd;
sfrb SPSR=0xe;
sfrb SPDR=0xf;
sfrb PIND=0x10;
sfrb DDRD=0x11;
sfrb PORTD=0x12;
sfrb PINC=0x13;
sfrb DDRC=0x14;
sfrb PORTC=0x15;
sfrb PINB=0x16;
sfrb DDRB=0x17;
sfrb PORTB=0x18;
sfrb PINA=0x19;
sfrb DDRA=0x1a;
sfrb PORTA=0x1b;
sfrb EECR=0x1c;
sfrb EEDR=0x1d;
sfrb EEARL=0x1e;
sfrb EEARH=0x1f;
sfrw EEAR=0x1e;   // 16 bit access
sfrb SFIOR=0x20;
sfrb WDTCR=0x21;
sfrb OCDR=0x22;
sfrb OCR2=0x23;
sfrb TCNT2=0x24;
sfrb TCCR2=0x25;
sfrb ICR1L=0x26;
sfrb ICR1H=0x27;
sfrw ICR1=0x26;   // 16 bit access
sfrb OCR1BL=0x28;
sfrb OCR1BH=0x29;
sfrw OCR1B=0x28;  // 16 bit access
sfrb OCR1AL=0x2a;
sfrb OCR1AH=0x2b;
sfrw OCR1A=0x2a;  // 16 bit access
sfrb TCNT1L=0x2c;
sfrb TCNT1H=0x2d;
sfrw TCNT1=0x2c;  // 16 bit access
sfrb TCCR1B=0x2e;
sfrb TCCR1A=0x2f;
sfrb ASSR=0x30;
sfrb OCR0=0x31;
sfrb TCNT0=0x32;
sfrb TCCR0=0x33;
sfrb MCUCSR=0x34;
sfrb MCUCR=0x35;
sfrb TIFR=0x36;
sfrb TIMSK=0x37;
sfrb EIFR=0x38;
sfrb EIMSK=0x39;
sfrb EICRB=0x3a;
sfrb RAMPZ=0x3b;
sfrb XDIV=0x3c;
sfrb SPL=0x3d;
sfrb SPH=0x3e;
sfrb SREG=0x3f;
#pragma used-


// Interrupt vectors definitions


/*
  CodeVisionAVR C Compiler
  (C) 1998-2004 Pavel Haiduc, HP InfoTech S.R.L.

  Prototype for SPI access function */
  

#pragma used+
unsigned char spi(unsigned char data);
#pragma used-

#pragma library spi.lib


/*******************************************************************************************************
 *******************************************************************************************************
 **************************                   Global macros                   **************************
 *******************************************************************************************************
 *******************************************************************************************************/




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                定义 Mega128L 寄存器位               ************************
 *******************************************************************************************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
//SPI--->SPCR 

//SPI--->SPSR

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



/*******************************************************************************************************
 *******************************************************************************************************
 **************************                ATmega128L I/O PORTS               **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
// Port B 

// Port D 
//#define UART1_RXD       2 // PD.2 - Input:  UART1 RXD 
//#define UART1_TXD       3 // PD.3 - Output: UART1 TXD 
//#define UART1_CTS       7 // PD.7 - Input:  UART HW handshaking: CTS 

// Port E 


// Enables/disables the SPI interface

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



 /******************************************************************************************************
 *******************************************************************************************************
 **************************                 CC2420 PIN ACCESS                 **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
// Pin status

// CC2420 voltage regulator enable pin

// The CC2420 reset pin  
//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                   SERIAL PORTS                    **************************
 *******************************************************************************************************
 *******************************************************************************************************/
 
//-------------------------------------------------------------------------------------------------------


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




/*******************************************************************************************************
 *******************************************************************************************************
 **************************               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);
//------------------------------------------------------------------------------------------------------



// CodeVisionAVR C Compiler
// (C) 1998-2005 Pavel Haiduc, HP InfoTech S.R.L.

// Prototypes for string functions



#pragma used+

char *strcat(char *str1,char *str2);
char *strcatf(char *str1,char flash *str2);
char *strchr(char *str,char c);
signed char strcmp(char *str1,char *str2);
signed char strcmpf(char *str1,char flash *str2);
char *strcpy(char *dest,char *src);
char *strcpyf(char *dest,char flash *src);
unsigned char strcspn(char *str,char *set);
unsigned char strcspnf(char *str,char flash *set);
unsigned int strlenf(char flash *str);
char *strncat(char *str1,char *str2,unsigned char n);
char *strncatf(char *str1,char flash *str2,unsigned char n);
signed char strncmp(char *str1,char *str2,unsigned char n);
signed char strncmpf(char *str1,char flash *str2,unsigned char n);
char *strncpy(char *dest,char *src,unsigned char n);
char *strncpyf(char *dest,char flash *src,unsigned char n);
char *strpbrk(char *str,char *set);
char *strpbrkf(char *str,char flash *set);
signed char strpos(char *str,char c);
char *strrchr(char *str,char c);
char *strrpbrk(char *str,char *set);
char *strrpbrkf(char *str,char flash *set);
signed char strrpos(char *str,char c);
char *strstr(char *str1,char *str2);
char *strstrf(char *str1,char flash *str2);
unsigned char strspn(char *str,char *set);
unsigned char strspnf(char *str,char flash *set);
char *strtok(char *str1,char flash *str2);
 

unsigned int strlen(char *str);
void *memccpy(void *dest,void *src,char c,unsigned n);
void *memchr(void *buf,unsigned char c,unsigned n);
signed char memcmp(void *buf1,void *buf2,unsigned n);
signed char memcmpf(void *buf1,void flash *buf2,unsigned n);
void *memcpy(void *dest,void *src,unsigned n);
void *memcpyf(void *dest,void flash *src,unsigned n);
void *memmove(void *dest,void *src,unsigned n);
void *memset(void *buf,unsigned char c,unsigned n);

#pragma used-
#pragma library string.lib




char rx_buffer0[1   ];

unsigned char rx_counter0;

bit rx_buffer_overflow0;     // This flag is set on USART0 Receiver buffer overflow



/***********************************************
* 串口0初始化函数
************************************************/
void USART0_Init(void)
{
    // 以下是8M晶振时的参数设置
    // USART0 initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART0 Receiver: On
    // USART0 Transmitter: On
    // USART0 Mode: Asynchronous
    // USART0 Baud rate: 9600
    
    UCSR0A=0x00;
    //接收器、发生器和接收中断使能    
    UCSR0B=0x98;
    //设置帧格式:8 Data, 1 Stop, No Parity
    (*(unsigned char *) 0x95)=0x06;
    //设置波特率
    (*(unsigned char *) 0x90)=0x00;
    UBRR0L=0x33;
}
 

/***********************************************
* 字符发送函数
* 发送采用查询方式
************************************************/
void USART0_Send_Char(unsigned char data)  //发送采用查询方式
{
    while(!(UCSR0A&(1<<5))); // 等待发送缓冲器为空
    UDR0 = data;// 将数据放入缓冲器,发送数据
}

 
/***********************************************
* 字符串发送函数
* 发送采用查询方式
************************************************/ 
void USART0_Send_Str(unsigned char *ptr)
{
	while (*ptr)
	{
		USART0_Send_Char(*ptr++);
	}
	//USART0_Send_Char(0x0D);
	//USART0_Send_Char(0x0A);  //结尾发送回车换行
}


/***********************************************
* 字符接收函数
* 接收采用查询方式
************************************************/
unsigned char USART0_Receive_Char(void)
{
    while ( !(UCSR0A & (1<<7)) );   // 等待接收数据
    return UDR0; // 从缓冲器中获取并返回数据
}


/***********************************************
* 刷新接收缓冲器函数(缓冲器被清空)
************************************************/
void USART0_Flush(void)
{
    unsigned char dummy;
    while ( UCSR0A & (1<<7) ) dummy = UDR0;
}


/***********************************************
* 清空串口缓冲区函数
************************************************/
void USART0_Clear_rx_buffer0(void)
{
    memset(rx_buffer0,'',sizeof(rx_buffer0)); 
    rx_counter0=0;
}



       
/***********************************************************************************************
* Mega128端口初始化函数
************************************************************************************************/
void PORT_Init(void)
{
    DDRB |= (1<<4  )|(1<<7  ); 
    DDRD |= (1<<7 );
    DDRE |= (1<<2 )|(1<<3 );
    PORTD |= (1<<5 );     //按键接口 输入高
    PORTE |= (1<<4 )|(1<<5 );
    
    DDRC = 0x00;
    PORTC = 0xFF;
}


/***********************************************************************************************
* SPI初始化函数
************************************************************************************************/
void SPI_Init(void)
{
    unsigned char temp;
    /* 设置SS、SCK和MOSI为输出,其他为输入 */
    DDRB |= (1<<0  )|(1<<1  )|(1<<2  );
    PORTB |= (1<<0  );    
    /* 设置SPI主机模式,设置时钟速率为fck/16 */ 
    SPCR = (1<<6   )|(1<<4   )|(1<<0   );
        
    SPSR = 0x00;
    temp = SPSR;
    temp = SPDR; //清空SPI和中断标志,使SPI空闲  
}   



void Sleep(void)
{
    MCUCR = 0x30;     //掉电模式
    #asm("sleep") 
}

⌨️ 快捷键说明

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