Отчёт по лабораторной работе по дисциплине: "Проектирование микропроцессорных систем" на тему: «Моделирование вычислительно-управляющих систем, разработанных на однокристальной микро-ЭВМ семейства MCS-51»
Цель работы : приобретение навыков в проектировании и отладке микропроцессорных устройств (МПУ) методом моделирования с использованием полноэкранного отладчика ассемблерных программ для однокристальной микро-ЭВМ КР1816ВЕ51.
Постановка задачи.
Необходимо разработать микропроцессорное устройство на основе ОЭВМ КМ1816ВЕ31 для специализированной автомобильной ЭВМ, которое определяло бы число оборотов двигателя. Входная информация поступает от датчиков (число оборотов (об/с)), полученные значения параметров выдаются на индикаторное устройство. Управление индикаторным устройством осуществляется портами P1, P2.
Алгоритм.
1) Ввод таблицы семисегментных кодов.
2) Настройка таймеров-счетчиков (определение режима работы и интервала времени счета для таймера).
3) Запуск счетчика.
4) Пока таймер не переполнен, счетчик считает, иначе переход к п.5 .
5) Перевод двоичного кода в двоично-десятичный для вывода на индикаторы
6) Пока не все цифры выведены делать
- выбрать знакоместо (соответствующий индикатор) с помощью порта1;
- погасить индикатор (стереть предыдущее значение);
- подать семисегментный код через порт0
Структурная схема.
Программа на языке ассемблер.
;Таблица семисегментных кодов
MOV 020H,#11111100B
MOV 021H,#01100000B
MOV 022H,#11011010B
MOV 023H,#11110010B
MOV 024H,#01100110B
MOV 025H,#10110110B
MOV 026H,#10111110B
MOV 027H,#11100000B
MOV 028H,#11111110B
MOV 029H,#11110110B
TIME: MOV TMOD,#00100110B ;Настройка т/с; 8 бит; 0-счетчик; 1-таймер;
CLR A ; Сброс аккумулятора
MOV TH0,A ; Сброс
MOV TL0,A ; счетчика
MOV TH1,#01100101B ; Начальное значение таймера
MOV TL1,#00000000B
ORL TCON,#50H ;Запуск счетчика
WAIT: JBC TCON.7,EXIT ;Проверка переполнения
SJMP WAIT ; таймера
EXIT: MOV A, TL0 ; Количество импульсов за100 мкс в А
;Преобразование кода
BD: CALL DIV10 ;Деление на 10
MOV R7,A ;Сохранение остатка
MOV A, R1 ;Загрузка частного в А
CALL DIV10
SWAP A ;Передача остатка в старшую тетраду А
ORL A, R7 ;Передача R7 в младшую тетраду А
JMP IND ;
DIV10: MOV R1,#0 ;Подпрограмма деления на 10 А
SUB10: ADD A,#11110110B;(NOT(10)+1) ;Вычитание 10 из остатка
INC R1 ;инкремент частного
JC SUB10
DEC R1 ;Восстановление частного
ADD A,#10 ;Восстановление остатка
RET
;Выбор знакоместа :В R1-сотни, в А-десятки и единицы
IND: MOV 90H,#255
MOV 90H,#11111110B
PUSH A ; Сотни в R1
CALL INIT
POP A
MOV 90H,#255
MOV 90H,#11111101B
MOV R2,A
SWAP A
ANL A,#00001111B
MOV R1,A ; Десятки
CALL INIT
MOV 90H,#255
MOV 90H,#11111011B
MOV A, R2
ANL A,#00001111B
MOV R1,A ; Единицы
CALL INIT
JMP EXIT1
INIT: ORL P0,#255 ;Гашение индикаторов
MOV A, R1
SYMB: ADD A,#20H ;Статическая индикация символа
MOV R0,A
MOV A,@R0
MOV 80H, A
RET
EXIT1: END
Выводы:
В результате выполнения лабораторной работы были получены навыки работы с таймерами-счетчиками, портами. Была разработана программа для подсчета импульсов (оборотов) за определенный интервал времени и для вывода количества импульсов на индикаторы. Трассировка программы с помощью отладчика FD51 подтвердила правильность ее работы