#include <mega8.h>
#include <delay.h>
#include <stdio.h>


#include <IIC_ultimate.h>

#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>


             
void init(void){
    
     lcd_init(16);   // инициализация экрана 
 
     DDRC=0x08;
     PORTC=0X00;
     delay_ms(10);
     PORTC=0x08; //RESET PIN 
     delay_ms(10);
 
     Init_i2c();
     #asm ("sei");
    
     
     
                   
}



 


 
void main(void){       
   
  char lcd_buffer[6];
  unsigned int h;
  unsigned int l;
  init();                         
  
i2c_index = 0;                                // Сброс индекса
i2c_ByteCount = 7;                        // Шлем два байта
 
i2c_SlaveAddress = 0x22;		// Адрес кон
 
i2c_Buffer[0] = 0xE1;			// Те самые два байта, что мы шлем подчиненному
i2c_Buffer[1] = 0x81;
i2c_Buffer[2] = 0x26;
i2c_Buffer[3] = 0x48;
i2c_Buffer[4] = 0x2A;
i2c_Buffer[5] = 0x30;
i2c_Buffer[6] = 0x0A;
i2c_Do = i2c_sawp;			// Режим = простая запись, адрес+два байта данных
 
TWCR = 	1<<TWSTA|0<<TWSTO|1<<TWINT|0<<TWEA|1<<TWEN|1<<TWIE;
	
 END =1;
 while (END){}
  
delay_ms(30);


i2c_index = 0;                                // Сброс индекса
i2c_ByteCount = 6;                        
 
i2c_SlaveAddress = 0x22;		// Адрес кон
 
i2c_Buffer[0] = 0x12;			
i2c_Buffer[1] = 0x00;
i2c_Buffer[2] = 0x40;
i2c_Buffer[3] = 0x00;
i2c_Buffer[4] = 0x00;
i2c_Buffer[5] = 0x28;
i2c_Do = i2c_sawp;			// Режим = простая запись, адрес+два байта данных
 
TWCR = 	1<<TWSTA|0<<TWSTO|1<<TWINT|0<<TWEA|1<<TWEN|1<<TWIE;


END =1;
while (END){}
  
delay_ms(30);


 
 while(1){ 
   if(PIND.2==1) {
     i2c_index = 0;                                // Индексы в ноль
     i2c_ByteCount = 4;                // Число считываемых байт
     i2c_SlaveAddress = 0x22;                // Адрес EEPROM на шине IIC
     i2c_PageAddress[0] = 0xE0;                // На этот раз грузим адрес страницы
     i2c_PageAddrIndex = 0;                        // Обнуляем индексы
     i2c_PageAddrCount = 1;                        // Адрес страницы из 1 байт
     i2c_Do = i2c_sawsarp;                        // Режим чтения с заносом адреса

     TWCR = 1<<TWSTA|0<<TWSTO|1<<TWINT|0<<TWEA|1<<TWEN|1<<TWIE;	//ПЦ!
     END =1;
     while (END){}

     h = i2c_Buffer[2];
     l = i2c_Buffer[3];
     h = ((h>>4)*10)+h%16;
     l = ((l>>4)*10)+l%16;

     sprintf(lcd_buffer,"%2u%2u",h,l);
     if ( h==10&&l<10) lcd_buffer[2] = 0x30;
     lcd_buffer[4] = lcd_buffer[3];
     lcd_buffer[3] = 0x2E; //точка

     lcd_clear();
     lcd_gotoxy(0,0);//  идем в нулевую точку
     lcd_puts(lcd_buffer);
     lcd_putsf("MHz");
   } 
 } 
 
}