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

Методическое пособие 491

.pdf
Скачиваний:
3
Добавлен:
30.04.2022
Размер:
1.84 Mб
Скачать

Программный симулятор MPLAB-SIM позволяет продемонстрировать работу программы микроконтроллера PIC 16/17

на уровне команд. При выполнении любой команды пользователь может проверить или изменить данные, а также подать внешний сигнал на любой вывод. Используемое основание системы счисления может быть установлено пользователем. MPLAB-SIM поддерживает символьную отладку кодов, полученную с помощью программ-

трансляторов MPLAB-C или MPASM.

Проект можно откомпилировать непосредственно в среде

MPLAB. Для этого служит команда меню Project ► Make (клавиша

<F10>). Окно состояния компилятора откроется на период компиля-

ции, а затем исчезнет. В результате компиляции в той же папке, что и исходный файл, будет создано несколько файлов. Один из них - с

расширением.cod - необходим для эмуляции и отладки в среде

MPLAB. Теперь по завершению компиляции эмулятор MPLAB будет автоматически загружать файл . cod, созданный компилятором.

3.1.3.1. Настройка режима отладки/эмуляции

Микроконтроллер для программной эмуляции выбирается на этапе создания проекта MPLAB, но этот выбор можно изменить позже, выполнив команду меню Configure ► Select Device и указав требуемое значение в поле Device диалогового окна Select Device (рис. 6).

Для перевода MPLAB в режим программной эмуляции, необхо-

димо выполнить команду меню Debugger ► Select Tool ► MPLAB SIM. В результате отобразится панель инструментов Debug с кнопка-

ми, используемыми для отладки.

Для настройки параметров эмуляции следует выполнить коман-

ду меню Debugger ► Settings. В открывшемся диалоговом окне Simu-

9

lator Settings особый интерес представляют вкладки Osc/Trace и Animation/Realtime Updates (рис. 7).

Рис. 6. Выбор микроконтроллера для программной эмуляции

Рис. 7. Параметры эмуляции

Нa вкладке Osc/Trace можно выбрать частоту тактового осцил-

лятора на вкладке Animation/Realtime Updates задать период анима-

ционного прохода (выполнение программы с обновлением окон от-

ладчика через строго определенные промежутки времени) и период обновления окон при выполнении в реальном режиме времени. Если

10

требуется, чтобы обновления окон отладчика происходили таким об-

разом, чтобы отражать информацию реалистично, значения этих пе-

риодов не следует выбирать большими.

Если не установить флажок Enable Realtime watch updates, то при запуске программы в режиме реального времени окна отладчика вообще не будут обновляться. Кроме того, при эмуляции программ в среде MPLAB следует учитывать, что задержки при работе с реаль-

ным микроконтроллером намного меньше.

С помощью параметров, расположенных в диалоговом окне

Simulator Settings на вкладке Break Options, можно управлять мо-

ментами останова эмуляции, включая останов по сигналу от стороже-

вого таймера (WDT) и останов по переполнению стека.

3.1.3.2. Работа в режиме отладки/эмуляции

Команды, используемые в режиме отладки, находятся в меню

Debugger. В MPLAB используются точки прерывания, обозначаемые красным кружком с символом "В" слева от строки исходного кода, в

которых они установлены. Для установки/удаления точки прерыва-

ния следует дважды щелкнуть мышью на сером поле слева от сроки или выполнить команду контекстного меню Set Breakpoint.

Для отключения/активизации и удаления точек прерывания ис-

пользуется диалоговое окно Breakpoints, которое открывается по ко-

манде меню Debugger ► Breakpoints (клавиша <F2>), а также ко-

манды Disable Breakpoint (отключение), Enable Breakpoint (активи-

зация) и Remove Breakpoint (удаление) контекстного меню. Для от-

ключения, активизации или удаления всех расставленных точек пре-

рывания можно воспользоваться тем же диалоговым окном Breakpoints или командами подменю Breakpoints контекстного меню.

Для перехода в режим отладки используются команды меню

11

Debugger:

Run (клавиша <F9>) — выполнение программы в ре-

жиме реального времени; переход в режим отладки происходит,

если встречается точка прерывания.

Animate — выполнение программы с периодическим обновлением окон отладчика.

Step Into (клавиша <F7>) — выполняет текущую ко-

манду с заходом в подпрограммы (все окна обновляются). При каждом шаге программы (нажатие клавиши <F7>) значение реги-

