Файл: Архитектура и основы программирования однокристальных микроконтроллеров.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 1051
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРА PIC16F84
Особенности программирования портов
Использование TMR0 с внешним сигналом
Сохранение состояния при прерываниях
Режим пониженного энергопотребления (SLEEP)
Защита программы от копирования
ОСНОВЫ ПРОГРАММИРОВАНИЯ PIC16F84 НА АССЕМБЛЕРЕ
Пример простейшей программы управления портами
АРХИТЕКТУРА И ОСНОВЫ ПРОГРАММИРОВАНИЯ ОДНОКРИСТАЛЬНЫХ МИКРОКОНТРОЛЛЕРОВ PIC16F84
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 состоит из двух частей: памяти программы и памяти данных. Память программы и память данных имеют раздельные шины, поэтому доступ к ним может происходить одновременно. Память данных делится на регистры общего назначения (ОЗУ) и
-
Организация памяти программы
Память программы
0004h 01FFh03FFhРис.1.4.Организация
памяти программ и стека
-
Организация памяти данных
- 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’
| Регистр STATUS | Адрес: 0Зh, 83h | Состояние по включению питания: 0001 1XXX |
| IRP | RP1 | RP0 | TO | PD | Z | DC | C |
| С | (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 0 : страница 2 (100h...17Fh)
Для PIC16F84 используется только бит RP0. Бит RP1 должен быть установлен в ‘0’ |
| IRP | Не используется | Не используется. Бит должен быть установлен в '0' |