Справочные таблицы

09-11-2013, 18:13
Просмотров: 1813

Когда подпрограмма должна обращаться к данным систематическим образом, то самый лучший подход — разместить данные в справочной таблице. Таблица — это блок данных в подпрограмме или блоке памяти EEPROM.

Справочные таблицы

Она может содержать набор числовых значений (например, переменные, используемые в подпрограмме playit) или кодов для различных конфигураций фигур на доске, или же закодированные результаты попыток прохождения лабиринта.
К данным, хранимым в справочной таблице, осуществляется быстрый доступ.
Здесь мы говорим о том, как поместить данные в подпрограмму. Для получения доступа к данным мы объявляем переменную, которая сообщает микроконтроллеру PIC, какой конкретно элемент данных должен быть считан.
Поскольку эта переменная указывает на некоторый элемент, она называется указателем.
Указатель сохраняется в регистре общего назначения и инициализируется нулевым значением:
pointer equ 30h
Подходит любой неиспользуемый адрес clrf pointer
Подпрограмму лучше всего размещать в начале листинга (особенно, если в ней много данных).
Это устраняет риск, что таблица распространится на два блока памяти программ.
Первая строка имеет вид:
addwf pel, w
Перед вызовом подпрограммы значение указателя помещается в рабочий регистр.
Для того чтобы считать первый байт, указателю присваивается значение 00h. Для чтения второго значения — Olh и т.д В первой строке подпрограммы, счетчик команд таким образом увеличивается в соответствии со значением указателя.
Обычно микроконтроллер PIC продолжает автоматически увеличивать счетчик команд и переходит к второй строке подпрограммы.
Если значение указателя равно 00h, то именно это и произойдет, однако, если указатель больще нуля, то микроконтроллер PIC переходит дальше: к строке, на которую указывает указатель.
Все строки подпрограммы, кроме первой, имеют форму:
retlw, Oah
Эта строка загружает значение (в данном случае — Oah) в рабочий регистр и возвращает процессор назад к главной программе.
В данном случае значение в регистре w используется в программе, которая вызвала подпрограмму.
Пример справочной таблицы кодов, используемых в семисегментном индикаторе.
Данная подпрограмма ориентирована на семисегментный индикатор, управляемый через восьмиразрядный порт (например, С).
Для использования семисегментного индикатора мы загружаем в регистр w отображаемое число и вызываем подпрограмму sevenseg.
После возврата из подпрограммы соответствующий код окажется в регистре w.
Этот код затем загружается в порт С, и число отображается на индикаторе.
Практический пример использования справочной таолицы — программа воспроизведения мелодии робота «Андроид».

Источник: qwedr.com

Комментарии:
    » Справочные таблицы