Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Справочник по среднему семейству микроконтроллеров PICmicro

.pdf
Скачиваний:
237
Добавлен:
01.05.2014
Размер:
13.35 Mб
Скачать

ООО "Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545

На рисунке 6-6 показана карта памяти данных некоторых 18-выводных микроконтроллеров. Чтение не реализованных регистров будет давать результат '0'.

Рис. 6-6 Карта памяти данных некоторых 18 - выводных микроконтроллеров

 

Адрес

 

Адрес

 

INDF

00h

INDF

80h

 

TMR0

01h

OPTION_REG

81h

 

PCL

02h

PCL

82h

 

STATUS

03h

STATUS

83h

 

FSR

04h

FSR

84h

 

PORTA

05h

TRISA

85h

 

PORTB

06h

TRISB

86h

6

 

07h

PCON

87h

ADCON0/

08h

ADCON1/

88h

 

EEDATA(2)

09h

EECON1(2)

89h

 

ADRES/

ADRES/

 

EEADR(2)

0Ah

EECON2(2)

8Ah

 

PCLATH

PCLATH

 

INTCON

0Bh

INTCON

8Bh

 

 

0Ch

 

8Ch

 

Регистры

 

Регистры

 

 

 

 

 

общего

 

общего

 

 

назначения

 

назначения

EFh

 

 

 

(3)

 

(4)

 

 

 

 

F0h

 

 

7Fh

 

FFh

 

 

 

 

Банк 0

 

Банк 1

 

 

Примечания:

1. Регистры, названия которых выделены жирным текстом, будут присутствовать в каждом микроконтроллере.

2.Эти регистры могут быть не реализованы или иметь другое назначение.

3.Не вся часть банка ОЗУ может быть реализована. Чтение по адресу несуществующего ОЗУ будет давать результат '0'.

4.Регистры памяти данных в банке 1 могут быть не реализованы. Обращение к не реализованным регистрам банка 1 вызовет действие с регистром банка 0.

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

6-11

Раздел 6. Организация памяти

DS33023A

 

 

6.3.4 Косвенная адресация, регистры INDF и FSR

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

На рисунке 6-7 показана операция косвенной адресации (запись значения в регистр памяти данных с адресом, указанном в регистре FSR).

Для выполнения косвенной адресации необходимо обратиться к регистру INDF. Обращение к регистру INDF фактически вызовет действие с регистром, адрес которого указан в FSR. Косвенное чтение регистра INDF (FSR=0) даст результат 00h. Косвенная запись в регистр INDF не вызовет никаких действий (вызывает воздействия на флаги АЛУ в регистре STATUS). 9-й бит косвенного адреса IRP сохраняется в регистре STATUS<7>. Пример 9-разрядной косвенной адресации показан на рисунке 6-8.

Рис. 6-7 Косвенная адресация

Рис. 6-8 Механизм косвенной адресации

6-12

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

ООО"Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545

Впримере 6-2 показано использование косвенной адресации для очистки памяти данных (адреса 20h – 2Fh) минимальным числом команд микроконтроллера. Подобный метод может использоваться для передачи блока данных в регистр TXREG передатчика USART. Начальный адрес блока данных, подготовленного для передачи, может быть легко изменен в соответствии с требованиями программы.

Пример 6-2 Очистка регистров памяти данных с адреса 20h по 2Fh

BCF

STATUS, IRP

; Установить банк 0,1

 

MOVLW

0x20

; Указать первый регистр в ОЗУ

 

MOVWF

FSR

 

 

NEXT:

 

; Очистить регистр

 

CLRF

INDF

 

INCF

FSR,F

; Увеличить адрес

 

6

BTFSS

FSR,4

; Завершить?

GOTO

NEXT

; Нет, продолжить очистку

 

 

CONTINUE:

; Да

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

6-13

Раздел 6. Организация памяти

DS33023A

 

 

6.4Инициализация

Впримере 6-3 показано переключение между банками памяти данных для прямой адресации, а в примере 6-4 представлен код программы, выполняющей инициализацию (очистку) регистров общего назначения.

Пример 6-3 Переключение банков памяти данных

; Очистка регистра STATUS (Банк 0)

CLRF

STATUS

:

 

; Банк 1

BSF

STATUS, RP0

:

 

; Банк 0

BCF

STATUS, RP0

:

 

; Установить RP0 и RP1 в STATUS регистре

MOVLW 0x60

XORWF STATUS, F

; (Банк 3)

:

 

; Банк 2

BCF

STATUS, RP0

:

 

; Банк 0

BCF

STATUS, RP1

Пример 6-4 Инициализация регистров общего назначения

CLRF

STATUS

; Очистить регистр STATUS (Банк 0)

MOVLW

0x20

; 1-й адрес регистра GPR

MOVWF

FSR

; записать в регистр косвенного адреса

Bank0_LP

 

; Очистить регистр GPR с адресом в регистре FSR

CLRF

INDF0

INCF

FSR

; Следующий регистр GPR

BTFSS

FSR, 7

; Очистка регистров GPR в этом банке завершена?

 

 

; (FSR = 80h, C = 0)

GOTO

Bank0_LP

; НЕТ, продолжать очистку

 

 

;

 

 

; Следующий банк (Банк 1)

 

 

; (** Только для микроконтроллеров с банком 1 **)

 

 

;

MOVLW

0xA0

; 1-й адрес регистра GPR

MOVWF

FSR

; записать в регистр косвенного адреса

Bank1_LP

 

; Очистить регистр GPR с адресом в регистре FSR

CLRF

INDF0

INCF

FSR

; Следующий регистр GPR

BTFSS

STATUS, C

; Очистка регистров GPR в этом банке завершена?

 

 

; (FSR = 00h, C = 1)

GOTO

Bank1_LP

; НЕТ, продолжать очистку

 

 

;

 

 

; Следующий банк (Банк 2)

 

 

; (** Только для микроконтроллеров с банком 2 **)

 

 

;

BSF

STATUS, IRP

; Выбор банков 2 и 3 для косвенной адресации

MOVLW

0x20

; 1-й адрес регистра GPR

MOVWF

FSR

; записать в регистр косвенного адреса

Bank2_LP

 

; Очистить регистр GPR с адресом в регистре FSR

CLRF

INDF0

INCF

FSR

; Следующий регистр GPR

BTFSS

FSR, 7

; Очистка регистров GPR в этом банке завершена?

 

 

; (FSR = 80h, C = 0)

GOTO

Bank2_LP

; НЕТ, продолжать очистку

 

 

;

 

 

; Следующий банк (Банк 3)

 

 

; (** Только для микроконтроллеров с банком 3 **)

 

 

;

MOVLW

0xA0

; 1-й адрес регистра GPR

MOVWF

FSR

; записать в регистр косвенного адреса

Bank3_LP

 

; Очистить регистр GPR с адресом в регистре FSR

CLRF

INDF0

INCF

FSR

; Следующий регистр GPR

BTFSS

STATUS, C

; Очистка регистров GPR в этом банке завершена?

 

 

; (FSR = 00h, C = 1)

GOTO

Bank3_LP

; НЕТ, продолжать очистку

:

 

; ДА, все регистры GPR очищены

6-14

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

ООО"Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545

6.5Ответы на часто задаваемые вопросы

Если вы не найдете ответа на Ваш вопрос в этой главе раздела, задайте его, написав нам письмо по адресу support@microchip.ru.

Вопрос 1: Выполнение программы прекращается, что может быть причиной?

Ответ 1:

Если микроконтроллер содержит более 2кслов памяти программ, то возможно, что перед переходом на подпрограмму по команде CALL (или безусловному переходу GOTO) необходимо настроить регистр PCLATH для выбора нужной страницы памяти. В примере показана последовательность команд загрузки регистра PCLATH вне зависимости от расположения метки SUB_1 в памяти программ.

 

MOVLW

HIGH (SUB_1)

; Выбор страницы памяти программ,

6

 

MOVWF

PCLATH

; в которой размещается подпрограмма

 

 

CALL

SUB_1

; Переход на подпрограмму

 

 

:

 

 

 

 

:

 

; Начало подпрограммы

 

SUB_1

:

 

 

 

:

 

 

 

Вопрос 2: Мне необходимо записать во все регистры общего назначения 00h. Как наиболее просто это сделать?

Ответ 2:

Смотрите пример 6-4 этого раздела. Если в микроконтроллере не реализованы все 4 банка памяти данных, то часть кода может быть удалена.

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

6-15

Раздел 6. Организация памяти

DS33023A

 

 

6.6 Дополнительная литература

Дополнительная литература и примеры применения, связанные с этим разделом документации. Примеры применения не могут использоваться для всех микроконтроллеров среднего семейства (PIC16CXXX). Как правило примеры применения написаны для конкретной группы микроконтроллеров, но принципы примеров могут использоваться, сделав незначительные изменения (с учетом существующих ограничений).

Документы, связанные с организацией памяти в микроконтроллерах PICmicro MCU:

 

Документ

Номер

Implementing a Table Read

AN556

Выполнение табличного чтения

 

6-16

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

 

ООО "Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545

 

 

 

 

 

 

 

 

Раздел 7.EEPROM память данных

 

 

 

Содержание

 

 

 

7.1

Введение ........................................................................................................................................................

7-2

 

 

7.2

Управляющий регистр...................................................................................................................................

7-3

 

 

7.3

Регистр EEADR ..............................................................................................................................................

7-4

 

 

7.4

Регистры EECON1, EECON2 ........................................................................................................................

7-4

 

 

7.5

Чтение из EEPROM памяти данных.............................................................................................................

7-5

 

 

7.6

Запись в EEPROM память данных...............................................................................................................

7-5

 

 

7.7

Проверка записи

7-6

 

 

 

7

7.8

Защита от случайной записи в EEPROM память данных..........................................................................

7-6

 

7.9

Операции с EEPROM памятью при установленном бите защиты............................................................

7-6

 

 

 

 

7.10 Инициализация ............................................................................................................................................

7-6

 

 

7.11 Ответы на часто задаваемые вопросы .....................................................................................................

7-7

 

 

7.12 Дополнительная литература ......................................................................................................................

7-8

 

 

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

7-1

Раздел 7. EEPROM память данных

DS33023A

 

 

7.1 Введение

EEPROM память данных доступна для записи/чтения в нормальном режиме работы микроконтроллера во всем диапазоне рабочего напряжения питания (VDD). EEPROM память не отображается на адресное пространство памяти данных, а доступна через регистры специального назначения. Для доступа к EEPROM памяти данных используются

4регистра специального назначения:

EECON1

EECON2 (не физический регистр)

EEDATA

EEADR

Врегистре EEDATA сохраняются 8-разрядные данные записи/чтения, а регистр EEADR содержит адрес ячейки EEPROM памяти данных. С помощью 8 - разрядного регистра EEADR можно адресовать 256 байт EEPROM памяти данных. EEADR можно рассматривать как регистр косвенной адресации для ячеек EEPROM памяти. Регистр EECON1 содержит биты управления чтением/записью EEPROM памяти данных, а не физический регистр EECON2 предназначен для защиты от случайной записи в EEPROM память данных.

Внекоторых микроконтроллерах реализовано вся возможная EEPORM память данных. Область реализованной EEPROM памяти данных всегда начинается с адреса 00h. В таблице 7-1 показаны возможные объемы EEPROM памяти данных и адреса реализованных ячеек.

Таблица 7-1 Объем EEPROM памяти данных

Объем EEPROM памяти

