?? main.i
字號:
// CodeVisionAVR C Compiler
// (C) 1998-2001 Pavel Haiduc, HP InfoTech S.R.L.
// I/O registers definitions for the ATmega16
#pragma used+
#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 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 OCDR=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
// Needed by the power management functions (sleep.h)
#asm
#ifndef __SLEEP_DEFINED__
#define __SLEEP_DEFINED__
.EQU __se_bit=0x40
.EQU __sm_mask=0xB0
.EQU __sm_powerdown=0x20
.EQU __sm_powersave=0x30
.EQU __sm_standby=0xA0
.EQU __sm_ext_standby=0xB0
.EQU __sm_adc_noise_red=0x10
.SET power_ctrl_reg=mcucr
#endif
#endasm
// CodeVisionAVR C Compiler
// (C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L.
#pragma used+
#pragma used+
void delay_us(unsigned int n);
void delay_ms(unsigned int n);
#pragma used-
flash unsigned char tab_char[64][8]=
flash unsigned char tab_char[64][8]=
flash unsigned char tab_char[64][8]=
{
{0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00},/*"0", 0*/
{0x00,0x10,0x1c,0x10,0x10,0x10,0x3c,0x00},/*"1", 1*/
{0x00,0x3C,0x42,0x60,0x1C,0x02,0x7E,0x00},/*"2", 2*/
{0x00,0x3C,0x42,0x38,0x40,0x42,0x3C,0x00},/*"3", 3*/
{0x00,0x30,0x2C,0x22,0x7e,0x20,0x20,0x00},/*"4", 4*/
{0x00,0x7C,0x04,0x3c,0x40,0x40,0x3C,0x00},/*"5", 5*/
{0x00,0x3C,0x02,0x3E,0x42,0x42,0x3C,0x00},/*"6", 6*/
{0x00,0x7E,0x20,0x10,0x08,0x08,0x08,0x00},/*"7", 7*/
{0x00,0x3C,0x42,0x3C,0x42,0x42,0x3C,0x00},/*"8", 8*/
{0x00,0x3c,0x42,0x42,0x7C,0x40,0x3e,0x00},/*"9", 9*/
{0x00,0x00,0x3E,0x40,0x7C,0x42,0xFC,0x00},/*"a", 10*/
{0x00,0x02,0x02,0x3E,0x42,0x42,0x3E,0x00},/*"b", 11*/
{0x00,0x00,0x7C,0x02,0x02,0x02,0x7C,0x00},/*"c", 12*/
{0x00,0x40,0x40,0x7C,0x42,0x42,0x7C,0x00},/*"d", 13*/
{0x00,0x00,0x3C,0x42,0x7E,0x02,0x7C,0x00},/*"e", 14*/
{0x00,0x38,0x08,0x3C,0x08,0x08,0x08,0x00},/*"f", 15*/
{0x00,0x00,0x00,0x5C,0x62,0x42,0x7C,0x3E},/*"g", 16*/
{0x00,0x02,0x02,0x7E,0x42,0x42,0x42,0x00},/*"h", 17*/
{0x00,0x10,0x00,0x10,0x10,0x10,0x10,0x00},/*"i", 18*/
{0x00,0x00,0x00,0x5C,0x62,0x42,0x7C,0x3E},/*"g", 19*/
{0x00,0x02,0x22,0x12,0x0E,0x12,0x22,0x00},/*"k", 20*/
{0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00},/*"l", 21*/
{0x00,0x00,0x00,0x7E,0x52,0x52,0x52,0x00},/*"m", 22*/
{0x00,0x00,0x00,0x7E,0x42,0x42,0x42,0x00},/*"n", 23*/
{0x00,0x00,0x00,0x3C,0x42,0x42,0x3C,0x00},/*"o", 24*/
{0x00,0x00,0x00,0x3E,0x42,0x42,0x3E,0x02},/*"p", 25*/
{0x00,0x00,0x00,0x7C,0x42,0x42,0x7C,0x40},/*"q", 26*/
{0x00,0x00,0x04,0x3C,0x0C,0x04,0x04,0x00},/*"r", 27*/
{0x00,0x00,0x3C,0x02,0x3E,0x40,0x3E,0x00},/*"s", 28*/
{0x00,0x00,0x08,0x3C,0x08,0x08,0x38,0x00},/*"t", 29*/
{0x00,0x00,0x00,0x42,0x42,0x42,0x7E,0x00},/*"u", 30*/
{0x00,0x00,0x00,0x42,0x24,0x14,0x18,0x00},/*"v", 31*/
{0x00,0x00,0x00,0x99,0x59,0x66,0x66,0x00},/*"w", 32*/
{0x00,0x00,0x00,0x7E,0x3E,0x40,0x3E,0x00},/*"s", 33*/
{0x00,0x00,0x00,0x42,0x24,0x14,0x08,0x0E},/*"y", 34*/
{0x00,0x00,0x00,0x7E,0x10,0x0C,0x7E,0x00},/*"z", 35*/
{0x00,0x18,0x18,0x24,0x7E,0x42,0x81,0x00},/*"A", 36*/
{0x00,0x3E,0x42,0x3E,0x42,0x82,0x7E,0x00},/*"B", 37*/
{0x00,0x3C,0x46,0x02,0x02,0x86,0x7C,0x00},/*"C", 38*/
{0x00,0x3E,0x62,0x42,0x42,0x62,0x3E,0x00},/*"D", 39*/
{0x00,0x7E,0x02,0x7E,0x02,0x02,0x7E,0x00},/*"E", 40*/
{0x00,0x7E,0x02,0x7E,0x02,0x02,0x02,0x00},/*"F", 41*/
{0x00,0x3C,0x46,0x02,0x72,0x46,0x7C,0x00},/*"G", 42*/
{0x00,0x42,0x42,0x7E,0x42,0x42,0x42,0x00},/*"H", 43*/
{0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00},/*"I", 44*/
{0x00,0x3C,0x46,0x02,0x72,0x46,0x7C,0x00},/*"G", 45*/
{0x00,0x62,0x12,0x0A,0x16,0x22,0x42,0x00},/*"K", 46*/
{0x00,0x02,0x02,0x02,0x02,0x02,0x7E,0x00},/*"L", 47*/
{0x00,0x66,0x66,0x66,0x5A,0x5A,0x5A,0x00},/*"M", 48*/
{0x00,0x46,0x46,0x4A,0x52,0x62,0x62,0x00},/*"N", 49*/
{0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00},/*"O", 50*/
{0x00,0x3E,0x42,0x42,0x3E,0x02,0x02,0x00},/*"P", 51*/
{0x00,0x3C,0x66,0x42,0x42,0x56,0x3C,0x40},/*"Q", 52*/
{0x00,0x3E,0x42,0x7E,0x42,0x42,0x42,0x00},/*"R", 53*/
{0x00,0x7C,0x02,0x3C,0x40,0x82,0x7C,0x00},/*"S", 54*/
{0x00,0x7F,0x08,0x08,0x08,0x08,0x08,0x00},/*"T", 55*/
{0x00,0x42,0x42,0x42,0x42,0x42,0x3C,0x00},/*"U", 56*/
{0x00,0x81,0x42,0x22,0x24,0x1C,0x08,0x00},/*"V", 57*/
{0x00,0x81,0x5A,0x5A,0x5A,0x24,0x24,0x00},/*"W", 58*/
{0x00,0x22,0x14,0x08,0x1C,0x26,0x43,0x00},/*"X", 59*/
{0x00,0x43,0x26,0x1C,0x08,0x08,0x08,0x00},/*"Y", 60*/
{0x00,0x7F,0x20,0x18,0x04,0x02,0x7F,0x00},/*"Z", 61*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, /*"nop", 62*/
{0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00}/*"-",63*/
};
void written_add_data(unsigned int temp_add,unsigned char temp_data)
void written_add_data(unsigned int temp_add,unsigned char temp_data)
{
unsigned char temp;
PORTB.5 =0;
PORTB.1 =0;
PORTB.2 =0;
temp=(unsigned char)(temp_add>>8);
PORTC=temp;
PORTB.2 =1;
PORTB.2 =0;
temp=(unsigned char)(temp_add);
PORTC=temp;
PORTB.2 =1;
PORTB.1 =1;
PORTB.2 =0;
PORTC=temp_data;
PORTB.2 =1;
}
void written(unsigned char temp_1)
{
PORTB.2 =0;
PORTC=temp_1;
PORTB.2 =1;
}
/*
void inintially(void) //初始化LCD
{
written_add_data(0x500,0x7a);
delay_ms(10);
written_add_data(0x501,0xb7);
delay_ms(10);
written_add_data(0x502,0x06);
}
*/
void Lcd_inint(void) //初始化LCD
{
written_add_data(0x500,0xe8);
written(0xa6);
written(0x04);
}
void display_clear(void) //清除所有顯示
{
unsigned char i;
for(i=0;i<16;i++)
{
written_add_data((unsigned int)i*16,0x0);
written(0x0);
}
for(i=0;i<16;i++)
{
written_add_data((unsigned int)i*16+2,0x0);
written(0x0);
}
for(i=0;i<16;i++)
{
written_add_data((unsigned int)i*16+4,0x0);
written(0x0);
}
for(i=0;i<16;i++)
{
written_add_data((unsigned int)i*16+256,0x0);
written(0x0);
}
for(i=0;i<16;i++)
{
written_add_data((unsigned int)i*16+258,0x0);
written(0x0);
}
for(i=0;i<16;i++)
{
written_add_data((unsigned int)i*16+260,0x0);
written( 0x0);
}
}
void Written_char(unsigned char line,unsigned char row,unsigned char z)
{
unsigned char i;
if(row<6)
{
switch(line)
{
case 0:
for(i=0;i<8;i++) written_add_data((unsigned int)i*16+row,tab_char[z][i]);
break;
case 1:
for(i=8;i<16;i++) written_add_data((unsigned int)i*16+row,tab_char[z][i-8]);
break;
}
}
else
{
switch(line)
{
case 0:
for(i=0;i<8;i++) written_add_data((unsigned int)i*16+row+250,tab_char[z][i]);
break;
case 1:
for(i=8;i<16;i++) written_add_data((unsigned int)i*16+row+250,tab_char[z][i-8]);
break;
}
}
}
/*void Written_char_back(unsigned char line,unsigned char row,unsigned char z)
{
unsigned char i;
if(row<6)
{
switch(line)
{
case 0:
for(i=0;i<8;i++) written_add_data((unsigned int)i*16+row,~(tab_char[z][i]));
break;
case 1:
for(i=8;i<16;i++) written_add_data((unsigned int)i*16+row,~(tab_char[z][i-8]));
break;
}
}
else
{
switch(line)
{
case 0:
for(i=0;i<8;i++) written_add_data((unsigned int)i*16+row+250,~(tab_char[z][i]));
break;
case 1:
for(i=8;i<16;i++) written_add_data((unsigned int)i*16+row+250,~(tab_char[z][i-8]));
break;
}
}
} */
/*復(fù)位腳*/
/*雙向數(shù)據(jù)*/
/*時鐘信號*/
//#define HT1381_charger_add 0x90 //適用于ds1302
//unsigned char time_buf[8] = {0x20,0x07,0x05,0x08,0x23,0x59,0x00,0x02};
unsigned char time_buf[7];
unsigned char time_buf[7];
/*向HT1381寫入一字節(jié)數(shù)據(jù)*/
void HT1381_write_byte(unsigned char addr, unsigned char written_data)
{
unsigned char i;
PORTD |= (1 << (0)) ; /*啟動HT1381總線*/
/*寫入目標(biāo)地址:addr*/
DDRD |= (1 << (1)) ;
addr = addr & 0xFE; /*最低位置零*/
for (i = 0; i < 8; i ++)
{
if (addr & 0x01)
{PORTD |= (1 << (1)) ;}
else {PORTD &= ~((1 << (1))) ;}
PORTD |= (1 << (2)) ;
PORTD &= ~((1 << (2))) ;
addr = addr >> 1;
}
/*寫入數(shù)據(jù):written_data*/
DDRD |= (1 << (1)) ;
for (i = 0; i < 8; i ++)
{
if (written_data & 0x01)
{PORTD |= (1 << (1)) ;}
else {PORTD &= ~((1 << (1))) ;}
PORTD |= (1 << (2)) ;
PORTD &= ~((1 << (2))) ;
written_data = written_data >> 1;
}
PORTD &= ~((1 << (0))) ; /*停止HT1381總線*/
}
/*從HT1381讀出一字節(jié)數(shù)據(jù)*/
unsigned char HT1381_read_byte(unsigned char addr)
{
unsigned char i;
unsigned char temp;
PORTD |= (1 << (0)) ; /*啟動HT1381總線*/
/*寫入目標(biāo)地址:addr*/
DDRD |= (1 << (1)) ;
addr = addr | 0x01;/*最低位置高*/
for (i = 0; i < 8; i ++)
{
if (addr & 0x01) {PORTD |= (1 << (1)) ;}
else { PORTD &= ~((1 << (1))) ;}
PORTD |= (1 << (2)) ;
PORTD &= ~((1 << (2))) ;
addr = addr >> 1;
}
/*輸出數(shù)據(jù):temp*/
DDRD &= ~((1 << (1))) ;
for (i = 0; i < 8; i ++)
{
temp = temp >> 1;
if (PIND & (1 << (1)) )
{temp |= 0x80;}
else {temp &= 0x7F;}
PORTD |= (1 << (2)) ;
PORTD &= ~((1 << (2))) ;
}
PORTD &= ~((1 << (0))) ; /*停止HT1381總線*/
return temp;
}
/*向HT1381寫入時鐘數(shù)據(jù)*/
/*void HT1381_write_time(void)
{
HT1381_write_byte(HT1381_control_add,0x00); //關(guān)閉寫保護(hù)
HT1381_write_byte(HT1381_sec_add,0x80); //暫停
//HT1381_write_byte(HT1381_charger_add,0xa9); //涓流充電
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -