.
Сразу хочу напомнитть, что у нас существует статья Пишем программу для AVR – делаем бегущие огни. где сывается процесс создания простой мигалки, расписана работа с портами.
Порты микроконтроллера могут работать как входы или как выходы, если порт должен работать как выход, нужно настроить соответствующее направление инструкцией CONFIG
PORT: Config Portb = Output
Если нужно установить порт контроллера как вход то пишут Input
Можно также устанавливать направление соответствующих линий порта с помощью установки регистра DDRB. Для примера инструкция:
DDRB = &B00001111
повлечет запись числа 15 в регистр направления порта B, и 4 старших бита (PORTB.7 до PORTB.4) будут выходами, а 4 младшие (PORTB.3 до PORTB.0) входами. Можно также определить направление работы для каждого вывода порта отдельно. С этой целью нужно использовать инструкцию CONFIG PIN.
Например:
Config PinB.0 = Input
Инициализация программы языка BASCOM. BASCOM компилятор устанавливает особый порядок инициализации, которая отвечает за сброс всех ячеек памяти. Его можно выключить помещая в начале программы директиву $NORAMCLEAR. Эта процедура, также выполняет инициализацию дисплея, UART, если в программе существуют инструкции INPUT, PRINT, LCD, и т.д...
Регистры могут использоваться как обычные переменные типа Byte.
Например:
Portb = $H28
повлечет установку числа 40 в регистре порта B.
Внимание! Имена регистров и битов зарезервированы, и, следовательно, не могут стать именем переменной, определяемой пользователем!
Например:
Dim SREG As Byte
Буквенно-цифровой ЖК-дисплей Буквенно-цифровой ЖК-дисплей может быть подключен в двумя способами:
• Непосредственным соединением выводов LCD с выводами портов микроконтроллера Этот способ называемый Pin Mode. При этом оставлена полная свобода при соединении выводов LCD к портам процессора. Таким образом упрощается создание печатной платы,за счёт увеличения размера программного кода. • Соединением выводов (данные) дисплея к системной шине, которая доступна на системах с внешней памятью данных XRAM . Это так называемый режим Bus Mode.
Пример подключения ЖК дисплея к портам микроконтроллера ниже:
Этот способ подключения оставляет выводы PORTB.1, PORTB.0 а также весь PORTD свободными. Очевидно, как упомянуто выше, способ подключения произволен. Его можно определить в меню Options | Compiler, или в программе инструкцией CONFIG LCDPIN.
Когда дисплей подключен к системной шине данных - второй способ - все выводы данных дисплея (DB7-DB0) должны быть подключены к шине данных. Передача, в 8-битном режиме. Управлением линиями E и RS занимается декодер адресов, чтобы не было конфликтов с внешней памятью. Адреса, обращение к которым на адресной шине, вызывает установку или сброс линии Е или RS, нужно установить с помощью директив $LCDRS и $LCD.
Язык BASCOM BASIC предлагает много инструкций, обслуживающих дисплеи LCD. Однако, для того, чтобы иметь полный контроль над дисплем может быть использована ассемблерная процедура.
Вот пример:
$ASM Ldi _temp1, ' команда для загрузки кода в R24 Rcall _Lcd_control ' отправить команду на ЖК
Ldi _temp1, ' загрузка в R24 код символа (буквы) Rcall _Write_lcd 'отправить на ЖК как данные $END ASM
Внимание! Названия _Lcd_control а также _Write_lcd являются адресами процедур в ассемблере, возможных к вызову из языка BASCOM BASIC. Чтобы они были доступны нужно в программе сконфигурировать дисплей или использовать какие-либо инструкции связанные с ним.
Дополнительную информацию на тему программирования дисплея LCD на низком уровне нужно искать в документации его производителя.
|