ВУЗ:
Составители:
да
Start1
Load
нет
st1
100 мс
PinC6=?
Work
PinC6=1?
нет
Старт
1
0
PinC6=0?
100 мс
да
st2
Рис. 42
Сущность алгоритма заключается в следующем. Проверяем состояние на вхо-
де PinC6 микроконтроллера. Команда выполняется за время такта. Если, напри-
мер, получен 0, то делается повторная проверка контакта PinC6, но с задержкой
100 мс, когда дребезг контакта прекратится. И если состояние 0 подтверждается,
то переходим к дальнейшему выполнению программы (Work). Если же не под-
тверждается, то повторно проверяется контакт.
Программа запишется следующим образом.
In tmp,PinC
Andi tmp,0b01000000 ; маскируем 6-й разряд
Subi tmp,0b01000000 ; вычитаем единицу из шестого разряда
Brim st1; если было 0, то переход на st1
Rjmp st2 ; если 1 – то на st2
St1:
Rcall tim01s
Sbic PinC,6 ; если 6-й разряд 0 то переход в режим Work
Rjmp Start ; иначе на Start
Rjmp Work
St2:
Rcall tim01s
Sbis PinC,6 ; Если 6-й разряд 1, то переход в режим Load
Rjmp Start ; если иначе, то на Start
Rjmp Load
2.23. Обработка прерываний от таймеров
За обработку прерываний от таймеров (восьмиразрядный таймер T/C0 и шест-
надцатиразрядный – T/C1) отвечает регистр TIMSK (Timer/Counter Interrupt Mask
Register) – регистр маски прерываний от таймеров/счетчиков. Он управляет пре-
рываниями во взаимосвязи с таймерами Т/С0 и Т/С1.
Формат регистра TIMSK имеет вид:
61
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »