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


#include <IIC_ultimate.h>

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

  char lcd_buffer[8];
  unsigned int h, l;
  



             
void init(void){
    
     lcd_init(8);   // инициализация экрана 
 
     DDRC=0x08;
     PORTC=0X00;
     delay_ms(1);
     PORTC=0x08; //RESET PIN 
     while(PIND.2==0){}
     MCUCR = 0x02;
     Init_i2c();    
     #asm ("sei");              
}




interrupt[EXT_INT0] void LCD(void) {
   GICR = 0x00;  

 #asm ("sei");

     END =1;
     i2c_index = 0;                                // Индексы в ноль
     i2c_ByteCount = 4;                // Число считываемых байт
     i2c_SlaveAddress = 0x23;                // Адрес 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;        //ПЦ!
     while (END){}
     
     
     h = i2c_Buffer[2];
     l = i2c_Buffer[3];
     sprintf(lcd_buffer,"%2x%2x",h,l);
     if(lcd_buffer[2]==0x20) 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"); 

     GICR = 0x40;         
} 
 


 
void main(void){       
 
  init();                         

 

i2c_index = 0;                                // Сброс индекса
i2c_ByteCount = 7;                        // Шлем два байта
 END =1; 
i2c_SlaveAddress = 0x22;		// Адрес кон
 
i2c_Buffer[0] = 0xE1;			// Те самые два байта, что мы шлем подчиненному
i2c_Buffer[1] = 0x81;
i2c_Buffer[2] = 0x22;
i2c_Buffer[3] = 0x60;
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;
	

 while (END){}

delay_ms(50);




i2c_index = 0;                                // Сброс индекса
i2c_ByteCount = 6;                        
END =1; 
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] = 0x30;
i2c_Do = i2c_sawp;			// Режим = простая запись, адрес+ байты данных
 
TWCR = 	1<<TWSTA|0<<TWSTO|1<<TWINT|0<<TWEA|1<<TWEN|1<<TWIE;
while (END){}
delay_ms(50);


 GICR = 0x40;  


















 
 while(1){   

   }

  
 } 
 
