Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

8051, ассемблер, HD44780. Чтение Busy Flag

Вс окт 20, 2019 16:49:52

Подключил к МК AT89C1051U экран на основе HD44780, и пытаюсь им управлять в 4-битном режиме. DВ4-DB7 экрана подключены к P1.0-P1.3 MK, RS - P3.7 R/W - P3.4; E- P3.5. Все выводы подтянуты к плюсу резисторной сборкой на 1К, т.к выходы МК с открытым коллектором.
Делал по даташиту, и в общем, получилось. Но я использую программные задержки, которые заведомо дольше чем возможная занятость контроллера экрана. На одном форуме прочитал, что так делать неправильно, а правильно ждать пока экран снимет 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, и вообще, как выглядит последовательность действий?

Re: 8051, ассемблер, HD44780. Чтение Busy Flag

Пн окт 21, 2019 14:30:47

Библиотека из старого проекта

правда там байтовый интерфейс был...
:sleep:
Ответить