switch(ledl_old_state)
{
case 0: {
A_LED1_0FF;. // погасить светодиод 1
A_LED2_0FF; // погасить светодиод 2
}
break; case 1: {
A_LED1_0N; // зажечь светодиод 1
A_LED2_0FF; // погасить светодиод 2
}
break; case 2: {
A_LED1_0FF; // погасить светодиод 1
A_LED2_0N; // зажечь светодиод 2
}
break; case 3: {
A_LED1_0N; // зажечь светодиод 1 A_LED2_0N; // зажечь светодиод 2 }
}
}
if (flagn_knl==l) // нажималась ли кнопка 1
{
flagn_knl=0; //да, сбросить флаг нажатия
switch(ledl_old_state) {
case 0: {
RTCset_hour(); //инкремент текущего значения часов }
break; case 1: {
RTCset_dom(); //инкремент текущего значения дней месяца }
}
}
if (flagn_kn2==l) // нажималась ли кнопка 2
{
flagn_kn2=0; //да, сбросить флаг нажатия
switch(ledl_old_state)
,;' {
• case 0: {
RTCset_min(); //инкремент текущего значения минут }
break; case 1: {
RTCset_month(); //инкремент текущего значения месяцев
}
}
}
if (flagn_kn3==l) // нажималась ли кнопка 3
{
flagn_kn3=0; //да, сбросить флаг нажатия
switch(ledl_old_state) {
case 0: {
RTCnull_sec(); //обнуление текущего значения секунд }
break; case 1: {
RTCset_year(); //инкремент текущего значения лет }
break; case 2: {
RTCset_dow(); //инкремент текущего значения дней недели }
}
}
} }
//------------------------------------------------------------------------
В основном цикле программа производит периодическое чтение и индикацию на ЖКИ значений текущего времени и даты с помощью функции RTCread_ind_date_time().
Кнопка «0» задает режим установки показаний. Текущий режим индицируется светодиодами «1» и «2». При наличии двух светодиодов, может быть задано четыре их состояния (режима установки). Текущий режим определяется в программе значением переменной ledl_old_state.
При негорящих светодиодах «1» и «2» (ledl_old_state=0), кнопки «1»...«3» имеют следующие функции: кнопка «1» — инкремент текущего значения часов (от 0 до 23 по кругу), кнопка «2» — инкремент текущего значения минут (от 0 до 59 по кругу), кнопка «3» — обнуление текущего значения секунд (для обеспечения точной установки времени).
При ledl_old_state=l (светодиод «1» горит, «2» — не горит), кнопки «1»...«3» имеют следующие функции: кнопка «1» — инкремент текущего значения дней месяца (от 1 до 31 по кругу), кнопка «2» — инкремент текущего значения месяцев (от 1 до 12 покругу), кнопка «3» — инкремент текущего значения лет (от 1990 до 2030 по кругу). Границы установки текущего значения лет заданы в функции RTCset_year() (файл rtc.c) и при желании могут быть изменены.
При ledl_old_state—2 (светодиод «1» не горит, «2» горит), кнопка «3» имеет функцию инкремента текущего значения дней недели (от 0 до 6 по кругу).
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |