Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_i_otvety_MPT.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.94 Mб
Скачать

Защита от дребезга контактов

При работе МК с датчиками, имеющими механические контакты (кнопки, одиночные клавиши, клавиатуры, реле), возникает явление, называемое дребезгом. Это явление заключается в том, что при замыкании или размыкании контактов вследствие упругости пружин возможно появления отскока контактов. Это приводит к переходному процессу, измеряемому временем дребезга tДР. При этом на вход МК вместо идеального перепада уровней поступает пачка импульсов, которая может быть прочитана МК как случайная последовательность нулей и единиц. Устранить влияние этого нежелательного явления можно аппаратурным методом (с использованием RS-триггера или триггера Шмитта), но чаще это делается программным путем с использованием временной задержки.

Устранение влияния дребезга контакта путем введения временной задержки состоит в том, что после обнаружения срабатывания контакта производится повторное (или многократное) считывание его состояния через определенное время. Время задержки в зависимости от механических свойств контактов выбирается в пределах 5 – 10 мс. На практике обычно используют упрощенную процедуру борьбы с дребезгом. Суть ее в том, что программа, обнаружив срабатывание контакта, запрещает опрос состояния этого контакта на время, заведомо большее длительности переходного процесса tДР. Для большинства контактов, используемых в кнопках, клавиатурах и маломощных реле, время задержки берется равным 20 мс.

Текст подпрограммы ожидания замыкания контакта (ожидания «0», низкого уровня)

WT_0: JB P1.1, WT_0 ; Ожидание замыкания контакта

CALL DEL20MS ; Подпрограмма задержки на 20 мс

RET

Подпрограмма ожидания размыкания контакта (ожидание «1», высокого уровня)

WT_1: JNB P1.2, WT_1 ; Ожидание размыкания контакта

CALL DEL20MS ; Подпрограмма задержки на 20 мс

RET

25. Методы ввода информации с клавиатуры для микроконтроллеров семейства mcs-51: виды клавиатур, схема подключения контактов клавиатур к микроконтроллеру, методы опроса клавиатуры.

В различных по сложности и назначению МКС используются разнообразные клавиатуры для ввода информации: простейшие, состоящие из клавиш управления типа СБРОС, ПУСК, ОСТАНОВ и т.п., и более сложные, предназначенные для ввода данных и управления режимом работы МКС.

Клавиатуры по методу аппаратурной реализации бывают двух видов: кодирующие и некодирующие.

В кодирующих клавиатурах каждый контакт подключается к отдельной линии порта ввода МК. При этом схемным путем формируется код, соответствующий нажатой клавише. Благодаря простоте реализации эти клавиатуры широко применяются при небольшом числе клавиш, как правило, не более 8.

При большом числе клавиш удобнее применять некодирующие (матричные) клавиатуры, которые представляют собой простую матрицу переключателей (требуемой размерности), включенных на пересечении строк и колонок матриц. Идентификация (кодирование) нажатой клавиши в таких клавиатурах выполняется программой. Так как для идентификации применяется метод сканирования, то такие клавиатуры обычно используются совместно с дисплеями, которые используют динамическое управление индикаторами.

Контакты кодирующих клавиатур (переключателей и кнопок) бывают с фиксацией замкнутого состояния и без фиксации. Первые остаются в нажатом состоянии (замкнуты), вторые размыкаются после отжатия. На рис. 25.1 приведена схема подключения кодирующей клавиатуры, состоящей из переключателей SA1-SA4 с фиксацией, к порту МК.

Рис. 25.1. Схема подключения переключателей к МК

При таком подключении на входах порта P1 при нажатии клавиши формируется унитарный код, в котором будет только один 0 в позиции, соответствующей нажатой клавиши. Использовать унитарный код в программах неудобно, так как он сильно затрудняет выполнение различных процедур по обработке данных. Поэтому более предпочтительно преобразовать такой унитарный код в обычный позиционный. В таблице приведены унитарные и позиционные коды для клавиатуры, состоящей из четырех клавиш.

