Файл: Архитектура и основы программирования однокристальных микроконтроллеров.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.11.2023

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

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Q1 Q2

OSC1

Q3 Q4

Q1 Q2

Q3 Q4

Q1 Q2

Q3 Q4

Q1

Q2

Q3

Q4


PC+2

PC+1

PC

Выборка INST (PC)

PC OSC2






В режиме

RC-генератор
Внутренние тактовые частоты




Рис. 1.3. Временные диаграммы тактирования и выполнения команд

Цикл выполнения команды состоит из четырех тактов: Q1...Q4. Выборка команды и ее выполнение совмещены по времени таким образом, что выборка команды занимает один цикл, а выполнение - следующий цикл. Эффективное время выполнения команды составляет один цикл. Если команда изменяет счетчик команд (например команда CALL), то для выполнения этой команды потребуется два цикла. Цикл выборки начинается с увеличения счетчика команд в такте Q1. В цикле выполнения команды выбранная команда защелкивается в регистр команд в такте Q1. В течение тактов Q2, Q3 и Q4 происходит декодирование и выполнение команды. В такте Q2 считывается память данных (чтение операнда), а запись происходит в такте Q4.


Организация памяти




Внутренняя память в микроконтроллере РIС16F84 состоит из двух частей: памяти программы и памяти данных. Память программы и память данных имеют раздельные шины, поэтому доступ к ним может происходить одновременно. Память данных делится на регистры общего назначения (ОЗУ) и
специальные регистры. Память данных РIС16F84 также содержит электрическиперепрограммируемое ПЗУ (ЭППЗУ) данных. Эта память доступна косвеннымобразом через регистры EEADR, EEDATA, EECON1, EECON2. ЭППЗУ имеетобъем64байтаи адреса00...3Fh.
      1. Организация памяти программы

МикроконтроллерРIС16F84имеет13-разрядныйсчетчиккоманд,способныйадресоватьдо8Кх14словпамятипрограммы.ВPIC16F84присутствуюттолькопервые1Кх14(0000-03FFh)словпамятипрограммы,остальныеадресазарезервированыдлябудущихмодификаций.Присбросепроцессорзапускаетсясадреса0000h,векторпрерываниярасположенпоадресу0004h.Организация памяти программыистекапоказананарис.1.4.PC<12:0>CALL,RETURN 13RETFIE,RETLW …Стек уровня 1 Стекуровня8000h
Память программы
0004h 01FFh03FFhРис.1.4.Организация

памяти программ и стека

      1. Организация памяти данных

Память данных разделяется на две области. Первая представляет собойрегистры специальных функций, вторая - регистры общего назначения (ОЗУ).Специальныерегистрывключаютвсебярегистртаймера/счетчика(TMR0),счетчик команд (PC), регистр состояния (STATUS), регистры ввода/ вывода(PORTА и PORTB), регистр косвенной адресации (FSR) и регистры управлениявстроеннымэлектрическиперепрограммируемымПЗУ(EEADR,EEDATA,EECON1,EECON2).Крометого,специальныерегистрыTRISAиTRISBуправляютконфигурациейпортовввода-вывода,аOPTION―режимамиработыпредварительногоделителя.Регистры общего назначения используются для хранения переменных поусмотрениюпользователя.Доступкчастирегистровспециальныхфункций,управляющихпериферийными устройствами, осуществляется через механизм выбора банков.Биты,управляющиепереключением банков, находятся врегистреSTATUS.Нарис.1.5приведенаорганизацияпамятиданныхРIС16F84.Всерегистрымогутбытьадресованыпрямоиликосвенно,сиспользованиемрегистракосвеннойадресацииFSR.Непосредственнаяадресацияподдерживаетсяспециальнымикомандами,загружающимиданныеизпамятипрограммыв рабочийрегистрW.
    1. 1   2   3   4   5   6   7   8   9   ...   27

Регистр состояния STATUS

