Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦУМП2 лаб.раб.посл. вар.2.doc
Скачиваний:
5
Добавлен:
09.09.2019
Размер:
368.64 Кб
Скачать
    1. Карта памяти микроконтроллера.

Для написания программы на ассемблере необходимо знание карты памяти микроконтроллера MC9S12XDT512 в отладочном модуле DEMO9S12XDT512.

Таблица 1.Карта памяти.

$0000-

$07FF

Регистры

2кБ

$0800-

$0FFF

Электрически стираемое ППЗУ

(EEPROM)

4кБ

4 – 1КБ страницы

между 0x800 –

0xBFF

$1000-

$3FFF

ОЗУ

(RAM)

12кБ

5 – 4 kБ страницы

Между 0x1000 –

0x1FFF

$4000-

$7FFF

Фиксированная

FLASH

16кБ

1К, 2К, 4К, 8К,

$8000-

$BFFF

FLASH EEPROM

оконные страницы

16кБ

32- 16кБ страниц

$C000-

$EFFF

Фиксированная

FLASH

16кБ

1К, 2К, 4К, 8К,

$FF00-

$FFFF

Векторы

BDM

256

бит

1.4. Принципы написания программы.

Разработчик программы CodeWarrior обладает возможностью программирования на языке ассемблера и на Си микроконтроллеров фирмы “Freescale” 68HC12 и HCS12.

Соглашение о символьных именах.

Символьные имена могут содержать до 512 алфавитно-цифровых символов и символа подчеркивания, причем первым символом не может быть цифра. Обратный слэш используется для указания на то, что директива имеет продолжение на следующей строке. Символы в верхнем и нижнем регистре считаются различными, за исключением имен стандартных директив и мнемоник инструкций.

Формат ассемблерной строки.

Ассемблерная строка МК “Frescale” имеет формат:

Метка, операция, операнд(ы); комментарий

Метка должна начинаться с первой позиции в строке, иначе компилятор выдаст ошибку. За меткой идет команда с операндами. В конце строки могут записываться комментарии. Всё, что отделено знаком «;», считается комментарием.

2. Исследование команд пересылки данных

Список этих команд приведен в таблице 1. Рассмотрим пример использования некоторых команд пересылки подробнее на простых примерах.

Таблица 1

TSTA

CLRA

TAB

PSHA

TSTB

CLRB

TBA

PULA

TST

CLR

TAP

PSHB

LDAA

STAA

TPA

PULB

LDAB

STAB

TSX

PSHX

LDD

STD

TXS

PULX

LDX

STX

TSY

PSHY

LDY

STY

TYS

PULY

LDS

STS

XGDX

XGDY

Для записи программы будем использовать внутреннее ОЗУ микроконтроллера (смотри карту памяти).

Пример 1. Перенести состояние с переключателей на семисегментный индикатор.

org $1000 ;адрес начала программы

ldaa #$0

staa $0002 ;настройка порта A на ввод

ldab #$FF

stab $0003 ;настройка порта В на вывод

ldaa $0000

staa $0001

Пример 2. Записать число 73 в семисегментный индикатор, связанный с портом B, используя расширенную адресацию.

Пример 3. Вывести состояние регистра признаков в семисегментный индикатор, используя индексную адресацию.