Цитата
незнаю что у вас за компилятор,
PICC 8.05pl2
Цитата
И я в вашем коде чето не вижу подключения заголовочного файла вашего пика, или не требуется?
в #1. (Не повторять же весь код.)
RunneR2, спасибо, но ваш код не спасает от дребезга контактов.
Цитата
У вас knopka_prev в программе один раз получает значение равное RA0 (а это по умолчанию "1" при ненажатой кнопке) и дальше в бесконечном цикле вы это самое "1" упорно сравниваете с нулем.
Теперь я напрямую обращаюсь к линиям портов. (Глюки компилятора с именами потом разгребу.)
В #19 у меня было лишнее увеличение time1. Конечно сравниваю с нулем, ведь при нажатой кнопке у меня ноль.
Код
for(;;)
{
if((RA0 == 0) && (DDF == 0))
{
DDF = 1; // активируем "защелку", чтобы на счетчик прошел только один "0".
time1 = time1 + 1;
if (time1 > 9) // чтобы "time1" не вышла за пределы массива
{
time1 = 0;
}
PORTB = arr_seg [time1];
TMR1ON = 1; // включить TMR1
while (DDF == 1) // выполняется пока величина () не станет ложной (не переполнится TMR1)
{
if (TMR1IF == 1) // ожидание появления флага прерывания по переполнению TMR1
{
TMR1ON = 0; // выключить TMR1
TMR1IF = 0; // сброс флага прерывания по переполнению TMR1
DDF = 0; // условие для следующего срабатывания кнопки
}
}
}
}
}
Цитата
Вы можете с помощью своей собственной головы придумать алгоритм работы вашего устройства, изобразить на бумаге, и потом уже его (алгоритм) перевести на конструкции такого несложного языка как С? Или будете ждать, когда кто-нибудь из нас вам напишет готовую программу, которую вы не сможете запустить из-за плохой панельки?
Алгоритм давно готов, там ничего сложного. А панельку с нулевым усилием я 2 недели искал, еле нашел. Сами знаете - временный неконтакт - хуже нет неисправности. Отловил только тогда, когда он совсем пропал. Программу я не прошу писать, только подсказать некоторые моменты.
Цитата
Вы не можете с опросом пинов разобраться, а уже лезете в таймер. ЧуднО все это.
Уже разобрался. Если бы не глюк компилятора с именами, давно бы разобрался. А что такого сложного в таймере? Если бы в даташите для примера написали бы, что при 1:8 будет частота 1.90735... Было бы совсем просто.