day_b = 10; char month_b = 9; char melody [] = notefreq [] = pausedelay [] = {32,64,128,256,512,1024,2048,4096}; max_day [] = {31,28,31,30,31,30,31,31,30,31,30,31};
# pragma rl + char arr [] = "
Курсовий проект студента групи # 113319 Гундіна Олександра. 2012. (Годинник-будильник) ";
# pragma rl-Display ();
// Timer 1 output compare A interrupt service routine [TIM1_COMPA] void timer1_compa_isr (void)
{H = 0, L = 0; AH = 0x0F; AL = 0x42; ();
} About (void)
{int i = 0, a = 0;
_gotoxy (0,0);
(i = 0; i
{(a = 0; a <15; a + +)
{_gotoxy (a, 0); _putchar (arr [i + a]);
} _ms (50);
}
} delay_note (unsigned int delay)
{i; (i = 0; i
} Alarm ()
{char freqnote ;//Код нотиchar delaynote ;//Код длітельностіchar tmp ;//Тимчасова мінлива cnt;
_clear (); (lcd_buffer, "ALARM!");
lcd_puts (lcd_buffer); = 0 ;//На початок мелодії
while (melody [cnt]! = 0)
{(PINB.6 == 0)// Stop ALARM; = melody [cnt]; = tmp &0x1F;// Код ноти
delaynote = (tmp>> 5) &0x07;// Код тривалості (freqnote! = 0)// якщо не пауза
{//включаємо звукA = notefreq [freqnote]; A = 0x40;
} _note (pausedelay [delaynote]);// витримуємо тривалість нотиA = 0x00;// вимикаємо звук
delay_note (8);// витримуємо паузу
// щоб дві ноти не зливалися в одну + + ;//Наступна нота
} _clear ();
} Display ()
{(al_cl == 0)// режим Alarm/clock (+)
{
///Умови годин. (sec> 59)// якщо сек = 60
{+ +;// додаємо 1 до змінної "хвилина"
sec = 0;// зануляют змінну "секунда" _set_time (hour, min, sec);
} (min> 59)// якщо мін = 60
{+ +;// додаємо 1 до змінної "час"
min = 0;// зануляют змінну "хвилина" _set_time (hour, min, sec);
} (hour> 23)// так як у нас годинник мають 24 годинний формат
{//при досягненні 24 годин, онуліруем всі змінні.
hour = min = sec = 0; + +; _set_time (hour, min, sec); _set_date (day, month, year);
} ((month == 2) && ((year% 4) == 0))
{(day> max_day [month-1] +1) day = 1; (day == 0) day = max_day [month-1] +1;
}
{(day> m...