Сопоставление "имен" и "чисел"Начнем с самого простого – с директивы EQU , которая машинным числам определяет человеческие имена. Директивы – это команды, которые устанавливают определенный порядок работы программы.
Глядя на машинную математику МК, становится очень тоскливо от обилия чисел в разных системах счисления: значительное количество адресов регистров помноженное на восемь бит в каждом регистре. Но это не должно пугать, т.к. на практике всё гораздо проще. Регистрам и битам в регистрах, с которыми мы будем работать, присваиваются имена.
Теперь нам пора поработать с реальными фрагментами программы; все фрагменты, которые будут использоваться в примерах – взаимосвязаны между собой. Поэтому, если какой-то фрагмент непонятен, нужно читать предыдущие примеры.
Пример сопоставления имен:
;сопоставление значений селектора (о селекторе чуть позже)
W EQU 0x0
F EQU 0x1
;сопоставление адресов регистров
INDF EQU H0000
TMR0 EQU H0001
PORTB EQU H0006
KLON EQU H000C
KLOP EQU H000D
;сопоставление номеров битов в регистре
Z EQU 2
DC EQU 1
C EQU 0
В примере специально был использован разный формат записи чисел для того, чтобы вы привыкали к различным вариантам записи.
Внимание: адреса регистров рекомендую указывать только в 16-ричном формате.
Итак, для простоты понимания сопоставление – это назначение числам каких либо имен (наборов символов). Проще понимать это иначе: мы назначаем именам какие-то числа, которые, по нашему мнению будут использоваться в программе ("дом Ивановых – это дом номер 21А, а дом Петровых – это дом 19Б; мы переселяемся из дома Петровых в дом Ивановых, а по машинному – переселяемся из 19Б в 21А").
В последующем вы поймете, что сопоставление по сути не важный момент в программировании. Вы можете какие-то регистры и биты сопоставить, какие-то не сопоставить. Так или иначе, в тексте программы в любой момент времени вам ни кто не препятствует обратиться к регистрам или битам либо по их именам, либо по их порядковым адресам или номерам, определенных в документации МК.
|