Общая структура микропроцессорной системы. Развитие фон-Неймовской архитектуры. Микроконтроллеры средней серии Microchip. Программирование микроконтроллеров Microchip средней серии, страница 6

Память данных представлена в виде регистрового фонда. Адрес памяти данных формируется переключателем из кода команды (прямая адресация) или из содержимого регистра указателя FSR.

MUX – микроконтроллер. Обеспечивает высокую надежность и функционирование микроконтроллера в сложных условиях. В этот блок входят:

1.  таймер включения (42 мс)

2.  таймер задержки генератора (кварцевый резонатор)

3.  сброс при включении

4.  сторожевой таймер, позволяющий перезагрузить контроллер при зависании программы

5.  супервизор (устройство, которое перезагружает контроллер при снижении напряжения)

6.  блок поддержки внутрисхемной отладки

7.  блок поддержки низковольтного программирования

Общий формат команд

Команды микроконтроллера средней серии делятся на 4 типа, в зависимости от типа данных с которыми работает команда:

1.  байториентированные команды

FILE – адрес регистра

d – размещение (бит, который указывает, куда разместить результат операции)

d = 0(W) или 1 (F)

2.  биториентированные команды

b – номер бита в регистре, над которым производится действие

3.  команды работы с константами

Набор команд

ADD WF 20, W – сложение двадцатого регистра с рабочим, результат помещается в рабочий регистр, а двадцатый останется без изменений

ADD WF 20, F – наоборот

INC – увеличение на единицу

IOR – или

MOVF – перемещение из памяти в рабочий регистр

MOW W, F – наоборот

CUB W, F – из содержимого регистра вычитается содержимое рабочего регистра

BSF 30, 2 – установка числа 30 во втором регистре

REG W, K – подтаблица в памяти

CLEAR VDT – сброс сторожевого таймера

Способы адресации

1.  прямая (адрес операнда указан в коде команды)

2.  непосредственная (операнд находится в команде)

3.  косвенная (в ходе команды указан регистр, в котором находится адрес операнда)

В средней серии регистр, который может быть использован как указатель – только один FSR. Для того, чтобы обратится к ячейке памяти, адрес которой находится в ячейке FSR, нужно в команде указать неявный регистр INDF.

mov lw        20

mov wf       FSR

add wf        INDF, W

Программирование микроконтроллеров Microchip средней серии

В Ассемблере программа пишется в виде таблицы, в которой есть колонки метки, мнемоники, операнды, комментарии.

Если мы хотим использовать программный Ассемблер, мы должны более тщательно соблюдать правила составления программ. Кроме того, команда должна содержать псевдокоманды (директивы Ассемблера), которые управляют процессом трансляции.

Start            mov lw        20

                    mov wf       FSR

Ищем команду пересылки из памяти в рабочий регистр

                    mov f          INDF, W

                    inc f             FSR, F

                    add wf        INDF, W

inc f             FSR, F

add wf        INDF, W

mov wf       20

          Перевод в режим пониженного энергоснабжения

                              sleep.

          end.

Программирование циклов

Как и в Ассемблере Intel 8080, специальных команд для всех типов циклов не существует. Циклы приходится использовать с помощью ветвлений. Только для циклов с постпроверкой имеется команда, позволяющая организовывать цикл с постпроверкой максимальной сложности.

Очистка двадцати регистров начинается с 20

Start            mov lw        20

                    mov wf       FSR

                    mov lw        50

                    mov wf       COUNT

Loop           clr f             INDF

                    inc f             FSR, F

                    decfsz        COUNT, F

                    goto            Loop

Организация альтернатив

Для организации альтернатив специальных команд нет. Нет даже команд условных переходов, вызовов и возвратов. Есть только две условные команды: btfss и btfsc. С помощью одной из условных команд и команды безусловного ветвления (вызов, возврат, безусловный переход) можно реализовать отсутствующие команды условного ветвления.

Пример:

Intel 8080