Шрифт:
Имя данного файла можно изменить на любое другое, длиной от одного до восьми символов, разрешенных для имен файлов. Расширение «dsp» выбрано не случайно. При трансляции программы, компилятор будет искать файл программы именно с таким расширением. Если он не найдет такой файл, то выведет сообщение Preprocessor failed to open mem_clr.dsp.
Рассмотрим структуру и состав приведенного выше файла. Как видно из примера, в начале файла программы находится описание назначения программы, ее версии и пр. атрибуты, заключенные между символами /* и */ в качестве комментариев. Далее следуют три строки директив с комментариями, описывающими назначение этих директив и заключенными между фигурными скобками. Фигурные скобки также предназначены для вставки комментариев в программу. Файл def2181.h, включаемый в файл программы с помощью директивы #include, состоит из строк, присваивающих символьным именам регистров значение их адресов в области памяти данных процессора.
Использование символьных имен позволяет записывать в программе не конкретные цифровые значения адресов или данных, а их словесные описания, более понятные и легче запоминающиеся. Это делается для придания программе наглядности, предотвращения машинальных ошибок во время ее создания и облегчения ее понимания. Содержимое файла def2181.h приведено ниже.
Описание этих символьных имен и их соответствие адресам памяти данных процессора приведено в табл. 6.1.
Таблица 6.1 Описание символьных имен регистров управления и состояния процессора ADSP-2181
Имя | Описание | Адрес |
---|---|---|
IDMA | Регистр управления IDMA | 0x3FE0 |
BDMA_BIAD | Регистр внутреннего адреса BDMA | 0x3FE1 |
BDMA_BEAD | Регистр внешнего адреса BDMA | 0x3FE2 |
BDMA_BDMA_Ctrl | Регистр управления BDMA | 0x3FE3 |
BDMA_BWCOUNT | Регистр счетчика слов BDMA | 0x3FE4 |
PFDATA | Регистр данных программируемых флагов | 0x3FE5 |
PFTYPE | Регистр управления программируемыми флагами | 0x3FE6 |
SPORT1_Autobuf | Регистр управления автобуферизацией SPORT1 | 0x3FEF |
SPORT1_RFSDIV | Регистр делителя кадровых импульсов SPORT1 | 0x3FF0 |
SPORT1_SCLKDIV | Регистр делителя тактовых импульсов SPORT1 | 0x3FF1 |
SPORT1_Control_Reg | Регистр управления SPORT1 | 0x3FF2 |
SPORT0_Autobuf | Регистр управления автобуферизацией SPORT0 | 0x3FF3 |
SPORT0_RFSDIV | Регистр делителя кадровых импульсов SPORT0 | 0x3FF4 |
SPORT0_SCLKDIV | Регистр делителя тактовых импульсов SPORT0 | 0x3FF5 |
SPORT0_Control_Reg | Регистр управления SPORT0 | 0x3FF6 |
SPORT0_TX_Channels0 | Регистр младшего слова передатчика SPORT0 | 0x3FF7 |
SPORT0_TX_Channels1 | Регистр старшего слова передатчика SPORT0 | 0x3FF8 |
SPORT0_RX_Channels0 | Регистр младшего слова приемника SPORT0 | 0x3FF9 |
SPORT0_RX_Channels1 | Регистр старшего слова приемника SPORT0 | 0x3FFA |
TSCALE | Регистр масштабирования таймера | 0x3FFB |
TCOUNT | Регистр счетчика таймера | 0x3FFC |
TPERIOD | Регистр периода таймера | 0x3FFD |
DM_Wait_Reg | Регистр тактов ожидания памяти данных | 0x3FFE |
System_Control_Reg | Регистр управления системой | 0x3FFF |
Как видно из содержимого данного файла, в каждой его строке производится директивное назначение определенному символьному имени конкретного числового значения. Символьные имена могут быть произвольными, важно только, чтобы они одинаково записывались в данном файле и в самой программе. В дальнейшем мы часто будем использовать символьное описание регистров, для обращения к ним по записи или чтению из программы. В частности, в нашей программе mem_clr.dsp содержатся строки команд для обращения к регистру конфигурирования PFTYPE и регистру данных PFDATA программируемых флагов PF процессора. Файл def2181.h должен находиться в том же каталоге, в котором будет храниться файл программы во время ее трансляции. Иначе компилятор выдаст сообщение об ошибке во время компиляции программы.