Коды клавиатуры

Нажата

Унитарный

код

Позиционный

код

клавиша

прямой

инверсный

двоичный

HEX

SA1

SA2

SA3

SA4

1111 1110

1111 1101

1111 1011

1111 0111

0000 0001

0000 0010

0000 0100

0000 1000

0000 0000

0000 0001

0000 0010

0000 0011

00H

01H

02H

03H

Обычно процедура опроса клавиатуры оформляется в виде подпрограммы, которая вызывается по мере необходимости из основной программы.

Код нажатой клавиши удобно хранить в какой-либо ячейке памяти данных МК. Подпрограмму опроса клавиатуры назовем INPKEY. Текст ее может иметь следующий вид:

; INPKEY – подпрограмма опроса клавиатуры

; Выходной параметр: ячейка памяти данных KEYCODE –

; позиционный код нажатой клавиши

KEYCODE: EQU 30H ; Адрес ячейки в ПД

INPKEY: MOV A,P1 ; Пересылка в аккумулятор

; входного кода

CPL A ; Инвертировать аккумулятор

ANL A,#0FH ; Выделить разряды А3-А0

CALL IDENTIF ; Вызов подпрограммы

; идентификации нажатой клавиши

MOV KEYCODE,A ; Пересылка кода в ячейку ПД

RET

Идентификация (кодирование) нажатой клавиши может быть выполнена двумя способами:

  1. наложением маски;

  2. сдвигом исходного унитарного кода.

Рассмотрим пример подпрограммы идентификации с именем IDENTIF1 при использовании метода наложения масок.

IDENTIF1: CJNE A,#01H,M1 ; Переход на M1, если

; (A) ≠ 0000 0001

MOV A,#00H ; Код клавиши SA1

RET

M1: CJNE A,#02H,M2 ; Переход на М2, если

; (A) ≠ 0000 0010

MOV A,#01H ; Код клавиши SA2

RET

M2: CJNE A,#04H,M3 ; Переход на М3, если

; (A) ≠ 0000 0100

MOV A,#02H ; Код клавиши SA3

RET

M3: CJNE A,#08H,M4 ; Переход на М4, если

; (A) ≠ 00001000

MOV A,#03H ; Код клавиши SA4

RET

M4: MOV A,#0FH ; Нет нажатой клавиши

RET

В подпрограмме IDENTIF1 предусмотрен вариант, когда не будет нажата ни одна из клавиш SA1-SA4. В этом случае в ячейку хранения кода KEYCODE заносится число 0FH, которое не соответствует ни одному из возможных кодов клавиш. Это позволяет программе определить такую ситуацию.

Очевидно, что недостатком метода наложения масок для идентификации нажатой клавиши является громоздкость его программной реализации при большом количестве клавиш.

Более компактным является метод идентификации, основанный на сдвигах исходного унитарного кода, принятого от клавиатуры, и подсчета числа сдвигов на счетчике до появления первого переноса.

Рассмотрим программную реализацию метода сдвигов унитарного кода.

IDENTIF2: MOV R2,#0 ; Счетчик сдвигов

MOV R7,#4 ; Количество клавиш

SHIFT: RRC A ; Сдвиг инверсного кода вправо

JC M1 ; Переход на М1, если есть перенос

INC R2

DJNZ R7,SHIFT

MOV A,#0FH ; Нет нажатой клавиши

JMP EXIT

M1: MOV A,R2

EXIT: RET

Если в клавиатуре используются клавиши или кнопки с контактами без фиксации, то необходимы средства (программные или аппаратные) для опроса состояния клавиатуры, т.е. определения момента нажатия клавиши. При использовании программного метода МК должен вызывать подпрограмму опроса INPKEY периодически, обычно не менее 10 раз в секунду, чтобы не пропустить момент нажатия кнопки. Сделать это программно довольно трудно, поэтому этот метод обычно используется совместно со сканированием дисплея при динамическом его управлении. Аппаратный метод заключается в том, что при нажатии любой клавиши вырабатывается запрос прерывания. Микроконтроллер, получив этот запрос, переходит на подпрограмму обслуживания прерывания, которая вызывает подпрограмму опроса INPKEY.

