📄 main.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-2000 Pavel Haiduc, HP InfoTech S.R.L.
#pragma used+
void delay_us(unsigned int n);
void delay_ms(unsigned int n);
#pragma used-
// 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
//本文件为mega128板的底层驱动与定义文件
/*===========mega128开发板引脚定义======================================
1.-------公共引脚---------
WR: PG.0
RD: PG.1
ALE: PG.2
RST0: PG.4 //用于外设高电平复位
RST1: PG.3 //用于外设低电平复位
CD: PB.4 //用于选择外设的命令或数据端口
TBZ: PE.2 //用于判断触摸板是否转换完成
MCU_CS0: PD.4
MCU_CS1: PD.5
MCU_CS2: PD.6
CSEN: PD.7
SPI_MISO: PB.3
SPI_MOSI: PB.2
SPI_SCLK: PB.1
SPI_CS: PB.0
PWM0: PB.5 //单片机OC1A
PWM1: PB.6 //单片机OC1B
PWM2: PB.7 //单片机OC2/OC1C
INT0: PD.0 //单片机外部中断0
INT1: PD.1 //单片机外部中断1
INT2: PD.2 //单片机外部中断2
INT3: PD.3 //单片机外部中断3
INT4: PE.4 //单片机外部中断4
INT5: PE.5 //单片机外部中断5
INT6: PE.6 //单片机外部中断6
INT7: PE.7 //单片机外部中断7
2.-----------------------外设引脚-------------------------------------------------
1> 8位并行端口JP1
---------------------------------------------------------------------
1: +5V 2: DATA0 (PA.0)
3: WR (PG.0) 4: DATA1 (PA.1)
5: RD (PG.1) 6: DATA2 (PA.2)
7: CS1 8: DATA3 (PA.3)
9: CD (PB.4) 10: DATA4 (PA.4)
11: INT1 (PD.1) 12: DATA5 (PA.5)
13: RST1 (PG.3) 14: DATA6 (PA.6)
15: GND 16: DATA7 (PA.7)
-----------------------------------------------------------------------
2> 8位并行端口JP2
-----------------------------------------------------------------------
1: +5V 2: DATA0 (PA.0)
3: WR (PG.0) 4: DATA1 (PA.1)
5: RD (PG.1) 6: DATA2 (PA.2)
7: CS2 8: DATA3 (PA.3)
9: CD (PB.4) 10: DATA4 (PA.4)
11: INT2 (PD.2) 12: DATA5 (PA.5)
13: RST1 (PG.3) 14: DATA6 (PA.6)
15: GND 16: DATA7 (PA.7)
-----------------------------------------------------------------------
3> SPI串行端口JP14
-----------------------------------------------------------------------
1: +5V 2: MCU_ADC0 (PF.0)
3: INT6 (PF.6) 4: MISO (PB.3)
5: RST1 (PG.1) 6: MOSI (PB.2)
7: CS4 8: SCLK (PB.1)
9: GND 10: SPI_CS (PB.0)
-----------------------------------------------------------------------
4> nRF24L01接口JP13
-----------------------------------------------------------------------
1: GND 2: +3.3V
3: CE/MCU_ADC0(PF.0) 4: CS3
5: SCLK (PB.1) 6: MOSI (PB.2)
7: MISO (PB.3) 8: INT7 (PE.7)
------------------------------------------------------------------------
5> TFT液晶屏与触摸板接口
------------------------------------------------------------------------
***************液晶屏接口**************
1: +3.3V 2: GND
3: DATA0 (PA.0) 4: DATA1 (PA.1)
5: DATA2 (PA.2) 6: DATA3 (PA.3)
7: DATA4 (PA.4) 8: DATA5 (PA.5)
9: DATA6 (PA.6) 10: DATA7 (PA.7)
11: DATA8 (PC.0) 12: DATA9 (PC.1)
13: DATA10 (PC.2) 14: DATA11 (PC.3)
15: DATA12 (PC.4) 16: DATA13 (PC.5)
17: DATA14 (PC.6) 18: DATA15 (PC.7)
19: CS6 20: CD (PB.4)
21: WR (PG.0) 22: RD (PG.1)
23: PWM2 (PB.7) 24: RST1 (PG.1)
***************触摸板接口***************
25: DOUT/MISO (PB.3) 26: INT3 (PD.3)
27: DIN/MOSI (PB.2) 28: TBZ (PE.2)
29: SCLK (PB.1) 30: CS5
----------------------------------------------------------------------------
6> USB(375A)并行接口
------------------------------------------------------------------------
DTAT: PORTA CS: CS0
WR: PG.0 RD: PG.1
INT0: PD.0 RST0: PG.4
CD: PB.4
-------------------------------------------------------------------------
7> VS1003控制引脚
-------------------------------------------------------------------------
SI/MOSI: PB.2 SO/MISO: PB.3
SCLK: PB.1 DREQ/INT5: PE.5
xCS/SPI_CS: PB.0 xDCS/MCU_ADC1: PF.1
xRESET/RST1: PG.1
-------------------------------------------------------------------------
8> PS2接口
-------------------------------------------------------------------------
SCLK/PS2_SCLK: INT4 (PE.4)
SDAT/PS2_DATA: PE.3
--------------------------------------------------------------------------
=================================================================
*/
//============板级宏定义===========================================
//***********************引脚定义类***********************************
//***********************引脚电平控制类*******************************
//***********************外部片选类************************************
//***********************373数据锁存***********************************
//************************************************************************
//************************外部操作***************************************
//====================硬件SPI接口初始化===============================
void SPI_Init()
{
SPDR=0x00; //清空数据缓冲寄存器
SPCR=0x51; //B7:中断使能 B6:SPI使能 B5:首发极性L1H0 B4: M1S0
//B3:结束沿电平选择 B2:采样沿选择 B1-B0:Fsclk
SPSR=0x01; //B7:中断标志 B6:写冲突标志 B0:倍速Fsclk
}
//==================================================================
//====================SPI读操作======================================
void SPI_ReadBytes(unsigned char *Pstr,unsigned char Num)
{
while(Num--){
SPDR=*Pstr; //写数据至SPI发送寄存器
while(!(SPSR&0x80)); //等待发送结束
*Pstr++=SPDR; //取接收字符
}
}
//==================================================================
//====================SPI写操作======================================
void SPI_WriteBytes(unsigned char *Pstr,unsigned char Num)
{
while(Num--){
SPDR=*Pstr++; //写数据至SPI发送寄存器
while(!(SPSR&0x80)); //等待发送结束
}
}
//==================================================================
//============板初始化===============================================
void Board_Init(void)
{
PORTA=0x00; //初始化A口为输入状态
DDRA=0xFF;
PORTB=0x00; //B口初始化为输出
DDRB=0xFF;
PORTC=0x00; //C口初始化为输出
DDRC=0xFF;
PORTD=0x00; //D口初始化
DDRD=0xF0;
PORTE=0x00; //E口初始化 PS2_SCLK输入 PS2_DATA输入 MISO输入
DDRE=0x05;
(*(unsigned char *) 0x62)=0x00; //F口初始化 MCU_ADC0输出 MCU_ADC1输出
(*(unsigned char *) 0x61)=0x03;
(*(unsigned char *) 0x65)=0x03; //G口初始化 WR=1 RD=1 ALE=0
(*(unsigned char *) 0x64)=0xFF;
//**************初始化SPI接口*************
SPI_Init();
//**************初始化PWM波**************//用于TFT亮度控制
//**************外设复位*******************
(*(unsigned char *) 0x65)|=0x10;
(*(unsigned char *) 0x65)&=0xF7;
delay_ms(300);
(*(unsigned char *) 0x65)&=0xEF;
(*(unsigned char *) 0x65)|=0x08;
}
//===================================================================
// CodeVisionAVR C Compiler
// (C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L.
/*
CodeVisionAVR C Compiler
Prototypes for mathematical functions
Portions (C) 1998-2001 Pavel Haiduc, HP InfoTech S.R.L.
Portions (C) 2000-2001 Yuri G. Salov
*/
#pragma used+
unsigned char cabs(signed char x);
unsigned int abs(int x);
unsigned long labs(long x);
float fabs(float x);
signed char cmax(signed char a,signed char b);
int max(int a,int b);
long lmax(long a,long b);
float fmax(float a,float b);
signed char cmin(signed char a,signed char b);
int min(int a,int b);
long lmin(long a,long b);
float fmin(float a,float b);
signed char csign(signed char x);
signed char sign(int x);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -