Обучение : Программирование на Ассемблере для PIC


Конфигурирование МК. Директива __CONFIG

Конфигурирование МК рассмотрим на примере PIC16F84A. Для других типов МК принцип конфигурирования такой же.

Под конфигурированием МК понимается установка битов конфигурации в регистре по адресу H2007. Это необычный регистр – у него не 8 бит, а 14.

Рабочие биты с 0-го по 4-й, не рабочие – с 5-го по 13-й. Не рабочие биты читаются (и записываются) как единица.

 

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Не задействованы (читаются как 1)

CP

-PWRTE

WDTE

FOSC1

FOSC0

1

1

1

1

1

1

1

1

1

0/1

0/1

0/1

0/1

0/1

 


Описание конфигурационных битов.

 

Бит 4 CP

бит защиты памяти программ

1 – защита выключена

0 – защита включена

Бит 3 PWRTE

бит разрешения работы таймера включения питания PWRT

0 – будет производиться выдержка при включении питания

1 – выдержки производиться не будет

Бит 2 WDTE

бит разрешения работы сторожевого таймера WDT

1 – WDT включен

0 – WDT выключен

Бит 1-0   FOSC1-FOSC0

биты выбора типа генератора

 

 
 

Описание комбинаций битов выбора генератора. 

00

LP – генератор

НЧ генератор для экономичных приложений

01

XT – генератор

Стандартный кварцевый генератор

10

HS – генератор

ВЧ кварцевый генератор

11

RC – генератор

RC генератор с внешней RC цепью


Кратко опишем суть рабочих битов.


Бит защиты памяти программ CP
. Используя программатор мы записываем программу в МК. С помощью программатора можно прочитать записанную программу и продублировать её на другом МК. Если установлен бит защиты, то прочитать записанную программу невозможно (защита от копирования). В примерах бит защиты отключен.


Бит разрешения работы таймера включения питания –PWRTE
. После включения МК требуется некоторое время для стабилизации частоты кварцевого генератора и стабилизации напряжения. С помощью таймера включения осуществляется задержка на время 72мс (типовое время). В примерах таймер включен.


Бит разрешения работы сторожевого таймера WDT
. Суть работы сторожевого таймера заключается в периодическом сбросе МК, после чего МК начинает выполнение программы с начала. Используется в тех случаях, когда к устройству на МК предъявляются высокие требования к отказоустойчивости. Используя сторожевой таймер, в текст программы периодически необходимо вставлять команду CLRWDT – сброс сторожевого таймера. Сторожевой таймер имеет дополнительные настройки связанные с интервалами между сбросами. В примерах сторожевой таймер отключен.


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

 

Как для директивы __CONFIG определить число конфигурации?

 

Сначала записываем бинарное число в соответствии с нашими настройками:

111111111 – неиспользуемые девять бит в состоянии 1;

1 – защита выключена;

0 – выдержка при включении;

0 – сторожевой таймер отключен;

01 – стандартный кварцевый генератор.
 

Получается число 11111111110001 которое либо в конвертере BinHexDec, либо в стандартном калькуляторе переводим в 16-тиричное – h3FF1. Число, полученное таким образом, указывается после директивы __CONFIG.

 

Шестнадцатеричное число конфигурации можно определить иначе, без использования конвертера или калькулятора. Открываем в MPLAB меню Configure -> Configuration BitsЗдесь мы можем выбрать для проекта значения опций конфигурирования МК.
 


Число в колонке "Value" является искомым числом.

 

В этом разделе мы также рассмотрим конфигурирование МК путем использования битов конфигурации в явном виде. Биты конфигурации как и регистры специального назначения описаны в файле с расширением *.INC (путь – C:_Program Files_Microchip_MPASM Suite), например, в файле P16F84A.INC .  Файл *.INC  является обычным текстовым файлом, который можно посмотреть с помощью стандартного текстового редактора "Блокнот" из Windows.


Итак, после строчки с записью LIST P=PIC16F84A необходимо записать две строчки следующего вида
 

            #include    P16F84A.INC

            __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF


С помощью #include мы прописываем файл P16F84A.INC с описаниями регистров и битов (с сопоставлениями). Этот файл должен находиться либо в папке MPASM Suite, либо в папке с проектом.


После директивы __CONFIG идёт перечисление соответствующих битов конфигурации. Расшифровку сокращенных наименования битов конфигурации предлагаем вам разобрать самостоятельно.

 

Какой вариант конфигурирования использовать – это дело личных предпочтений. Мне нравится "короткая" запись типа __CONFIG H3FF1. Длинная запись более наглядна, но требует наличия и прописывания файла типа *.INC. С другой стороны, с прописанным файлом *.INC в шапке программы не требуется сопоставлять регистры специального назначения. В наших дальнейших примерах мы не будем прописывать файл *.INC . Мы будем использовать "короткую" запись для конфигурирования МК и будем  вручную сопоставлять регистры специального назначения с тем, чтобы вы обращались к первоисточникам и привыкали к наименованиям регистров специального назначения.


<<< назад далее >>>

Просмотров: 50727

 








 
 
 

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