O
otuzsubat
Guest
Vreau să folosesc alarma zi în PCF8583.De exemplu, vreau ca ea produce o întrerupere la fiecare zi de luni, 13:30.Codul meu este mai jos.Aţi putea să-mi spui unde este greseala?
int2bcd int (int DEC) (
return ((dec/10) <<4) (DEC 10%);
)
rtc_set void () (
i2c_start ();
i2c_write (0xA2); / / trimite adresa de dispozitiv
i2c_write (0x00); / / trimite octet adresa de
i2c_write (0x80); / / Stop RTC de numărare
/************* Scrie timp real ****************/
i2c_write (0x00); / / sutime de secundă
i2c_write (0x00); / / Seconds
i2c_write (RTC [3 ]);// Proces-verbal (în format BCD)
i2c_write (RTC [2 ]);// ore (în format BCD, format de 24 oră)
i2c_write (RTC [0 ]);// Anul / data (în format BCD)
i2c_write (RTC [1 ]);// Weekday / lună (în format BCD)
i2c_write (0x00); / / nu fi de acord timer
Scrieti /************* ora de alarmă ****************/
i2c_write (0xA0); / / Alarmă Flag, de întrerupere, nr alarma cronometrul, alarma în timpul săptămânii
i2c_write (0x00); / / Alarmă sutime de secundă
i2c_write (0x00); / / Alarmă Seconds
i2c_write (int2bcd (alarm.minute ));// procesul-verbal de alarmă
i2c_write (int2bcd (alarm.hour ));// Ore de alarmă
i2c_write (0x00); / / Alarmă Date
i2c_write ((0x01 <<(alarm.day-1 )));// de alarmă în timpul săptămânii
i2c_stop ();
delay_ms (5);
i2c_start ();// de transmisie a începe
i2c_write (0x00); / / trimite adresa de dispozitiv
i2c_write (0x00); / / Trimite adresa de byte
i2c_write (0x04); / / Start RTC de numărare
i2c_stop ();
delay_ms (5);
)
int2bcd int (int DEC) (
return ((dec/10) <<4) (DEC 10%);
)
rtc_set void () (
i2c_start ();
i2c_write (0xA2); / / trimite adresa de dispozitiv
i2c_write (0x00); / / trimite octet adresa de
i2c_write (0x80); / / Stop RTC de numărare
/************* Scrie timp real ****************/
i2c_write (0x00); / / sutime de secundă
i2c_write (0x00); / / Seconds
i2c_write (RTC [3 ]);// Proces-verbal (în format BCD)
i2c_write (RTC [2 ]);// ore (în format BCD, format de 24 oră)
i2c_write (RTC [0 ]);// Anul / data (în format BCD)
i2c_write (RTC [1 ]);// Weekday / lună (în format BCD)
i2c_write (0x00); / / nu fi de acord timer
Scrieti /************* ora de alarmă ****************/
i2c_write (0xA0); / / Alarmă Flag, de întrerupere, nr alarma cronometrul, alarma în timpul săptămânii
i2c_write (0x00); / / Alarmă sutime de secundă
i2c_write (0x00); / / Alarmă Seconds
i2c_write (int2bcd (alarm.minute ));// procesul-verbal de alarmă
i2c_write (int2bcd (alarm.hour ));// Ore de alarmă
i2c_write (0x00); / / Alarmă Date
i2c_write ((0x01 <<(alarm.day-1 )));// de alarmă în timpul săptămânii
i2c_stop ();
delay_ms (5);
i2c_start ();// de transmisie a începe
i2c_write (0x00); / / trimite adresa de dispozitiv
i2c_write (0x00); / / Trimite adresa de byte
i2c_write (0x04); / / Start RTC de numărare
i2c_stop ();
delay_ms (5);
)