Группа: Свой
Сообщений: 12
Регистрация: 21-06-04
Пользователь №: 72
Читаю IN R16,PINA - записывается последний байт, который передавал из порта. Читаю по-битно SBIS PINA,0 JMP M ORI R16,01 M1: SBIS PINA,1 JMP M1 ORI R16,02 M1: и т.д. - все в порядке. В чем разница? Ведь можно же читать сразу входной байт, где ошибка?
Абсолютно прав Maxim и без всяких "если". В Атмеловских даташитах об этом однозначно говорится, что появление сигнала на выходе порта происходит в следующем такте после исполнения соответствующей команды записи в порт. Поэтому команда чтения из соответствующего пина ОБЯЗАНА отставать от команды записи хотя бы на один такт (команда NOP как минимум), иначе будет считано предыдущее состояние пина. При пошаговой отладке, например через JTAG, может показаться, что это не верно, т. к. тактовый генератор не останавливается и нужные такты проскакивают как раз между соседними шагами.