Vytvořte elektronický odpočet, který bude
odpočítávat požadovaný čas. Po
uplynutí doby vydá akustický signál.
Aktuální čas bude zobrazován na LCD ve tvaru
hh:mm:ss a odesílán po sériové lince.
Vlastnosti :
Pomocí tlačítek na maticové klávesnici nastavte hodiny, minuty a vteřiny.
Nastavování času je možné jen pokud není odpočet aktivní.
Každých 10s odešle procesor aktuální čas ve formátu hh:mm:ss na seriovou linku.
Časování bude řešeno pomocí timeru.
Ovládaní tlačítky:
1 – nastavení hodin (plus jedna)
4 - nastavení hodin (mínus jedna)
2 – nastavení minut (plus jedna)
5 – nastavení minut (mínus jedna)
3 - nastavení vteřin (plus jedna)
6 - nastavení vteřin (mínus jedna)
Ovládaní pomocí sériové linky (ASCII znaky) při obdržení :
1 – nastavení hodin (plus jedna)
4 - nastavení hodin (mínus jedna)
2 – nastavení minut (plus jedna)
5 – nastavení minut (mínus jedna)
3 - nastavení vteřin (plus jedna)
6 - nastavení vteřin (mínus jedna)
0 – spuštění/pauza odpočtu
Nepovinný bonus:
Vše stejné, jen navíc zobrazovani času ve formátu s desetinamy vteřiny (hh:mm:ss:d)
Nápověda:
Nastaveni timeru 1 :
Takt 57 600Hz, přerušení CTC (clear to compare - vynulovani pri rovnosti) ICR1.
ISR(TIMER1_CAPT_vect)
{
}
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 57,600 kHz
// Mode: CTC top=ICR1
// OC1A output: Discon.
// OC1B output: Discon.
// OC1C output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: On
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x1C;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x20;
ETIMSK=0x00;