26. Вывод и отображение информации для микроконтроллеров семейства MCS-51: подключение семисегментных индикаторов и линейных дисплеев, методы получения семисегментного кода, статический и динамический методы управления дисплеем.

В обслуживаемых МКС часто требуются средства для вывода и отображения различной информации. Если МКС требует только простейшей индикации типа Включено/Выключено или Да/Нет, то она обычно реализуется на основе отдельных светодиодов. Методы их подключения к портам МК и управления были рассмотрены в п. 24.

Для отображения цифровой и буквенной информации в МКС широко используются семисегментные индикаторы, которые бывают светодиодные, вакумно-люминесцентные, жидкокристаллические, вакуумно-накаливаемые, газоразрядные. Наибольшее распространение получили семисегментные светодиодные индикаторы (ССДИ) ввиду большой яркости, малым габаритам, способности работать в широком диапазоне температур, механической прочности. На рис.26.1,а показано расположение и обозначение сегментов ССДИ. Семь отображающих элементов позволяют высвечивать десятичные и шестнадцатиричные цифры, некоторые буквы латинского и русского алфавитов, а также некоторые специальные знаки. При формировании, например, цифры 3 будут подсвечиваться сегменты a, b, c, d и g, а сегменты e и f останутся темными. При формировании буквы F будут подсвечиваться сегменты a, e, f и g, а темными останутся сегменты b, c и d.

По способу соединения отдельных светодиодов в ССДИ различают индикаторы с общими катодами (ОК) и с общими анодами (ОА). Их схемы внутренних соединений показаны на рис. 26.1,б,в. На рис. 26.1,г приведено условное графическое отображение ССДИ.

Для засветки одного сегмента большинства типов ССДИ необходимо обеспечить протекание через сегмент тока 10-15 мА при напряжении 2,0-2,5 В. Низкая нагрузочная способность портов MCS-51 не допускает прямого соединения с ССДИ. Для усиления тока применяют буферные элементы – инверторы или повторители с открытым коллектором серии К155 или специальные микросхемы преобразователей кодов для ССДИ.

При формировании символов в ССДИ требуются специальные семисегментные коды, которые отличаются от обычных позиционных двоичных кодов, используемых в МК. Для получения семисегментных кодов могут быть применены два метода:

  1. аппаратурный;

  2. программный.

Аппаратурный метод основан на использовании специальных микросхем преобразователей кодов, которые преобразуют двоичный позиционный код в семисегментный. В качестве таких преобразователей наиболее широко применяются микросхемы К514ИД1 и К514ИД2, которые обычно называют дешифраторами кода. Микросхема К514ИД1 используется для индикаторов с ОК, а К514ИД2 – для индикаторов с ОА. Недостатком этих дешифраторов является то, что они позволяют получить только семисегментные коды десятичных цифр от 0 до 9. При этом на их входы должен подаваться двоично-десятичный код.

Рис. 26.1. Семисегментный светодиодный индикатор: а) - условное обозначение сегментов; б) – индикатор с общими катодами (ОК); в) – индикатор с общими анодами (ОА); г) - условное графическое обозначение на схемах

Программный метод получения семисегментного кода основан на том, что каждому сегменту индикатора поставлен в соответствие определенный бит D7, D6,…, D0 байта. Принято, что если этот бит равен 1, то сегмент светится. Определенные комбинации единичных значений битов формируют на индикаторе отображаемый символ, как это приведено в таблице.

Семисегментный код Отобра-

Бит данных – сегмент жаемый

символ

D7 - h

D6 –g

D5 –f

D4 –e

D3 –d