РегистрсостояниясодержитфлагисостоянияАЛУ,состоянияконтроллераприсбросеибитывыборастраницпамятиданных.РегистрSTATUS доступен для любой команды так же, как и любой другой регистр.ОднакобитыTO иPDустанавливаютсяаппаратноинемогутбытьизмененыпрограммно.Этоследуетиметьввидупривыполнениикомандсиспользованиемрегистрасостояния.Например,командаCLRFSTATUSобнулитвсебиты,кромебитTO иPD ,азатемустановитбитZ=1.Послевыполненияэтойкомандырегистрсостояниябудетиметьзначение000uu100( TO иPDнеизменились).Поэтомурекомендуетсядляизменениярегистрасостояния использовать только команды битовой установки BCF, BSF, а такжеMOVWFиSWAPF,которыедополнительнонеменяютбитырегистрасостояния.

Регистры

00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch


2Fh 30h

80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch



Косвенный адрес (*)

Косвенный адрес (*)

TMR0

OPTION

PCL

PCL

STATUS

STATUS

FSR

FSR

PORTA

TRISA

PORTB

TRISB







EEDATA

EECON1

EEADR

EECON2(*)

PCLATH

PCLATH

INTCON

INTCON





68 регистров общего назначения (ОЗУ)





Отображаются на банк 0















AFh B0h


4Fh
Банк 0
Банк 1

CFh




Рис. 1.5. Организация памяти данных:

(*) не физический регистр; отсутствует, считывается как ‘0’
Биты IRP и RP1 (STATUS<7:6>) не используются в РIС16F84 и должныбыть программно установлены в '0'. Использование этих бит в качестве битобщегоназначениянерекомендуется.БитыСиDCпривычитаниифункционируюткакбитызаёмаидесятичногозаёмасоответственно.Подробноеописаниеразрядоврегистраприведено втабл.1.2.Таблица 1.2

Регистр STATUS

Адрес: 0Зh, 83h

Состояние по включению питания: 0001 1XXX
R/W R/W R/W R R R/W R/W R/W

IRP

RP1

RP0


TO


PD

Z

DC

C
бит7 бит0



С



(Carry /Borrow)

Перенос/Заем

Бит является флагом переноса для команд сложения ADDWF, ADDLW и инверсным флагом заема для команд вычитания SUBWF, SUBLW. Бит устанавливается в ‘1’ в командах сложения ADDWF и ADDLW, если в результате операции из старшего разряда произошел перенос (результат больше 0FFh).

При выполнении команд сдвига RRF, RLF бит загружается из младшего или старшего бита сдвигаемого регистра соответственно. Вычитание осуществляется путем прибавления дополнительного кода второго операнда. Бит устанавливается в ‘1’ в командах вычитания SUBWF и SUBLW, если при вычитании не

произошло заема (результат больше или равен 0)

DC

(Digit carry/Borrow) Десятичный

перенос/ Заем

Бит устанавливается в ‘1’ в командах ADDWF и ADDLW, если произошел перенос из бита 3 результата. Бит устанавливается в ‘1’ в командах вычитания SUBWF и SUBLW, если при вычитании не

произошло заема из бита 4

Z

(Zero)

Ноль

Бит устанавливается в ‘1’, если результат арифметической или логической операции равен нулю

PD

(Power down)

Выключение питания

Бит устанавливается в ‘1’ по включению питания или по команде CLRWDT. Бит сбрасывается в '0' по команде SLEEP

TO

(Time-out)

Тайм-аут

Бит устанавливается в ‘1’ по включению питания, а также командами CLRWDT и SLEEP. Бит сбрасывается в ‘0’ по срабатыванию сторожевого таймера.



RPO RP1

(Register Bank Select)

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

Биты RP0, RP1 выбирают одну из четырех страниц памяти данных: RP1 RPO :

0 0 : страница 0 (000h...07Fh)

  1. 1 : страница 1 (080n...0FFh)

1 0 : страница 2 (100h...17Fh)

  1. 1 : страница 3 (180h...1FFh)

Для PIC16F84 используется только бит RP0. Бит RP1 должен быть установлен в ‘0’

IRP

Не используется

Не используется. Бит должен быть установлен в '0'