Особенности архитектуры
Упрощенная структурная схема МК подгруппы PIC16F8X приведена на рис. 5.1.
Рис. 5.1. Структурная схема МК подгруппы PIC16F8X.
Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (гарвардская архитектура). Шина данных и память данных (ОЗУ) – имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл, исключая команды переходов.
Микроконтроллеры PIC16F83 и PIC16CR83 адресуют 512х14 памяти программ, а PIC16F84 и PIC16CR84 – 1Кх14 памяти программ. Вся память программ является внутренней.
Микроконтроллер может прямо или косвенно обращаться к регистрам или памяти данных. Все регистры специальных функций, включая счетчик команд, отображаются на память данных. Ортогональная (симметричная) система команд позволяет выполнять любую команду над любым регистром с использованием произвольного метода адресации. Ортогональная архитектура и отсутствие специальных исключений делает программирование МК группы PIC16F8X простым и эффективным.
Назначение выводов МК подгруппы PIC16F8X приведено в табл. 5.2.
OSC1/CLKIN | I | ТШ/КМОП1) | Вход кристалла генератора, RC-цепочки или вход внешнего тактового сигнала |
OSC2/CLKOUT | O | - | Выход кристалла генератора. В RC-режиме – выход 1/4 частоты OSC1 |
/MCLR | I/P | ТШ | Сигнал сброса/вход программирующего напряжения. Сброс низким уровнем. |
RA0 | I/O | ТТЛ |
PORTA – двунаправленный порт ввода/вывода RA4/T0CKI может быть выбран как тактовый вход таймера/счетчика TMR0. Выход с открытым стоком. |
RA1 | I/O | ТТЛ | |
RA2 | I/O | ТТЛ | |
RA3 | I/O | ТТЛ | |
RA4 | I/O | ТШ | |
/T0CKI | |||
RB0/INT | I/O | ТТЛ/ТШ2) | PORTB – двунаправленный порт ввода/вывода. Может быть запрограммирован в режиме внутренних активных нагрузок на линию питания по всем выводам. Вывод RB0/INT может быть выбран как внешний вход прерывания. Выводы RB4...RB7 могут быть программно настроены как входы прерывания по изменению состояния на любом из входов. При программировании МК RB6 используется как тактовый, а RB7 как вход/выход данных. |
RB1 | I/O | ТТЛ | |
RB2 | I/O | ТТЛ | |
RB3 | I/O | ТТЛ | |
RB4 | I/O | ТТЛ | |
RB5 | I/O | ТТЛ | |
RB6 | I/O | ТТЛ/ТШ3) | |
RB7 | I/O | ТТЛ/ТШ4) |
table class="xml_table" cellpadding="2" cellspacing="1"> Таблица 5.2. Назначение выводов МК подгруппы PIC16F8X (продолжение).
В зависимости от результата операции, АЛУ может изменять значения бит регистра STATUS: C (Carry), DC (Digit carry) и Z (Zero).