D2 – c

D1 -b

D0 -a

HEX

0

0

0

0

0

0

1

1

1

0

0

1

1

0

1

1

1

0

1

0

1

1

0

0

1

1

1

0

1

0

1

1

3F

06

5B

71

0

1

2

F

Таблица семисегментных кодов обычно хранится в памяти программ. Прочитать эти коды можно с помощью подпрограммы перекодировки, которую можно назвать CROSSCODE.

Текст подпрограммы следующий:

; CROSSCODE – подпрограмма получения семисегментного

; кода

; Входной параметр: регистр А – двоичный код символа

; Выходной параметр: регистр А – семисегментный код символа

CROSSCODE: MOV DPTR,#TABLE ; Загрузить в DPTR

; начальный адрес TABLE таблицы кодов

MOVC A,@A+DPTR ; Пересылка кода в акк-р

RET

; Таблица семисегментных кодов символов от 0 до F

TABLE: DB 3FH ; Код цифры “0”

DB 06H ; Код цифры “1”

…………………………….

DB 71H ; Код буквы “F”

Для отображения многосимвольной информации используются линейные (однострочные) дисплеи. Такие дисплеи представляют собой “линейку”, смонтированную из отдельных ССДИ. Число знакомест (позиций или разрядов) дисплея определяется в соответствии с требованиями к МКС.

Существует два способа организации МК с линейными дисплеями: статический и динамический (мультиплексный) [3].

Первый требует наличие на входах каждого индикатора специальных буферных регистров для хранения кодов выводимых символов. Естественно, что с увеличением разрядности дисплея возрастает число дополнительных микросхем, а, следовательно, и стоимости МКС.

Второй способ (динамический) основан на том, что любой световой индикатор является инерционным прибором, а человеческому глазу отображаемая на дисплее информация, если ее обновлять с частотой не менее 20 раз в секунду, представляется неизменной. Динамический способ вывода информации на дисплей требует значительно меньших аппаратных затрат, но более сложного программного обеспечения.

Статический метод управления дисплеем. На рис. 26.2 приведена схема подключения четырехразрядного дисплея на ССДИ при статическом управлении. В схеме используются ССДИ с общими анодами (ОА), например АЛС333Б. Дисплей предназначен для отображения только десятичных цифр, поэтому в качестве преобразователей двоичного позиционного кода в семисегментный используются дешифраторы КР514ИД2. Индикатор HG1 отображает младшую десятичную цифру, а HG4 – старшую.

Коды для индикаторов HG1 и HG2 образуются дешифраторами DD1 и DD2, входы которых подключаются к порту P0 микроконтроллера. Коды для индикаторов HG3 и HG4 образуются дешифраторами DD3 и DD4, которые подключаются к порту P2. Данные для вывода на индикаторы дисплея должны быть представлены в двоично-десятичном (BCD) коде. Обычно эти данные хранятся в ячейках памяти данных МК в упакованном формате. Размещение данных в массиве DATA может быть выполнено следующим образом:

Память данных

DATA+1

Цифра 4

Цифра 3

Данные для HG4 и HG3

DATA

Цифра 2

Цифра 1

Данные для HG2 и HG1


Обычно для вывода на индикаторы дисплея используется подпрограмма, которая вызывается из основной программы по мере необходимости обновления информации, отображаемой на дисплее. Подпрограмма может иметь следующий вид:

;DISPLAY – подпрограмма вывода на индикаторы HG1-HG4

;Входной параметр: DATA – начальный адрес ячеек ПД для вывода

DISPLAY: MOV R0,#DATA ; Загрузить указатель адреса

MOV P0,@R0 ; Вывод на индикаторы HG1 и HG2

INC R0 ; Следующий адрес

MOV P2,@R0 ; Вывод на индикаторы HG3 и HG4

RET

