Всем привет!
забыл в пятницу выключить будильник, а в субботу он всех разбудил рано.....
решил исправить ситуацию
воял-воял правил-правил программу, все тупик, прошу помощи в следующем:
если открыть протеус нажать кнопку "уст" год вроде правильно, но месяцы 1.2.3.4.5.6.7.8.9.0A.0b.0C дни вроде правильно
на часа в протеусе трехзначное число в днях или годе
получается кнопки неправильно
myday=day_from_data();
rtc_set_date(myday, mydate, mymonth, myyear); записывают ячейки или что куда копать???
Добавлено after 44 minutes 56 seconds:получается я не правильно считаю дни недели
//---------- вычисление дня недели по дате ----------
unsigned int day_from_data () {
unsigned int a,y,m,day;
mymonth=bcd2bin(mymonth);
a=(14-bcd2bin(mymonth))/12;
y=(bcd2bin(myyear)+2000)-a;
m=bcd2bin(mymonth)+12*a-2;
day=(7000+(bcd2bin(mydate)+y+y/4-y/100+y/400+(31*m)/12))%7;
day=bin2bcd(day+1);
return day;
если поставить в код myday=day_from_data(); просто myday=2; (сегодня понедельник) то все работает четко
другой вопрос как высчитать по другому день недели????????
Добавлено after 1 hour 9 minutes 35 seconds:Извиняюсь за беспокойство, решено
// ---------- вычислить день недели по дате ----------
void day_from_data(void) {
unsigned int y, m;
y = bcd2bin(myyear);
m = bcd2bin(mymonth);
if (m > 2) { m -= 2; }
else { m += 10; y--; }
myday = (unsigned char)((bcd2bin(mydate) + y + (y>>2) + ((31 * m) / 12)) % 7);
if (myday == 0) myday = 7;
}//----------
пока больше глюков в прошивке не нашел если кто желает пробуйте
изменено:
последовательность индикации: время/
число+ день недели/температура,
Будильники:
два светодиода - индикация активности будильника(ов)
будильник "Б1" время срабатывания PORT_ALARM_BIPER
будильник "Б2" время отключения PORT_ALARM_BIPER (если "Б2"-- 24 часа в сутки будет петь )установки будильников кнопкой будильник "Б1"
кнопка "Б2" большая красная на верху будильника ОТКЛЮЧЕНИЕ СИГНАЛА (мне показалось не совсем удобно
с просони искать кнопки "+ и -" хотя они также работают как и у автора)номера ячеек EEPROM и их значение (на индикаторе номер ячейка Е2 -
Е9 и ее значение):
2 - индикация незначащего нуля в десятках часов
3 - отбрасывание десятых долей при индикации температуры и добавление символа "С"
4 - включение плавной смены показаний
5 - включение ночного режима с 22-00 до 6-006 - работа с двумя видами точек
7 - "пятый" разряд (знак температуры)
8 - режим индикации состояния ADC (0 - кнопки, 1 - фоторезистор, F - откл.)
9 - автоперевод стрелок лето/зима (0 - отключено, 1 - включено т.е. по умолчанию включено)
а - минимальный уровень яркости (от 10 до 200) индикация в десятках т.е. на индикаторе от 1 до 20
b - работа будильника по выходным
- Вложения
-
- часы динамика день_ночь дни недели.7z
- (248.84 KiB) Скачиваний: 307