і
МИКРОКОНТРОЛЛЕРЫ
і
Потянуть за веревочку
Ч * '
Q
Y Пуск таймера/ -|
-^Стоп^гаймер
?4
Р
Стоп таймера
20 мсек истекло
20 мсек истекло
---------------
Включить лампочку
и стоп таймера
Отпустить веревочку
Отпустить веревочку
Ж
« \ Пуск таймера «
'Стоп таймерА
Ч .
Потянуть за веревочі у
Потянуть за веревочку
7
] Стоп таймера 0
'
Пуск тайм ергк_^/
20 мсек истекло
20 мсек истекло
Стоп таймера
Отпустить веревочку
Отключить лампочку
и стоп таймера
Рис. 3
Пуск таймем
Потянуть за веревочку
таблицей автомата. Этот код в точ-
ности повторяет аналогичный код
для вызова подпрограммы провер-
ки терминального символа, только
теперь в нем нет команд push и
pop - нужная строка в таблице ав-
томата найдена, все необходимые
действия сделаны, содержимое ре-
гистра IR1 нам больше не понадо-
бится и сохранять его нужды нет.
Подпрограмм выхода в автомате
три - одна включает лампочку, дру-
гая ее выключает, а третья - “ни-
чего не делает” в самом прямом
смысле этого слова. Такие “ниче-
гонеделающие” подпрограммы -
один из п р о гр а м м и с тс ки х т р ю -
ков: он позволяет выполнять в про-
грамме те или иные действия, не
задумываясь (т.е. не анализируя с
помощью д о п о л н и те л ьн ы х к о -
манд), надо ли вызывать в данном
случае подпрограмму или нет.
13. После возврата из подпрог-
раммы выхода происходит переда-
ча управление на метку again - но-
вый цикл работы интерпретатора
автомата.
14. О назначении пяти команд
фиктивного сравнения мы уже го-
ворили. Команды же subi и jnz мы
уже встречали в самой первой на-
шей программе - это “хвост” цик-
ла (хотя на самом деле это его за-
головок, о чем автор и предупреж-
дал в той же статье читателя). Цикл
этот нужен, чтобы “не перестараться”
и не обработать лишних строк - их
в таблице всего четыре! Когда же
цикл закончится, вступит в дей-
стви е последняя ком анд а ) т р
а д а т , заверш ая таким образом
бесконечный цикл работы автома-
та в целом.
Дочитав до этого места, чита-
тель, думается, находится уже в
крайней степени раздражения: вот
так технология! Вот так программа!
Выходит, для того, чтобы соорудить
устройство, зквивиалентное тригге-
ру (не правда ли?), надо, как пред-
лагает автор, накатать опус чуть ко-
роче “Войны и мира” ! Не торопи-
тесь, уважаемый читатель, давай-
те все-таки откомпилируем и зане-
сем в микроконтроллер любую из
двух наших программ, и “подерга-
ем за веревочку” у нашего “торше-
ра”. Не забудьте при загрузке про-
граммы в микроконтроллер указать
строку конфигурации /с:0х01С0.
<В этом месте автор предпола-
гает, что читатель внял просьбе ав-
тора и все-таки занес и подергал
все, о чем его просили.>
Итак, посмотрим результаты.
Мало того, что пришлось писать ка-
кую-то ж уткую программу, так она
еще и не работает - ж м еш ь на
кнопку, а лампочка не загорается.
Или наборот - не тухнет. В чем тут
дело?
А дело очень и очень простое:
мы забыли о самом элементарном
- о “дребезге” контактов. Думает-
ся, нет нужды объяснять радиолю-
бителям, что это такое. Существу-
ет достаточно много способов бо-
роться с дребезгом, и самый про-
стой из них - дать кнопке после
нажатия или отпускания некоторое
время - успокоиться. Давайте на-
рисуем для нашего автомата новый
граф переходов - уже с учетом дре-
безга (см. рис. 3). Для определен-
ности будем преполагать, что 20
м и л л и се кун д для “у сп о ко е н и я ”
кнопки будет достаточно.
Окончание в №10/2005
I
49
Радиолюбитель - 0 9 /2 0 0 5 |
предыдущая страница 47 Радиолюбитель 2005-09 читать онлайн следующая страница 49 Радиолюбитель 2005-09 читать онлайн Домой Выключить/включить текст