Адреса реализованных

данных (байт)(1)

ячеек

 

 

64

00h - 3Fh

128

00h - 7Fh

256

00h - FFh

Примечание 1. В выпускаемых микроконтроллерах среднего семейства минимальный объем EEPROM памяти данных 64 байта.

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

При установке защиты на доступ к EEPROM памяти данных, программа микроконтроллера имеет возможность выполнить запись/чтение EEPROM памяти данных. Доступ закрыт для записи/чтения программатором.

7-2

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

ООО "Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545

7.2 Управляющий регистр

Регистр EECON1

U-0

U-0

 

U-0

R/W-0

R/W-x

R/W-0

R/S-0

R/S-x

 

 

 

-

-

 

-

EEIF(1)

WRERR

WREN

WR

RD

 

 

 

R – чтение бита

 

Бит 7

 

 

 

 

 

 

 

Бит 0

 

 

 

W – запись бита

 

 

 

 

 

 

 

 

 

 

 

 

 

 

U – не реализовано,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

читается как 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

–n – значение после POR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

–x – неизвестное

 

 

 

 

 

 

 

 

 

 

 

 

 

 

значение после POR

 

биты 7-5: Не используются: читаются как ‘0’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

бит 4: EEIF: Флаг прерывания по окончанию записи в EEPROM данных

 

 

 

 

 

 

 

 

 

 

1 = запись в EEPROM данных завершена (сбрасывается программно)

 

 

 

 

 

0 = запись в EEPROM данных не завершена или не была начата

 

 

 

бит 3: WRERR: Флаг ошибки записи в EEPROM память данных

1 = запись прервана (произошел один из сбросов: по сигналу -MCLR, по переполнению WDT в нормальном режиме, по снижению напряжения питания BOR)

0 = запись завершена

бит 2: WREN: Разрешение записи в EEPROM память данных 1 = запись разрешена 0 = запись запрещена

бит 1: WR: Инициализировать запись в EEPROM память данных (программно может быть только установлен в ‘1’)

1 = инициализировать запись (сбрасывается в ‘0’ аппаратно) 0 = запись завершена

бит 0: RD: Инициализировать чтение из EEPROM памяти данных (программно может быть только установлен в ‘1’)

1 = инициализировать чтение (сбрасывается в ‘0’ аппаратно) 0 = чтение завершено

Примечание 1. В некоторых микроконтроллерах этот бит находится в регистре PIR.

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке

7-3

Раздел 7. EEPROM память данных

DS33023A

 

 

7.3Регистр EEADR

Спомощью регистра EEADR можно адресовать 256 байт EEPROM памяти данных. Старший биты регистра EEADR тоже участвует в декодировании адреса, поэтому всегда должен равняться нулю (для гарантированной адресации памяти).

7.4Регистры EECON1, EECON2

Регистр EECON1 содержит 5 (младших) физически реализованных управляющих битов. Три старших бита не реализованы и читаются как ‘0’.

Управляющие биты RD и WR инициализируют соответственно чтение и запись данных. Программно эти биты могут быть только установленны в ‘1’, сброс в ‘0’ происходит аппаратно по завершению операции чтения/записи. Защита от программного сброса этих битов позволяет предотвратить преждевременное завершение операции записи.

Если бит WREN=1, то разрешена запись в EEPROM память данных. После сброса по включению питания (POR) бит WREN равен ‘0’. Бит WRERR устанавливается в ‘1’, если во время выполнения записи в EEPROM память данных произошел сброс по сигналу -MCLR или по переполнению сторожевого таймера WDT в нормальном режиме. Проверив состояние бита WREER, пользователь может повторить запись (регистры EEDATA и EEADR не изменяют своего значения).

После завершения записи в EEPROM память данных устанавливается флаг EEIF в ‘1’ (сбрасывается программно).

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

7-4

WWW.MICROCHIP.RU – поставки и техподдержка на русском языке