Вот у меня наконец появилось время сюда заглянуть.
Итак, по порядку.
Grey1975 писал(а):Спасибо! Попробую увеличить время до секунды.
Как, помогло?
Похоже, проблема именно в этом. В даташите (очень кратком, и, похоже, криво переведённом с китайского) есть вот что:
After power-on have about 0.5sec stable-time, during the time do not touch the key pad,
and the function is disabled
Наверное, имеется в виду, что после подачи питания в течение 0,5 сек. микросхема не выдаёт выходных сигналов.
Grey1975 писал(а):Уважаемый *Trigger* подскажите, где в программе Вы зажигаете сегменты служебного разряда.Хочу по аналогии зажигать другие сегменты.
Ох... Там всё не очень просто. Коды для зажигания сегментов хранятся в массиве symbol_code. Сейчас там два элемента для служебного разряда:
Код: Выделить всё
flash char symbol_code[]={
...
0b00000010, //digit 8 dot 11
0b00100000, //digit 8 minus 12
...
}
Можно добавить новый код (например, для третьего сегмента Вашего индикатора или одновременного зажигания), но только в конец массива - иначе съедет адресация символов, описанная дальше в куче строк #define:
Код: Выделить всё
#define sp 10
#define d8_dot 11
#define d8_minus 12
#define minus 12
#define L 13
#define v 14
#define M_left 15
#define M_right 7
...
Конечно, можно переписать всю таблицу адресов, но зачем?
Код символа для отображения в служебном разряде записывается в _display_buffer[8].
Сейчас это делается в функции disp():
Код: Выделить всё
void disp(unsigned char d7, unsigned char d6, unsigned char d5, unsigned char d4, unsigned char d3, unsigned char d2, unsigned char d1, unsigned char d0, unsigned char __dots, unsigned char __blink, unsigned char _shift){
unsigned char ii;
unsigned char spaces_count;
if((menu_item==menu_NULL)&&(settings&(1<<alarm_on))) _display_buffer[8]=d8_dot;
else _display_buffer[8]=sp;
...
Тут делается следующее: если часы в режиме отображения времени (menu_item==menu_NULL) и будильник включен (settings&(1<<alarm_on)), в _display_buffer[8] записывается код токи служебного разряда (d8_dot). Иначе туда записывается sp - код для погашенного разряда (от space).
Grey1975 писал(а):Исходники выложу позже (если тов. *Trigger* не возражает) чтоб каждый мог скомпилить под свои нужды.
Выкладывайте, с чего мне возражать - я же и так выкладываю все свои исходники, а переделка под Вашу версии - Ваш труд.
Да, отличные часы получились.

И ведь удалось же всё запихнуть в такой малый объём! Жаль, что я не умею делать двустронние ПП, может, и повторил бы.