Подводя итоги, можно указать на следующие недостатки статического метода управления линейным дисплеем:

  1. сложность аппаратурной реализации: для каждого индикатора дисплея нужен отдельный буферный регистр для хранения кода выводимого символа;

  2. большой потребляемый ток от источника питания, так как одновременно светятся все индикаторы дисплея;

  3. большое число соединительных проводов: для каждого индикатора требуется 8 отдельных проводов.

Достоинством статического управления является простота программы для работы дисплея.

Практически статический метод управления используется только при небольшом числе индикаторов, обычно не более четырех.

Рис. 26.2. Схема подключения индикаторов при статическом управлении дисплеем

Динамический метод управления дисплеем. На рис. 26.3 приведена структурная схема четырехпозиционного дисплея с динамическим управлением. В схеме используются два порта МК: порт P0 и порт P2. Индикаторы HG1-HG4 дисплея – ССДИ с общими катодами (ОК). Порт P0 служит для возбуждения сегментов a, b,…, h каждого индикатора. В данном примере – это аноды светодиодов ССДИ. Порт P2 управляет ключами Кл1-Кл4, которые включены в цепь общих электродов (катодов светодиодов) индикаторов. Соответствующие линии сегментов всех индикаторов соединены параллельно, поэтому сигналы возбуждения для высвечивания символа одновременно поступают на все четыре индикатора. Символ индицируется только на том индикаторе, на общий электрод (катоды светодиодов) которого подан низкий уровень через ключ.

Управление процессом периодического переключения индикаторов дисплея называется сканированием дисплея. Это сканирование должно производиться с определенной частотой, при которой будет незаметно переключение индикаторов. Такая частота должна быть не менее 20 Гц [10]. Если обозначить частоту сканирования SCAN, то период сканирования TSCAN = 1 / ƒSCAN. Для одного индикатора и частоте ƒSCAN = 20 Гц минимальный период сканирования TSCAN = 50 мс.

Если же число индикаторов N, то период сканирования должен быть

TSCAN 50 / N, мс,

Для управления ключами индикаторов МК должен выдавать в порт P2 код сканирования, в котором будет только одна единица для включения соответствующего ключа и индикатора дисплея. Коды сканирования на выводах порта P2 имеют следующий вид:

00000001 - включен ключ Кл1, индикатор HG1 горит,

00000010 - включен ключ Кл2, индикатор HG2 горит,

00000100 - включен ключ Кл3, индикатор HG3 горит,

00001000 - включен ключ Кл4, индикатор HG4 горит,

00000001 - включен ключ Кл1, индикатор HG1 горит,

и т.д.

МК должен постоянно выполнять сканирование дисплея, т.е. устанавливать данные на сегменты и высвечивать информацию на каждом индикаторе. Если эта операция будет выполняться регулярно и с достаточной частотой, то визуально будет казаться, что все символы на дисплее светятся одновременно.

Динамический метод управления линейным дисплеем имеет следующие достоинства по сравнению со статическим:

  1. значительно меньшие аппаратные затраты;

  2. значительно меньший потребляемый ток;

  3. значительно меньшее количество соединительных проводов.

Недостатком динамического метода является сложность программного обеспечения по сравнению со статическим.

Рис. 26.3. Структурная схема четырехпозиционного линейного дисплея с динамической индикацией

27. Интегрированная среда разработки MPLAB IDE для PIC-микроконтроллеров, ее состав и характеристика. Ассемблер MPASM для PIC-контроллеров: назначение, структура полей предложений на языке Ассемблер, директивы Ассемблера.

MPLAB IDE – интегрированная среда разработки для PIC-микроконтроллеров фирмы Microchip Technology Incorporated, позволяющая писать, отлаживать и оптимизировать текст программы. MPLAB IDE имеет встроенные компоненты и сменные модули, позволяющие сконфигурировать среду с различными инструментальными средствами и программным обеспечение.

