Делал по даташиту, и в общем, получилось. Но я использую программные задержки, которые заведомо дольше чем возможная занятость контроллера экрана. На одном форуме прочитал, что так делать неправильно, а правильно ждать пока экран снимет Busy Flag. Но, ничего не получилось, по крайней мере так, как я придумал.
Код: Выделить всё
check_busy:
setb bf_pin ; убеждаемся что P1.3 (DB7 экрана) - вход
clr rs_pin ;RS=0, выбран Instruction Register экрана
setb rw_pin ;Читаем из экрана
loop:
call en_toggle ;вызываем подпрограмму выдачи такта на Е
jb bf_pin, loop ;проверяем, не прижал ли экран DB7 к корпусу. Если нет, сначала
clr rw_pin
setb rs_pin ;Data Register
ret ;досвидос
Но реальный экран молчит, а в протеусе пишет ошибку, что читаю из занятого экрана. Что-то делаю не так, но что - не пойму, прошагать программу вместе с экраном не получается.
Как правильно прочитать этот BF, и вообще, как выглядит последовательность действий?
