📄 mcu2.i
字号:
// CodeVisionAVR C Compiler
// (C) 1998-2004 Pavel Haiduc, HP InfoTech S.R.L.
// I/O registers definitions for the ATmega32
#pragma used+
sfrb TWBR=0;
sfrb TWSR=1;
sfrb TWAR=2;
sfrb TWDR=3;
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4; // 16 bit access
sfrb ADCSRA=6;
sfrb ADCSR=6; // for compatibility with older code
sfrb ADMUX=7;
sfrb ACSR=8;
sfrb UBRRL=9;
sfrb UCSRB=0xa;
sfrb UCSRA=0xb;
sfrb UDR=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 UBRRH=0x20;
sfrb UCSRC=0X20;
sfrb WDTCR=0x21;
sfrb ASSR=0x22;
sfrb OCR2=0x23;
sfrb TCNT2=0x24;
sfrb TCCR2=0x25;
sfrb ICR1L=0x26;
sfrb ICR1H=0x27;
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 SFIOR=0x30;
sfrb OSCCAL=0x31;
sfrb TCNT0=0x32;
sfrb TCCR0=0x33;
sfrb MCUCSR=0x34;
sfrb MCUCR=0x35;
sfrb TWCR=0x36;
sfrb SPMCR=0x37;
sfrb TIFR=0x38;
sfrb TIMSK=0x39;
sfrb GIFR=0x3a;
sfrb GICR=0x3b;
sfrb OCR0=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-2003 Pavel Haiduc, HP InfoTech S.R.L.
// Prototypes for standard I/O functions
// CodeVisionAVR C Compiler
// (C) 1998-2002 Pavel Haiduc, HP InfoTech S.R.L.
// Variable length argument list macros
typedef char *va_list;
#pragma used+
char getchar(void);
void putchar(char c);
void puts(char *str);
void putsf(char flash *str);
char *gets(char *str,unsigned int len);
void printf(char flash *fmtstr,...);
void sprintf(char *str, char flash *fmtstr,...);
void vprintf (char flash * fmtstr, va_list argptr);
void vsprintf (char *str, char flash * fmtstr, va_list argptr);
signed char scanf(char flash *fmtstr,...);
signed char sscanf(char *str, char flash *fmtstr,...);
#pragma used-
#pragma library stdio.lib
/*
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);
signed char lsign(long x);
signed char fsign(float x);
unsigned char isqrt(unsigned int x);
unsigned int lsqrt(unsigned long x);
float sqrt(float x);
float floor(float x);
float ceil(float x);
float fmod(float x,float y);
float modf(float x,float *ipart);
float ldexp(float x,int expon);
float frexp(float x,int *expon);
float exp(float x);
float log(float x);
float log10(float x);
float pow(float x,float y);
float sin(float x);
float cos(float x);
float tan(float x);
float sinh(float x);
float cosh(float x);
float tanh(float x);
float asin(float x);
float acos(float x);
float atan(float x);
float atan2(float y,float x);
#pragma used-
#pragma library math.lib
//----------------------------
unsigned char lcd_buffer[240],cdd[242],add[500];
unsigned char e,qqq,trigs[16]={0x00,0x00,0x0E,0x08,0x08,0x08,0x1C,0x2A,0x08,0x08,0x08,0x08,0x08,0x78,0x00,0x00};
unsigned char trigs2[16]={0x00,0x00,0x78,0x08,0x08,0x08,0x08,0x2A,0x1C,0x08,0x08,0x08,0x08,0x0E,0x00,0x00};
unsigned int c,ee;
unsigned char i[9],j,eep,tri,hold,holdb,biao,zhi;
unsigned long m,freq;
//----------------------------
//写入寄存器地址或参数
//----------------------------
interrupt[13] void spi_isr(void)
{
if(j!=9)
{
i[j]=SPDR;
j++;
}
}
void SdCmd(unsigned char command)
{
PORTD = command;
PORTC.3 = 0;
PORTC.4 = 0;
PORTC.1 = 0;
PORTC.1 = 1;
PORTC.4 = 1;
PORTC.3 = 1;
}
//----------------------------
//写入数据
//----------------------------
void SdData(unsigned char ddata)
{
PORTD = ddata;
PORTC.3 = 0;
PORTC.4 = 1;
PORTC.1 = 0;
PORTC.1 = 1;
PORTC.4 = 0;
PORTC.3 = 1;
}
//----------------------------
//显示文本
//----------------------------
void ShowText(unsigned char *text)
{
while(*text>0)
{
SdData(*text);
text++;
delay_us(150);
}
}
//----------------------------
//初始化
//----------------------------
void Init()
{
PORTC.5 = 0;
delay_ms(600);
PORTC.5 = 1;
delay_ms(100);
SdCmd(0x00);SdCmd(0xc5); //设置WLCR 寄存器
SdCmd(0x11);SdCmd(0x00); //设置DWLR 寄存器
SdCmd(0x81);SdCmd(0x40); //设置FRCA 寄存器
SdCmd(0xf0);SdCmd(0b10100000); //设置FNCR 寄存器
SdCmd(0x01);SdCmd(0xf0); //设置MISC 寄存
SdCmd(0x90);SdCmd(0x04); //设置SCCR 寄存器
SdCmd(0x20);SdCmd(0x27); //设置工作视窗
SdCmd(0x30);SdCmd(0xef);
SdCmd(0x40);SdCmd(0x00);
SdCmd(0x50);SdCmd(0x00);
SdCmd(0x21);SdCmd(0x27); //设置显示视窗
SdCmd(0x31);SdCmd(0xef);
SdCmd(0x41);SdCmd(0x00);
SdCmd(0x51);SdCmd(0x00);
SdCmd(0x10);SdCmd(0b00100000);
}
//----------------------------
//清屏
//----------------------------
void CleanScreen()
{
unsigned char i,j;
for(i=0;i<40;i++)
{
for(j=0;j<240;j++)
{
SdCmd(0x60);SdCmd(i);
SdCmd(0x70);SdCmd(j);
SdData(0x00);
}
}
}
void line()
{
unsigned char i,k;
for(i=0;i<240;i++)
{
SdCmd(0x60);SdCmd(0);
SdCmd(0x70);SdCmd(i);
SdData(0x80);
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(3);
SdCmd(0x70);SdCmd(i);
SdData(0x02);
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(7);
SdCmd(0x70);SdCmd(i);
SdData(0x08);
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(11);
SdCmd(0x70);SdCmd(i);
SdData(0x20);
}
for(i=0;i<240;i++)
{
SdCmd(0x60);SdCmd(15);
SdCmd(0x70);SdCmd(i);
SdData(0x80);
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(18);
SdCmd(0x70);SdCmd(i);
SdData(0x02);
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(22);
SdCmd(0x70);SdCmd(i);
SdData(0x08);
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(26);
SdCmd(0x70);SdCmd(i);
SdData(0x20);
}
for(i=0;i<240;i++)
{
SdCmd(0x60);SdCmd(30);
SdCmd(0x70);SdCmd(i);
SdData(0x80);
}
for(k=0;k<240;k+=30)
{
for(i=0;i<30;i++)
{
SdCmd(0x60);SdCmd(i);
SdCmd(0x70);SdCmd(k);
if(k==0||k==120)
{
SdData(0xff);
}
else
{
SdData(0xaa);
}
}
}
for(i=0;i<30;i++)
{
SdCmd(0x60);SdCmd(i);
SdCmd(0x70);SdCmd(239);
SdData(0xff);
}
}
void disp_volt()
{
SdCmd(0x00);SdCmd(0xcd); //设置WLCR 寄存器
SdCmd(0xf1);SdCmd(0x1f); //字型水平、垂直方向各放大2 倍
SdCmd(0x60);SdCmd(30);
SdCmd(0x70);SdCmd(50);
c=c*0.667;
switch(biao)//计算键值
{
case 0:c=c*25;break;
case 1:c=c*10;break;
case 2:c=c*5;break;
case 3:c=c*2.5;break;
case 4:;break;
case 5:c=c*0.5;break;
case 6:c=c*0.25;break;
case 7:c=c*0.1;break;
case 8:c=c*0.05;break;
default:break;
}
sprintf(lcd_buffer,"%3d.%02dVpp",c/100,c%100);
ShowText(lcd_buffer);
SdCmd(0xf1);SdCmd(0x0f); //字型水平、垂直方向各放大2 倍
SdCmd(0x00);SdCmd(0xc5); //设置WLCR 寄存器
}
void trig()
{
unsigned char i;
SdCmd(0x10);SdCmd(0x59); //字体反显示
for(i=0;i<16;i++)
{
SdCmd(0x60);SdCmd(33);
SdCmd(0x70);SdCmd(180+i);
if(tri==0)
{
SdData(trigs[i]);
}
else
{
SdData(trigs2[i]);
}
}
SdCmd(0x10);SdCmd(0x79);
}
void can()
{
SdCmd(0x00);SdCmd(0xcd); //设置WLCR 寄存器
SdCmd(0x60);SdCmd(33);
SdCmd(0x70);SdCmd(150);
SdCmd(0x10);SdCmd(0x59); //字体反显示
sprintf(lcd_buffer," HOLD ");
ShowText(lcd_buffer);
SdCmd(0x10);SdCmd(0x79);
SdCmd(0x60);SdCmd(32);
SdCmd(0x70);SdCmd(200);
SdCmd(0xf1);SdCmd(0x1f); //字型水平、垂直方向各放大2 倍
sprintf(lcd_buffer,"Agilent");
ShowText(lcd_buffer);
SdCmd(0xf1);SdCmd(0x0f); //字型水平、垂直方向各放大2 倍
SdCmd(0x00);SdCmd(0xc5); //设置WLCR 寄存器
}
void clr_hold()
{
SdCmd(0x00);SdCmd(0xcd); //设置WLCR 寄存器
SdCmd(0x60);SdCmd(33);
SdCmd(0x70);SdCmd(150);
SdCmd(0x10);SdCmd(0x69); //字体反显示
sprintf(lcd_buffer," ");
ShowText(lcd_buffer);
SdCmd(0x10);SdCmd(0x79);
SdCmd(0x60);SdCmd(31);
SdCmd(0x70);SdCmd(200);
SdCmd(0xf1);SdCmd(0x1f); //字型水平、垂直方向各放大2 倍
sprintf(lcd_buffer,"By Weikun");
ShowText(lcd_buffer);
SdCmd(0xf1);SdCmd(0x0f); //字型水平、垂直方向各放大2 倍
SdCmd(0x00);SdCmd(0xc5); //设置WLCR 寄存器
}
void display()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -