Вобчем начал разбираться с асмом для АВР.
хочу сделать простое - один порт разделить пополам, половина выходы половина входы (это получается), на один вход поставить кнопочку, и что бы при нажатии на неё один из выходов устанавливался в 0 (при инициализации стоит 1). На входах подтягивающие резюки включены (те которые внутри). Получается совсем просто: то что на входе надо передать на выход.
Не хватает опыта .
P.S. Чес слово я не тупой .
P.S. Надо простой пример в 10-15 строчек (я думаю многие с этого начинали)
Вобчем дошёл до этого:
- Код: Выделить всё • Развернуть
.INCLUDE "m8def.inc" ; Определение имен для регистров
.DEVICE ATmega8 ; Определяем устройство - ATmega8
.DSEG ; Сегмент данных (ОЗУ)
.ESEG ; Сегрмент EEPROM
.CSEG ; Программный сегмент
ldi r16, 0b00001111
out DDRB, r16
ldi r16, 0b11111111
out PORTB, r16
loop:
in r16, PINB
bst r16, 4
brts loop1
sbi PORTB, PB0
rjmp loop2
loop1:
cbi PORTB, PB0
loop2:
nop
nop
rjmp loop
Думаю тут есть что оптимизировать, посоветуйте.