стров в окне будет обновляться. Изменение значения регистра отоб-

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

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

блема может быть решена использованием окон с переменными.

Step Over (клавиша <F8>) — выполняет текущую команду без захода в подпрограммы (все окна обновляются).

Step Out — запускает программу и выполняет ее до тех пор, пока не встретится окончание текущей подпрограммы;

если ход выполнения находится в области основной программы, то программа будет выполняться до тех пор, пока не будет остановлена пользователем командой Halt или не встретит точку прерывания;

Halt (клавиша <F5>) — принудительный останов ра-

боты программы.

Для сброса в исходное состояние используются команды подменю Debugger ► Reset, а также кнопка Reset панели ин-

струментов Н Debug (клавиша <F6>).

Еще одна возможность — выполнение программы до строки, в

которой в данный момент установлен курсор. Для этого используется команда контекстного меню Run to Cursor.

12

3.1.3.3. Окна отладчика

Вызов окон отладчика реализован с помощью команд меню

View. Прежде всего, интерес представляют окна Watch, File Registers

и Special Function Registers. Типичное для отладчиков окно Watch

(рис. 8) позволяет просматривать значения переменных и содержимое регистров управления во время выполнения программы.

Рис. 8. Окно Watch

С помощью кнопки Add SFR и расположенного справа от нее раскрывающегося списка можно создать элемент для просмотра со-

держимого какого-либо регистра управления (в примере на рис. 7 -

регистра данных порта А). Аналогичное назначение, но для перемен-

ных, имеет кнопка Add Symbol и расположенное справа поле. Для того чтобы изменить формат отображенной значения некоторого элемента просмотра, на нем следует щелкнуть правой кнопкой мыши,

выбрать в контекстном меню команду Properties и задать требуемый формат на вкладке Watch Properties.

Для удаления текущего элемента просмотра достаточно нажать клавишу <Delete> или же воспользоваться командой Delete кон-

текстного ценю.

13

Следующее окно отладчика - File Registers, отображающее со-

держимое памяти данных. Содержимое памяти можно просмотреть в виде шестнадцатеричного дампа (вкладка Hex) или же последова-

тельного списка ячеек с отображением их содержимого в различных форматах (вкладка Symbolic) (рис. 9). Значения, смененные в процес-

се выполнения программы, выделяются в окне File Registers красным цветом.

Рис. 9. Вкладки Hex и Symbolic окна File Registers

Окно File Registers позволяет редактировать расположенные в памяти переменные непосредственно или с помощью специального окна, которое открывается по команде контекстного меню Fill Registers (рис. 10). В окне Fill Registers можно указать начальный и ко-

нечный адрес области памяти, занимаемой переменной, в поле Data

вести требуемые данные в шестнадцатеричной или десятичной форме

(это определяется с помощью переключателей Data Radix) и нажать кнопку Write. Для выхода без выполнения записи используется кнопка Close.

14

Еще одно окно отладчика - это Special Function Registers

(рис. 11), оно используется для просмотра и модификации содержи-

мого регистров управления различных устройств микроконтроллера.

Значения, измененные в процессе выполнения программы, выделя-

ются в окне Special Function Registers красным цветом.

Рис. 10. Диалоговое окно Fill Registers

Рис. 11. Окно Special Function Registers

Так же как и в окне File Registers, в этом окне можно изменять содержимое регистров прямо в процессе выполнения программы (в

режиме отладки).

15

3.2.Микроконтроллер PIC

3.2.1.Структура микроконтроллера

Подавляющее число микроконтроллеров, имеет традиционную

(Фон-неймановскую или Принстонскую) архитектуру, в которой команды и данные передаются по одной шине. Архитектура микроконтроллера PIC16С84 основана на концепции раздельных шин и областей памяти для данных и команд (Гарвардская архитектура) (рис. 12). Шина данных связывает между собой все основные функциональные блоки микроконтроллера: память данных (ОЗУ);

арифметико-логическое устройство (АЛУ); порты ввода/вывода

(PORT A, B); регистры слова состояния (STATUS), косвенной адресации (FSR), таймера-счетчика (RTCC/TMRO), программного счетчика (PCL).

Рис. 12. Сравнение гарвардской и традиционной архитектуры

Все программные объекты, с которыми может работать PIC,

представляют собой физические регистры. Чтобы понять, как работает PIC, нужно разобраться с тем, какие регистры у него существуют и каким образом с каждым из них работать. Все регистры PIC можно разделить на две функциональные группы:

