ВУЗ:
Составители:
Мы должны дешифровать эти три состояния и перейти на выполнение соот-
ветствующей подпрограммы. Алгоритм дешифрации:
rab0_0а7=1, а6=1 ?
да
нет
Выделение а7, а6
нет
а7=1, а6=0 ?
Wor3
да
да
0b000000а7а6
а7,а6=0?
нет
rab7
rab0
Рис. 46
Эта часть программы записывается в виде:
wor3: ; начало
in tmp,PinA ; считывание состояния контактов порта А в рег. tmp
andi tmp,0b11000000 ; маскирование разрядов а7,а6; 0bа7а6000000
swap tmp ; перестановка полубайтов а3 а2 а1 а0 а7 а6 а5 а4
lsr tmp ; сдвиг tmp вправо 0 а3 а2 а1 а0 а7 а6 а5
lsr tmp ; сдвиг tmp вправо 0 0 а3 а2 а1 а0 а7 а6
cpi tmp,1 ; Из tmp вычитаем 1. Результат нигде не сохраняется. Но
;если результат отрицательный, в регистре SREG
;устанавливается в 1 флаг отрицательного результата
brmi rab0 ; переход на rab0, если а7 а6 = 0 (00)
cpi tmp,3
brmi rab7 ;переход на rab7, если а7 а6 = 2 (10)
cpi tmp,4
brmi rab0_0 ; переход на rab0_0, если а7 а6 = 3 (11)
rjmp wor3 ; возврат на начало wor3
Алгоритм и программа для rab0:
77
Страницы
- « первая
- ‹ предыдущая
- …
- 75
- 76
- 77
- 78
- 79
- …
- следующая ›
- последняя »