Доброго времени суток.
В МК я, можно сказать, новичок, поэтому решил спросить совета у более опытных людей. Суть проблемы такова - имеется устройство, считающее импульсы от внешнего генератора. Считает как в большую сторону, так и в меньшую. При достижении 0 кратковременно устанавливается высокий уровень на выходе, давая понять тому, что к нему подключено, что счет окончен. Собрано устройство на tiny2313A, индикация организована на таймере0, порты В0 - В6 аноды индикатора, D0, D1, D4, D5 - катоды, D2, D3 - входы импульсов, А1 - выход.
Все как бы работает, но при отсчете от какого-либо значения большего 255 до 0, при достижении значения 255 на выходе, по какой-то непонятной мне причине, появляется высокий уровень. Причем происходит это спонтанно - может сутки отработать как часы, а может глючить через раз. При этом, если импульсы продолжают поступать, то отсчет продолжается.
Вот кусок кода, отвечающий за увеличение/уменьшение переменной и реакцию устройства при достижении переменной нулевого значения. Переменная Счет нужна для того, чтобы при достижении 0 не дергался постоянно выход. Не пинайте, пожалуйста, за его корявость.
Config Int0 = Falling Config Int1 = Falling On Int0 Меньше On Int1 Больше ...................... ...................... Выход = 0 Число = 0 Счет = 0 Do If Число = 0 And Счет = 1 Then Выход = 1 Waitms 250 Выход = 0 Счет = 0 End If Loop End '------------ 'Подпрограммы '------------ Меньше: If Число > 0 Then Decr Число Счет = 1 Eifr = 64 Return '------------------------------ Больше: If Число < 9999 Then Incr Чмсло Счет = 1 Eifr = 128 Return
Ткните, пожалуйста, носом откуда у проблемы ноги растут.
Спасибо.