специальные регистры и регистры общего назначения.

16

3.2.2.Регистры PIC

3.2.2.1.Специальные регистры PIC

Специальные регистры используются для управления функциями микроконтроллера и могут быть разделены на два набора:

регистры базовых функций и регистры периферийных устройств.

Регистры базовых функций включают в себя регистр-переключатель косвенной адресации (INDF), программный счетчик (РС), регистр слова состояния (STATUS), регистр-указатель косвенной адресации

(FSR), рабочий регистр (WREG), регистр прерываний (INTCON), а

также регистр режимов работы или конфигурации предварительного делителя и таймера (OPTION). Регистры периферийных устройств включают в себя регистры ввода/вывода (PORTA-порт А и PORTB-

порт В), регистры данных (EEDATA) и адреса (EEADR) памяти данных-констант, регистр таймера-счетчика (TMRO) и регистры управления конфигурацией портов ввода/вывода (TRISA и TRISB).

Описание специальных регистров приведено в табл. 1.

специальные регистры также отображаются на память данных.

В командах, имеющих два операнда, одним из операндов является рабочий регистр WREG. Второй операнд может быть константой или содержимым любого регистра ОЗУ. В командах с одним операндом, операнд может быть содержимым рабочего регистра или любого другого регистра. Для выполнения всех операций АЛУ используется рабочий регистр WREG, который не может быть прямо адресован. В зависимости от результата выполнения операции, могут измениться значения битов переноса С,

десятичного переноса DC и нуля Z в регистре состояния STATUS.

При вычитании биты С и DC работают как биты заема и десятичного заема, соответственно.

17

 

 

 

 

 

 

 

 

Таблица 1

 

 

Описание специальных регистров Р1С16С84

 

 

 

 

 

 

 

 

 

 

 

 

 

Адрес

Имя

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Банк 0

 

 

 

 

 

 

 

 

 

00h

INDF

Используется значение FSR для доступа к памяти данных (не

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01h

TMRO

 

 

8-разрядный таймер/счетчик

 

 

 

 

 

 

 

 

 

 

02h

PCL

 

Младшие 8 разрядов счетчика команд РС

 

 

03h

STATUS

IRP

RP1

RP0

TO

PD

Z

DC

 

C

 

04h

FSR

 

Регистр косвенной адресации (Указатель адреса)

 

 

 

 

 

 

 

 

 

 

 

 

 

05h

PORTA

_

_

_

RA4/TOCKI

RA3

RA2

RA1

 

RA0

 

 

 

 

 

 

 

 

 

 

 

 

06h

PORTB

RB7

RB6

RB5

RB4

RB3

RB2

RB1

 

RB0/

 

 

 

 

 

 

 

 

 

 

INT

 

 

 

 

 

 

 

 

 

 

 

 

 

07h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

08h

EEDATA

 

Регистр данных ППЗУ данных-констант

 

 

09h

EEADR

 

Регистр адреса ППЗУ данных-констант

 

 

0Ah

PCLATH

Старшие разряды счетчика РС

 

 

 

 

 

 

 

 

 

 

 

 

0Bh

INTCON

GIE

EEIE

TOIE

INTE

RBIE

TOIF

INTF

RBIF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Банк 1

 

 

 

 

 

 

80h

INDF

Используется значение FSR для доступа к памяти данных

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

81h

OPTION

RBPU

INTEG

TOCS

TOSE

PSA

PS2

PS1

 

PS0

82h

PCL

 

Младшие 8 разрядов счетчика команд РС

 

 

83h

STATUS

IRP

RP1

RP0

TO

PD

Z

DC

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

84h

FSR

 

Регистр косвенной адресации (указатель адреса)

 

 

 

 

 

 

 

 

 

 

85h

TRISA

Биты управления портом А

 

 

86h

TRISB

 

 

Биты управления портом В

 

 

 

 

87h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

88h

EECON1

EEIF

WRERR

WREN

WR

 

RD

 

 

 

 

 

 

 

 

 

 

 

 

89h

EECON2

 

Регистр управления 2 ППЗУ данных-констант

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

0Ah

PCLATH

Старшие разряды счетчика РС

 

 

0Bh

INTCON

GIE

EEIE

TOIE

INTE

RBIE

TOIF

INTF

RBIF

 

Регистр переключатель косвенной адресации INDF физически

18