Greymand писал(а):Здравствуйте уважаемые!
Так вот,как сделать чтобы цифра мигала с периодом 0,5-1 сек?
Можно ещё одно прерывание по таймеру поставить, и мигание точки в него положить.
Greymand писал(а):Здравствуйте уважаемые!
Так вот,как сделать чтобы цифра мигала с периодом 0,5-1 сек?
Обычный счётчик (переменная), считающий кол-во входов. По счётчику уже судим - зажигать после гашения индикатор или нет.Greymand писал(а):И там,как я понимаю,надо сделать так,чтобы в N-ом количестве прерываний зажигать точку вместе с первым индикатором,а в остальных-зажигать первый индикатор без точки...
Тока как это грамотно сделать,не знаю(
Код: Выделить всё
void ind_upd(void){ // Входим 1 раз в 1 Ms
static unsigned int cnt_mig=0; // Счётчик вхождений
static unsigned char fl_mig=0; // Флаг включения индикаторов
if(++cnt_mig>1000) cnt_mig=0;
fl_mig = cnt_mig<500;
Гасим индикаторы();
if(++ind_num>=3) ind_num=0;
if(! fl_mig) return; // Если флаг сброшен - выходим из ф-ии без включения индикаторов
switсh(ind_num){
case 0:
.........
break;
case 1:
.........
break;
case 2:
.........
break;
}
}

Greymand писал(а):Здравствуйте уважаемые!
Сильно не пинайте,новичек я.
Есть,вообщем,динамическая индикация.Три разряда и точка.
Кода под рукой нет,но вообщем,логика такая:
Прерывание таймера;
Гасим все;
i++;
swith(i)
case 1: включаем первый индикатор;выводим циферку1;
case 2: включаем второй;выводим циферку2;
case 3: включаем третий,выводим циферку3;i=0;зажигаем точку;
Так вот,как сделать чтобы цифра мигала с периодом 0,5-1 сек?
Код: Выделить всё
ststic char blink;
blink=^blink;Код: Выделить всё
Гасим все;
выводим новое значение;
if(++i>=4)i=0;
swith(i)
case 0: if(blink==1)включаем первый индикатор;// данный разряд будет мигать
case 1: включаем второй;
case 2: включаем третий;
case 3: зажигаем точку;Аlex писал(а):Обычный счётчик (переменная), считающий кол-во входов. По счётчику уже судим - зажигать после гашения индикатор или нет.Greymand писал(а):И там,как я понимаю,надо сделать так,чтобы в N-ом количестве прерываний зажигать точку вместе с первым индикатором,а в остальных-зажигать первый индикатор без точки...
Тока как это грамотно сделать,не знаю(
Как-то, приблизительно, так...
Константы 500 и 1000 можно менять в зависимости от необходимой интенсивности мигания и частоты обновления индикации.
Аlex писал(а):Заведите переменную, которая будет хранить время продолжительности единички при нажатии кнопки №1. Опрашивайте кнопки №2,3 и изменяйте эту переменную, в зависимости от нажатой кнопки.
Алгоритм прост до безобразия...
ЗЫ: Про кнопки есть отдельная тема, почитайте её, там и примеры есть.
Код: Выделить всё
delay_ms(time);Код: Выделить всё
void _delay(unsigned int ms){
while(ms--) delay_ms(1);
}
.............
.............
_delay(time);
Код: Выделить всё
lcd_gotoxy(loc_array[a][0], loc_array[a][1]); //a - номер пары координат
слева!В какой терминологии ? Вам слово "массив" неизвестно ? Вы же его сами произносили.Marchello писал(а):мне трудно разобраться в терминологии и в структуре той или иной функции.
