- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Операции с памятью
В состав микроконтроллерных устройств нередко включают запоминающие устройства (ЗУ). ЗУ характеризуются объёмом хранимой информации, разрядностью, способом подключения (с параллельным или последовательным интерфейсом).
По выполняемой функции ЗУ можно классифицировать на оперативные запоминающие устройства (ОЗУ) и постоянные запоминающие устройства (ПЗУ).
ПЗУ используют для хранения кода программы, констант, таблиц. ОЗУ необходимо для хранения переменных, информации, накапливаемой в процессе измерения и т.д. Так же, как и в ПЗУ, в ОЗУ могут располагаться таблицы и, в редких случаях, код программы.
На рисунке 4.25 приведена схема подключения ОЗУ и ПЗУ к микроконтроллеру.
Для повышения надёжности микропроцессорного устройства предусматривается возможность его самотестирования. Это предполагает выдачу информации о реакции отдельных блоков микропроцессорного устройства на заданное воздействие.
ЗУ также могут быть протестированы. Следует отметить, что существует множество алгоритмов тестирования ЗУ, причём эти алгоритмы различны для ОЗУ и ПЗУ.
Рисунок 4.25 – Схема подключения ОЗУ и ПЗУ к микроконтроллеру
104
Тестирование озу
Один из алгоритмов тестирования ОЗУ предполагает заполнение памяти тестовой информацией (в простейшем случае в ячейку памяти записывается младший байт её адреса, просуммированный с некоторой константой).
Листинг 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 и ; его инвертирование ; Выход из подпрограммы |