Доброе утро!
Пока_без_кота писал(а):Но оно все равно не взлетело, я где-то еще ошибся.
Было бы очень удивительно, если бы "оно" заработало!
Давайте разберемся в чем тут дело. По программе, нет вопросов, если учесть мои замечания, которые были ранее. Программа рабочая.
Пока_без_кота писал(а):Нет, я использовал 74НС04 сознательно. У меня WR и RD подключены каждый через свой инвертирующий буфер на вход Е дисплея.
А вот это никуда не годится! Я же уже отмечал эту ошибку. У вас сейчас там
выходы ваших инверторов соединены
вместе и подключены на "Е" дисплея.
В результате конфликт уровней! Пока на одном выходе лог. 0, на другом возникает лог. 1 при чтении или записи дисплея.
Если не хотите использовать дополнительный элемент И-НЕ, то уберите один из инверторов вообще. Выход оставшегося как и был к "Е" дисплея.
А выводы МК "WR" и "RD" подключите
через диоды к входу оставшегося инвертора. Катоды к МК, аноды к инвертору.
Вход ивертора через резистор 7-15 кОм к плюсу питания (подтяжка). Получится элемент И-НЕ
Пока_без_кота писал(а):Ведь действительно, за счет чего там будет устанавливаться высокий логический уровень, если подтягивающих резисторов нет))
А вот действительно, за счет чего? Думаю - подтягивающие резисторы нужны. Поэтому, меняйте схему подключения и все "взлетит"
По поводу программы, если надумаете ее модернизировать, то я бы посоветовал это сделать так:
в основном цикле работать с дисплеем (как сейчас), по прерываниям, таймерам, вызывать подпрограммы обработки датчиков и прочее.
В них сохранять и восстанавливать аккумулятор, а вот при работе с дисплеем можно уже не делать этого, просто закинули в аккумулятор данные,
затем вызвали подпрограмму вывода на дисплей и не волнуемся, что содержимое аккумулятора изменится. Ну это уже на вкус и цвет...
