Пока микроконтроллер находится в режиме программирования, программатор имеет доступ к памяти программ и может загружать в нее код программы. Кроме того, программатор может обращаться к некоторым «секретным» участкам памяти программ (
Различные биты этого слова (
• Биты FOSC1:() определяют режим работы тактового генератора (Табл. 10.2).
• Бит WDTE используется для включения и выключения сторожевого таймера, показанного на Рис. 13.1 (стр. 451).
• Бит
• Биты СР предназначены для
Более новые модели семейства имеют дополнительные опции. Например, в микроконтроллере PIC16F87X, формат слова конфигурации которого показан на Рис. 10.6, в, можно защищать всю память программ, первую половину или вообще только 256 первых ячеек. Также в этих моделях имеются следующие опции:
• Бит BODEN, установленный в 1, разрешает работу схемы сброса по снижению напряжения питания (Brown-Out Reset — BOR). Эта схема позволяет перезапускать микроконтроллер при провалах напряжения питания ниже заданного уровня, как показано на Рис. 10.11.
• Установка бита LVP в 1 позволяет использовать режим низковольтного программирования.
• Бит CPD позволяет защитить содержимое EEPROM-памяти данных (см. главу 15).
• В этих моделях имеется возможность изменения содержимого незащищенных областей памяти программ непосредственно из самой программы, как показано на Рис. 15.4 (стр. 551). Сброс бита WRT запрещает это.
• В данных моделях имеется специальный режим отладки, который отключается при установке бита DEBUG в 1.
Рис. 10.7.
Программное обеспечение большинства программаторов позволяет пользователю «вручную» задать значение требуемых битов слова конфигурации (как, скажем, на Рис. 10.7) перед собственно записью программы в память микроконтроллера. Однако наилучшим решением будет указание требуемого значения слова конфигурации непосредственно в программе для автоматического задания конфигурации микроконтроллера при его программировании. В качестве примера возьмем микроконтроллер PIC16F87X, который должен иметь следующую конфигурацию:
Режим генератора — XT
Биты 1:0 = 01
Сторожевой таймер — выключен
Бит 2 = 0
Таймер включения питания — включен
Бит 3 = 0
Защита памяти программ — отключена
Биты 5:4 и 13:12= 11
Схема сброса по снижению питания — включена
Бит 6 = 1
Низковольтное программирование — запрещено
Бит 7 = 0
Тогда наличие в исходном ассемблерном файле директивы
__config b’11111101110001’; или h’3F71’
приведет к формированию следующего машинного кода:
:02 400Е 00 713F 00
(формат этой строки[135] был описан на стр. 250). При программировании микроконтроллера требуемое значение будет записано в ячейку с адресом h’2007’. По умолчанию все биты слова конфигурации установлены в 1, поэтому без указания этой директивы микроконтроллер PIC16F87X будет иметь следующую конфигурацию:
• Используется тактовый генератор с внешней RС-цепочкой.
• Защита кода отсутствует.
• Работа таймера включения питания, сторожевого таймера, а также схемы сброса по напряжению питания разрешена.
• Низковольтное программирование и запись в память программ разрешены.