📄 mcu.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 + -