MPLAB IDE – интегрированная среда разработки для PIC-микроконтроллеров фирмы Microchip Technology Incorporated, позволяющая писать, отлаживать и оптимизировать текст программы. MPLAB IDE имеет встроенные компоненты и сменные модули, позволяющие сконфигурировать среду с различными инструментальными средствами и программным обеспечение.

Встроенные компоненты MPLAB IDE включают:

  • Менеджер проекта используется для создания и работы с файлами, относящимися к проекту. Выполняет интеграцию и взаимодействие между IDE и различными языковыми инструментальными средствами.

  • Редактор предназначен для написания исходного текста программы.

  • Ассемблер может использоваться автономно для трансляции единственного файла или может использоваться совместно с линкером (компоновщиком), чтобы скомпоновать проект из нескольких исходных и библиотечных файлов.

  • Линкер отвечает за то, чтобы позиционировать оттранслированный код программы в области памяти целевого микроконтроллера.

  • Отладчик позволяет устанавливать точки останова, выполнять программу в пошаговом режиме, следить за переменными, измерять время выполнения программы, а также имеет другие функции, характерные для современного отладчика. Он работает совместно с редактором, что позволяет использовать информацию, полученную при отладке для коррекции исходного текста программы.

  • Средства выполнения – это программные симуляторы (имитаторы), используемые в MPLAB IDE для всех типов PIC-микроконтроллеров. Эти симуляторы используют персональный компьютер для имитации работы процессорного ядра и периферийных модулей PIC-микроконтроллеров. Могут применяться также дополнительные внутрисхемные эмуляторы и внутрисхемные отладчики, что позволяет проверить работу программы непосредственно на аппаратном уровне.

MPASM – универсальная программа компиляции исходного текста программы на языке Ассемблер для микроконтроллеров PIC компании Microchip Technology Incorporated.

Исходный текст программы на языке Ассемблера состоит из последовательности предложений определенного формата. Каждое предложение представляет собой строку из четырех полей:

МЕТКА МНЕМОНИКА ОПЕРАНДЫ КОММЕНТАРИЙ

Поля могут отделяться друг от друга произвольным числом пробелов. Порядок и позиция полей важны. Так, метки должны начинаться в первой колонке строки. Мнемоника может начинаться во второй колонке или далее. Операнды идут за мнемоникой. Комментарий может следовать за операндами, мнемоникой или меткой, и даже начинаться в любой колонке, если в качестве первого символа используется точка с запятой (). Один или несколько пробелов должны отделять метку и мнемонику или мнемонику и операнды. Операнды должны отделяться запятой.

Хотя в языке Ассемблер символы, написанные заглавными и строчными буквами, транслируются одинаковыми кодами, современный стиль программирования рекомендует мнемокоды команд, директивы и метки записывать строчными буквами, а имена регистров специальных функций микроконтроллера и их отдельных битов – заглавными буквами.

Метки. В поле метки размещается символическое имя операнда или символический адрес ячейки памяти, на которую имеется ссылка в программе. Все метки должны начинаться в колонке 1. Метка представляет собой буквенно-цифровую комбинацию, начинающуюся с буквы. Используются только буквы латинского алфавита. Ассемблер допускает использование в метках символа подчеркивания (_). Длина метки может быть до 32 символов. Метки могут сопровождаться двоеточием (:), пробелом, табуляцией или концом строки. Примеры оформления меток

begin: movlw 0x0A

goto next

. . . . . . . .

begin movlw 0x0A

goto next

. . . . . . . .

begin

movlw 0x0A

goto next

В качестве символических имен и меток не могут быть использованы мнемокоды команд, директив и операторов Ассемблера, а также мнемонические обозначения регистров и других внутренних блоков МК.

Мнемоника команды. В данном поле записывается мнемоническое обозначение команды МК или директивы Ассемблера, которое является сокращением (аббревиатурой) полного английского наименования выполняемого действия. Если имеется метка на той же самой строке, то мнемоника команды или директивы Ассемблера должны отделяться от этой метки двоеточием, или одним и большим количеством пробелов.

