Załączam mój listing w C, co prawda jest on dla '51 ale myślę że z implementacją na AVR nie powinno być większych problemów. Ja sam dopiero zaczynam zabawę z AVR dlatego jak narazie nie potrafię tego przerobić
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// Funkcja odczytuje i zwraca jeden bajt o podanym adresie
char ReadFromRTC(unsigned char Address)
{
unsigned char Temp;
Write = 1;
Read = 1;
Ale = 1;
RTC_BUS = Address;
Ale = 0;
RTC_BUS = 0xFF;
Read = 0;
Temp = RTC_BUS;
Read = 1;
Ale = 1;
return Temp;
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// Funkcja zapisuje jeden bajt w podanym adresie
void WriteToRTC(unsigned char Address, unsigned char DataToWrite)
{
Write = 1;
Read = 1;
Ale = 1;
RTC_BUS = Address;
Ale = 0;
RTC_BUS = DataToWrite;
Write = 0;
RTC_Delay(1);// czas na zapis danej do zegara
Write = 1;
Ale = 1;
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Jeśli coś jest niezrozumiałe pytaj :]