Лекция № 4 (Лекции МП), страница 2
Описание файла
Файл "Лекция № 4" внутри архива находится в папке "Лекции МП". Документ из архива "Лекции МП", который расположен в категории "". Всё это находится в предмете "микропроцессоры" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "микропроцессоры" в общих файлах.
Онлайн просмотр документа "Лекция № 4"
Текст 2 страницы из документа "Лекция № 4"
3.) INCLUDE – подключение дополнительного исходного файла, при этом не нужно подключать РОН. Весьма желательная директива. Подключаемый библиотечный файл может быть указан в кавычках или угловых скобках. Часто впереди директивы INCLUDE находится #, но это не обязательно. Указанный файл читается как исходный текст программы. Эффект аналогичен копирования полного текста программы указанного файла в место расположения директивы. После окончания компиляции подключенного модуля, компиляция продолжается в исходной программе. Допускается до шести уровней вложения файлов.
Например: INCLUDE <16F873.INC>
4.) _ _CONFIG – установка битов конфигурации микроконтроллера. Впереди CONFIG пишутся два нижних подчеркивания - без пробелов, которые сливаются в один. После CONFIG указываем: что мы хотим подключить. Предварительно, перед директивой _ _ CONFIG, надо указать тип микроконтроллера с помощью директивы LIST или PROCESSOR. Для микроконтроллеров семейства PIC17CXXX в директиве LIST необходимо указать выходной формат HEX файла INHX32.
Например: LIST P=17c42, F= INHX32
_ _ CONFIG H 'FFFF' ; конфигурация по умолчанию
5.) ORG – установить адрес программы. Указывает, с какой ячейки нужно начинать. По умолчанию: считается, что программа начинается с нулевой ячейки (ORG 0 x 000). В самом начале её можно пропустить, но если в программе имеются подпрограммы, то перед ними обязательно должно стоять: ORG 0 x 004 (адрес вектора прерываний).
6.) EQU – определение константы ассемблера. Если, например, в программе некая константа повторяется десятки раз, и возникла необходимость эту константу поменять, то, воспользовавшись EQU (заменив константу один раз), мы избавляемся от необходимости выискивания и многократной замены данной константы в программе.
Например: NAME_CONST EQU .число
7.) CBLOCK – определение списка именованных констант. Каждая именованная константа имеет некоторое значение, описанное выше по тексту программы. Цель данной директивы состоит в том, чтобы указать адреса размещения нескольких констант. Список именованных констант заканчивается директивой ENDC. После директивы CBLOCK следует указание стартового адреса для первой константы. Если адрес не указан, то используется заключительное значение предыдущего CBLOCK. Если первый CBLOCK не имеет никакого указания, то размещение начинается с нулевого адреса. Именованные константы указываются либо в столбик, либо через точку с запятой в строке.
Например: CBLOCK 0 x 20
NAME ; NAME будет иметь шестнадцатеричный адрес 20
COUNT1 ; COUNT1 будет иметь шестнадцатеричный адрес 21
.......................................
ENDC
8.) #DEFINE - определяет замену текста. После #DEFINE указывается имя, которое хотим присвоить, далее либо команда, либо вывод. В тексте программы имя будет заменено указанной командой или выводом.
Например: #DEFINE SDA RB.7
#DEFINE SCL RB.6
9.) BANKSEL – выбор банка для прямой адресации. После BANKSEL идет имя регистра. Директива дает команду компилятору сгенерировать код настройки банка памяти данных для прямого обращения к заданному регистру. В директиве может быть указана только одна метка. Предварительно метка указанного регистра должна быть объявлена, и соответствовать назначению директивы. Линкер генерирует соответствующий код для выбора банка памяти. Для 12-разрядных микроконтроллеров устанавливает/сбрасывает бит в регистре FSR. Для 14-разрядных микроконтроллеров – изменяются биты в регистре STATUS. Для 16-разрядных микроконтроллеров генерируются команда MOVLB или MOVLR. Для усовершенствованных 16-разрядных микроконтроллеров будет сгенерированна команда MOVLB. Если в микроконтроллере только один банк памяти, то никакой дополнительный код генерироваться не будет.
Например: BANKSEL TXREG
MOVWF TXREG
10.) DT – порождает на каждый символ директиву. Директива DT используется при выводе сообщений.
Вызов любого символа или строки осуществляется организацией:
-
входом в подпрограмму
-
выходом из подпрограммы (RETLW)
Директива DT генерирует серию команд RETLW для 8-разрядных значений символов. Каждое значение символа сохраняется в отдельной команде RETLW. Директива DT – это единственная команда, которая дает возможность из памяти программ передать информацию в рабочий регистр.
Например: DT 'USART IS READY'
порождает на каждый символ директиву: RETLW 'U'
RETLW 'S'
RETLW 'A'
............................
RETLW H '00'
DT 'PRESS ANY KEY'
RETLW H '00'