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

Министерство образования Российской Федерации

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ»

197376, Санкт-Петербург, ул. Проф. Попова, 5.

Факультет компьютерных технологий и информатики

Кафедра вычислительной техники

Отчёт по лабораторной работе

"Подсистема памяти микроконтроллера P89LPC932".

Преподаватель: Головина Л.К.

Студенты группы 0373: Иванющенко М.Ю.

Паршев А.Г.

Санкт-Петербург

2004

Подсистема памяти.

Подсистему памяти микроконтроллера P89LPC932 можно условно представить блоками, изображёнными на рисунке.

Code Memory

Память огранизована на основе Гарвардской архитектуры, т.е. с разделенными областями памяти программ (Code memory) и памяти данных (Data memory).

CODE (0000h..FFFFh). 64Кбайт памяти программ, в которых содержится исполняемый код. Для доступа используется команда ассемблера MOVC. Микроконтроллер P89LPC932 имеет «на кристалле» 8Кбайт памяти прогамм (0000h..1FFFh).

Память программ организована на основе Flash, т.е. на энергонезависимой памяти. Область разделена на 8 секторов по 1 Кбайт, каждый из которых, в свою очередь, подразделяется на страницы по 64 байт. Всего имеется 128 страниц. Для каждого сектора существует индивидуальное обеспечение секретности исполняемого кода. По заявлению производителя, возможна перезапись flash-памяти не менее 10000 раз.

Время записи на страницу – 2 мс.

Время стирания страницы, сектора, области – 2 мс.

В области адресов (FFЕFh..FF00h) находится загрузочная область (In-Application Programming BootFlash или IAP BootFlash), в которой расположены стандартные подпрограммы загрузки пользовательских приложений.

In-System Programming (ISP) Code (1Е00h..1FFFFh). Код подпрограммы, которая позволяет программировать область CODE через последовательный порт, не вынимая микроконтроллер «из системы».

DATA (00h..7Fh). 128 байт внутренней памяти данных (data memory). Для доступа к этой памяти используется прямая или косвенная адресация (использование команд языка ассемблера отличных от MOVX и MOVC). В этой области может располагаться весь стек или его часть.

IDATA Indirect Data (00h..FFh). 256 байт внутренней памяти данных. Эта область включает в себя область DATA и ещё 128 байт выше по адресному пространству. Для доступа к этой памяти используется только косвенная адресация (использование команд языка ассемблера отличных от MOVX и MOVC). В области IDATA может располагаться весь стек или его часть.

SFR Special Function Registers. Содержит регистры микропроцессорного ядра, регистры управления периферией, а также статусные регистры. Доступ к SFR возможен только с помощью прямой адресации.

XDATA “External” Data или Auxiliary RAM (AUX RAM) (0000h..FFFFh). Добавочная область памяти. Имеет размер 64Кб. Доступ к этой области осуществляется посредством использования регистров DPTR, R0 или R1 и использования команды ассемблера MOVX. Вся или часть этой памяти может располагаться на кристалле. LPC932 имеет на кристалле 512 байт AUX RAM. (0000h..01FFh)

EEPROM. 512 байт EEPROM, расположенных на крсталле. Данная память может быть использована для сохранения конфигурационных параметров. Доступ к этой области возможен через SFR. Возможны операции чтения, записи и стирания байта. Также допускается работа со страницами (64 байта) и блоками (512 байт).

Формат слова состояния программы (PSW)

Обзначение

Позиция

Название и назначение

CY

AC

F0

RS1

RS0

OV

UD

P

PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

PSW.2

PSW.1

PSW.0

Флаг переноса. Устанавливается и сбрасывается аппаратно при выполнении арифметико-логических операций или программно

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

Флаг 0. Устанавливается и сбрасывается программно, специфицируется пользователем

Выбор банка регистров. Устанавливаются и сбрасываются программно для выбора рабочего банка регистров следующим образом:

RS1 RS0 Банк РОН Адреса

0 0 0 00h-07h

0 1 1 08h-0Fh

1 0 2 10h-17h

1 1 3 18h-1Fh

Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций

Флаг 1. Устанавливается и сбрасывается программно, специфицируется пользователем

Флаг паритета. Устанавливается и сбрасывается аппаратно в каждом цикле команды и фиксирует нечетное/четное число единиц в аккумуляторе

Следующая таблица показывает содержимое SFR, а также значения, которые устанавливаются в регистрах после общего сброса микроконтроллера (Reset).

Замечания:

* – регистр имеет битовую адресацию.

- – бит зарезервирован. Может быть записан 0.

§ – В регистры BRGR1 и BRGR0 можно тоько записывать, если BRGEN в регистре BRGCON в ’0’. Во всех других случаях (BRGEN = 1), результат непредсказуем.

Обобщение.

768 байт RAM на кристалле распределены следующим образом:

  • DATA Memory – 128 байт (прямая и косвенная адресации);

  • IDATA Memory (включая DATA) – 256 байт (только косвенная адресация);

  • XDATA Auxiliary (“External Data”) – 512 байт (использование команды ассемблера MOVX).

Пример программы работы с памятью.

Во внешней памяти данных имеется массив измерительной информации (размерность произвольная, но не более 256 значений). Найти среднее значение, записать во внешнюю память данных. Сравнить каждое значение с заданным максимальным и минимальным значениеми и сформировать соответствующие признаки. Сформированный признак вывести в порт Р1.

mov r2,#4h -размер массива

mov r0,#10h -адрес начала хранения признаков

mov dptr,#0h –запись начального адреса внешней памяти с данными

rep1: movx a,@dptr –обращение во внешнюю память с записью значения в аккумулятор

mov r3,a –используем r3 для сравнения с max и min

add a,20h –суммируются элементы массива, для временного хранения суммы используется ячейка памяти по адресу 20H

mov 20h,a

inc dptr –увеличение адреса на 1, для того, чтобы считать следующий элемент массива

cjne r3,#40h,rel сравнение с максимальным значением

jmp rep

rel: jnc rep

cjne r3,#20h,rel1 сравнение с минимальным значением

jmp rep2

rel1: jc rep2

mov P1,#1h –далее, в зависимости от сравнения посылаем в порт нужный сигнал

mov @r0,#1h

inc r0

djnz r1,rep1

jmp rep3

rep: mov P1,#0h

mov @r0,#0h

inc r0

djnz r2,rep1

jmp rep3

rep2: mov P1,#2h

mov @r0,#2h

inc r0

djnz r2,rep1

rep3: mov a,20h

mov 0f0h,#5h

div AB -вычисление среднего арифметического

jmp$

end

Если во внешней памяти будут располагаться числа: 10h,20h,30h,40h,50h

Результатом, после вычисления среднего арифметического, будет число 30h.

Вывод в порт P1:

40h

20h

00

01

10

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

8

Соседние файлы в папке Материалы по микропроцессорам