Операнды команды. В этом поле помещаются операнды (или операнд), участвующие в операции. Операнды должны отделяться от мнемоники одним или более пробелов или меток табуляции. Списки операндов (операнды) должны отделяться запятыми.

Операнд может быть задан непосредственно или в виде его адреса (прямого или косвенного). Непосредственный операнд представляется числом или символическим именем.

Используемые в качестве операндов символические имена и метки должны быть определены, а числа представлены с указанием системы счисления. В таблице приведены примеры записи в различных системах счисления.

Система

Синтаксис

Пример

Десятичная

D’<цифры>’ или .<цифры>

D’100’ или .100

16-ричная

H’<цифры> или 0x<цифры>

H’9F’ или 0x9F

8-ричная

O’<цифры’

O’775’

Двоичная

B’<цифры>’

B’00111001’

Директивы Ассемблера. Ассемблирующая программа транслирует исходную программу в объектные коды. Хотя транслирующая программа берет на себя многое из рутинных задач программиста, такие как присвоение действительных адресов, преобразование чисел, присвоение действительных значений символьным переменным и т.п., программист все же должен указать ей некоторые параметры: начальный адрес рабочей программы, конец ассемблируемой программы, форматы данных и т.п. Всю эту информацию программист вставляет в исходный текст своей прикладной программы в виде директив Ассемблера, которые только управляют процессом трансляции и не преобразуются в коды объектной программы. Приведем описание некоторых часто используемых директив:

  1. Директива LIST устанавливает параметры компиляции исходного файла и генерации файла листинга. В директиве обязательно должен быть указан тип микропроцессора. Система счисления по умолчанию считается шестнадцатеричной. Пример:

LIST P=16F84A

  1. Директива #INCLUDE позволяет подключить дополнительный исходный файл. Эффект аналогичен копированию полного текста программы указанного файла в место расположения директивы.

  2. Директива #DEFINE определяет правила замены текста.

Например, запись

#DEFINE length 20

говорит о замене строки «length» в тексте программы при трансляции последовательностью символов «20».

  1. Директивой ___CONFIG производится установка битов конфигурации микроконтроллера в соответствии со значением операнда.

  2. Директивой EQU можно любому символическому имени, используемому в программе, поставить в соответствие определенный операнд.

Например, запись

TMR0 EQU 0x01

приводит к тому, что в процессе ассемблирования всюду, где встретится символическое имя TMR0, оно будет заменено числом 01h.

  1. Директива SET определяет константы и полностью аналогична директиве EQU за исключением того, что значение может быть впоследствии переопределено повторным использованием директивы SET.

  2. Директива ORG задает программе-ассемблеру адрес ячейки памяти, в которой должна быть расположена следующая за ней команда прикладной программы.

  3. Директивой END программист дает программе-ассемблеру указание об окончании трансляции.

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

Структура программы для MK PIC16 состоит из трех основных секций:

1) секция заголовка;

2) секция описания;

3) рабочая секция.

В секции заголовка обычно помещаются директивы Ассемблера, определяющие тип микропроцессора, имена подключаемых стандартных файлов и т.д.

В секции описания определяются логические имена для всех используемых в программе ресурсов: битовых и байтовых переменных, регистров пользователя.

Рабочая секция программы начинается с директивы ORG и адреса начала выполнения кода программы после сброса микроконтроллера (обычно 0x0000). Рабочая секция обязательно должна заканчиваться директивой END, означающей, что за ней отсутствуют исполняемые команды.

28. Программирование на Ассемблере для PIC-микроконтроллеров типовых процедур управления: управление светодиодом, опрос переключателя, формирование временных задержек. Примеры аппаратно-программной реализации.

Изучение основ программирования PIC удобно начинать с создания таких простейших программ на Ассемблере, как опрос состояния переключателя, управление светодиодом, создание временных задержек. Примеры программ будут рассмотрены на конкретном микроконтроллерном устройстве (МКУ).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]