Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по АТ89С51 изд.вариант 2010-54.doc
Скачиваний:
86
Добавлен:
19.11.2019
Размер:
865.22 Кб
Скачать
    1. Операции с памятью

В состав микроконтроллерных устройств нередко включают запоминающие устройства (ЗУ). ЗУ характеризуются объёмом хранимой информации, разрядностью, способом подключения (с параллельным или последовательным интерфейсом).

По выполняемой функции ЗУ можно классифицировать на оперативные запоминающие устройства (ОЗУ) и постоянные запоминающие устройства (ПЗУ).

ПЗУ используют для хранения кода программы, констант, таблиц. ОЗУ необходимо для хранения переменных, информации, накапливаемой в процессе измерения и т.д. Так же, как и в ПЗУ, в ОЗУ могут располагаться таблицы и, в редких случаях, код программы.

На рисунке 4.25 приведена схема подключения ОЗУ и ПЗУ к микроконтроллеру.

Для повышения надёжности микропроцессорного устройства предусматривается возможность его самотестирования. Это предполагает выдачу информации о реакции отдельных блоков микропроцессорного устройства на заданное воздействие.

ЗУ также могут быть протестированы. Следует отметить, что существует множество алгоритмов тестирования ЗУ, причём эти алгоритмы различны для ОЗУ и ПЗУ.

Рисунок 4.25 – Схема подключения ОЗУ и ПЗУ к микроконтроллеру

104

      1. Тестирование озу

Один из алгоритмов тестирования ОЗУ предполагает заполнение памяти тестовой информацией (в простейшем случае в ячейку памяти записывается младший байт её адреса, просуммированный с некоторой константой).

Листинг 4.39 содержит текст программы тестирования ОЗУ ёмкостью 8 кБ.

Листинг 4.39 – Программа тестирования ОЗУ

.ORG 0000H

; Адрес начала программы

TEST:

MOV R0, #00H

CALL WRITE

CALL READ

; Загрузка в R0 числа,

; прибавляемого к тестовой

; информации (контрольного

; байта)

; Вызов подпрограммы записи

; тестовой информации в ОЗУ

; Вызов подпрограммы чтения

; тестовой информации из ОЗУ с

; проверкой правильности записи

CJNE A, 00H, STOP

DJNZ R0, TEST

JMP BEGIN

; Проверка результата

; тестирования. При

; обнаружении ошибки останов

; программы

; Иначе переход к следующему

; циклу тестирования

; Переход к основной программе в

; случае успешного тестирования

STOP:

JMP $

; Останов программы при

; обнаружении ошибки ОЗУ

; Основная программа

BEGIN:

; Подпрограмма записи тестовой информации в ОЗУ

WRITE:

NEXTW:

MOV DPTR, #0000H

MOV A, DPL

ADD A, R0

MOVX @DPTR, A

INC DPTR

MOV A, DPH

CJNE A, #20H, NEXTW

RET

; В DPTR заносится адрес, по

; которому необходимо

; сохранить байт

; тестовой информации

; В аккумулятор помещается

; младший байт адреса и

; прибавляется число из

; регистра R0

; Запись тестовой информации в

; ОЗУ

; Инкрементирование адреса

; Проверка предела заполнения

; памяти и переход на начало

; цикла записи, если память

; заполнена не полностью

; Выход из подпрограммы

; Подпрограмма чтения тестовой информации из ОЗУ с проверкой

; правильности записи

READ:

NEXTR:

MOV DPTR, #0000H

MOVX A, @DPTR

CLR C

SUBB A, R0

CJNE A, DPL, ERR

INC DPTR

MOV A, DPH

CJNE A, #20H, NEXTR

MOV A, R0

RET

; В DPTR заносится адрес, с

; которого необходимо

; считать байт

; тестовой информации

; Чтение байта из ОЗУ

; Вычитание из считанного

;значения контрольного байта

; Проверка правильности

; записи данных

; Инкрементирование адреса

; Проверка предела чтения

; памяти и переход на начало

; цикла чтения, если память

; считана не полностью

; Загрузка в аккумулятор байта

; из регистра R0

; Выход из подпрограммы

ERR:

MOV A, R0

CPL A

RET

; Загрузка в аккумулятор байта

; из регистра R0 и

; его инвертирование

; Выход из подпрограммы