
- •Микропроцессорные устройства
- •Оглавление
- •Введение Структура и временные диаграммы работы микропроцессора к580вм80
- •Допуск к лабораторному практикуму. Изучение лабораторного стенда
- •Контрольные вопросы
- •Лабораторная работа №1 Программирование арифметических операций в 8-разрядных микропроцессорах
- •Необходимые теоретические сведения
- •Задания для выполнения лабораторной работы:
- •Контрольные вопросы
- •Лабораторная работа №2 Параллельный ввод-вывод информации в микропроцессорных системах
- •Необходимые теоретические сведения
- •Описание лабораторной установки
- •Контрольные вопросы
- •Лабораторная работа №3 Ввод аналоговых сигналов в микропроцессорную систему
- •Необходимые теоретические сведения
- •Описание лабораторной установки
- •Задания для выполнения лабораторной работы:
- •Контрольные вопросы
- •Лабораторная работа №4 Программируемый таймер
- •Необходимые теоретические сведения
- •Описание лабораторной установки
- •Задания для выполнения лабораторной работы:
- •Контрольные вопросы
- •Лабораторная работа №5 Последовательный ввод-вывод информации в микропроцессорных системах
- •Необходимые теоретические сведения
- •Описание лабораторной установки
- •Задания для выполнения лабораторной работы:
- •Контрольные вопросы
- •Состав команд микропроцессора intel 8080/8085
Описание лабораторной установки
Лабораторная работа выполняется на стенде УМК с использованием дополнительной печатной платы (рис.19 а). На этой плате смонтированы БИС таймера К580ВИ53, БИС последовательного интерфейса К580ВВ51 и необходимые вспомогательные микросхемы. Две таких платы соединены между собой витой парой. Передатчиком шлется УМК с платой, на которой выход TxD последовательного интерфейса подключен к одному из концов сигнального провода. Второй УМК подсоединен витой парой по входу RxD и используется как приемник. В качестве источника синхроимпульсов используется один из каналов программируемого таймера.
Задания для выполнения лабораторной работы:
Задание
1:
Запрограммируйте
на режим деления частоты (режим3) счетчик
таймера, задающий скорость передачи
для УСАПП. Коэффициент для счетчика
рассчитывается по формуле:
.
Скорость передачи fBOD
задается преподавателем. Для задания
2, коэффициент деления частоты УСАПП
(КВ)
задать 1:1, для задания 3 коэффициент КВ
задать
1:16. Тактовая частота УМК fCLK
измеряется
осциллографом с разъема рис.19 б.
Задание 2: Выполните программу передачи байта из ячейки памяти в бесконечном цикле. Перед запуском программы активируйте программу для таймера из задания 1 с использованием коэффициента деления частоты УСАПП 1:1. Подключите к выходу передатчика осциллограф (рис. 19 б), и наблюдайте временную диаграмму передаваемого сообщения. Осциллограммы нескольких, заданных преподавателем, байтов должны быть в отчете. Укажите на них: стартовый бит, стоповый бит, информационные биты.
Используя полученные осциллограммы, рассчитайте скорость передачи и сравните ее со скоростью заданной преподавателем. Выполните настройку, необходимую для получения скорости передачи, максимально близкой к заданной.
|
LXI H, 900 |
;Адрес ячейки памяти, содержащей передаваемый байт |
|
XRA A |
;Подготовка к сбросу |
|
OUT 81 |
|
|
OUT 81 |
|
|
OUT 81 |
|
|
MVI А, 40 |
;Программный сброс |
|
OUT 81 |
|
|
MVI A, 4D |
;Инструкция режима |
|
OUT 81 |
|
ENTR: |
MVI A, 31 |
;Команда начала передачи |
|
OUT 81 |
|
|
MOV A,M |
;Передача байта из ячейки, адресуемой HL |
|
OUT 80 |
|
WAIT: |
IN 81 |
;Готовность передатчика |
|
ANI 01 |
|
|
JZ WAIT |
|
|
JMP ENTR |
|
Измените в программе инструкцию режима, введя контроль паритета передаваемой информации из таблицы 5. Занесите осциллограммы в отчет.
Таблица 5
Передаваемые символы
Вариант № |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Без контроля достоверности |
0F |
FF |
00 |
AA |
83 |
79 |
6D |
5B |
3F |
63 |
С контролем четности |
6F |
E7 |
4D |
75 |
53 |
CF |
7B |
81 |
99 |
DC |
С контролем нечетности |
65 |
31 |
17 |
69 |
8A |
6D |
9B |
2E |
C3 |
A7 |
Задание 3: Выполните передачу и прием блока данных, используя для ввода программ приема/передачи УМК с соответствующей по подключению платой. Задание может выполняться двумя бригадами, в отчеты вносятся обе программы. Перед запуском программы активируйте программу для таймера из задания 1 с использованием коэффициента деления частоты УСАПП 1:16. До начала передачи убедитесь в абсолютном совпадении частот на выходах счетчиков, задающих скорость приема и передачи.
Программа передачи
0820 |
|
LXI SP,810 |
31 |
Загружаем адрес стека |
0821 |
|
|
10 |
|
0822 |
|
|
08 |
|
0823 |
|
LXI H,900 |
21 |
Загружаем адрес массива |
0824 |
|
|
00 |
|
0825 |
|
|
09 |
|
0826 |
|
MVI С, 00 |
0E |
Обнуляем регистр контр.суммы |
0827 |
|
|
00 |
|
0828 |
|
MVI A,4E |
3E |
Задаем режим работы УСАПП |
0829 |
|
|
4Е |
|
082A |
|
OUT 81 |
D3 |
|
082B |
|
|
81 |
|
082C |
|
MVI А, 11 |
3E |
Даем команду передачи данных |
082D |
|
|
11 |
|
082E |
|
OUT 81 |
D3 |
|
082F |
|
|
81 |
|
0830 |
|
MVI B,7F |
06 |
Инициализируем счетчик байт |
0831 |
|
|
7F |
|
0832 |
|
CALL |
CD |
Ожидаем готовности передатчика |
0833 |
|
GETREADY |
60 |
|
0834 |
|
|
08 |
|
0835 |
|
MOV A,В |
78 |
Передаем размер блока данных |
0836 |
|
OUT 80 |
D3 |
|
0837 |
|
|
80 |
|
0838 |
TRANSMIT: |
CALL |
CD |
Ожидаем готовности передатчика |
0839 |
|
GETREADY |
60 |
|
083A |
|
|
08 |
|
083B |
|
MOV A,M |
7E |
Передаем байт массива |
083C |
|
OUT 80 |
D3 |
|
083D |
|
|
80 |
|
083E |
|
ADD C |
81 |
Подсчитываем контрольную сумму |
083F |
|
MOV C,A |
4F |
Сохраняем контрольную сумму |
0840 |
|
INX H |
23 |
Увеличиваем индекс массива |
0841 |
|
DCR В |
05 |
Уменьшаем счетчик байт |
0842 |
|
JNZ TRANSMIT |
C2 |
Если не последний байт, |
0843 |
|
|
38 |
то продолжаем |
0844 |
|
|
08 |
|
0845 |
|
CALL |
CD |
Ожидаем готовности передатчика |
0846 |
|
GETREADY |
60 |
|
0847 |
|
|
08 |
|
0848 |
|
MOV А,С |
79 |
Передаем контрольную сумму |
0849 |
|
OUT 80 |
D3 |
|
084A
|
… |
... |
80 |
… |
0860 |
GETREADY: |
IN 81 |
DB |
Считываем слово состояния |
0861 |
|
|
81 |
|
0862 |
|
ANI 01 |
E6 |
|
0863 |
|
|
01 |
|
0864 |
|
JZ GETREADY |
CA |
Если передатчик не готов к |
0865 |
|
|
60 |
передаче, продолжаем анализиро- |
0866 |
|
|
08 |
вать слово состояния |
0867 |
|
RET |
C9 |
Возврат из подпрограммы |
Программа приема
0820 |
|
LXI SP,810 |
31 |
Загружаем адрес стека |
0821 |
|
|
10 |
|
0822 |
|
|
08 |
|
0823 |
|
LXI H,900 |
21 |
Загружаем адрес массива |
0824 |
|
|
00 |
|
0825 |
|
|
09 |
|
0826 |
|
MVI C, 00 |
OE |
Обнуляем регистр контр.суммы |
0827 |
|
|
00 |
|
0828 |
|
MVI A,4E |
3E |
Задаем режим работы УСАПП |
0829 |
|
|
4Е |
|
082A |
|
OUT 81 |
D3 |
|
082B |
|
|
81 |
|
082C |
|
MVI A,14 |
3E |
Даем команду приема данных |
082D |
|
|
14 |
|
082E |
|
OUT 81 |
D3 |
|
082F |
|
|
81 |
|
0830 |
|
CALL |
CD |
Принимаем размер передаваемого |
0831 |
|
GETBYTE |
60 |
блока |
0832 |
|
|
08 |
|
0833 |
|
MOV B,A |
47 |
Инициализируем счетчик байт |
0834 |
RESEIVE: |
CALL |
CD |
Принимаем байт данных |
0835 |
|
GETBYTE |
60 |
|
0836 |
|
|
08 |
|
0837 |
|
MOV V,A |
77 |
Помещаем байт в массив |
0838 |
|
INX H |
23 |
Увеличиваем индекс массива |
0839 |
|
ADD С |
81 |
Подсчитываем контрольную сумму |
083A |
|
MOV C,A |
4F |
Сохраняем контрольную сушу |
083B |
|
IN 81 |
DB |
Считываем регистр состояния |
083C |
|
|
81 |
|
083D |
|
ANI 38 |
E6 |
Анализируем флаги ошибок |
083E |
|
|
38 |
|
083F |
|
JNZ EXIT |
C2 |
Выходам если ошибка |
0840 |
|
|
49 |
|
0841 |
|
|
08 |
|
0842 |
|
DCR В |
05 |
Уменьшаем счетчик байт |
0843 |
|
JNZ RECEIVE |
C2 |
Продолжаем прием если |
0844 |
|
|
34 |
не последний байт |
0845 |
|
CALL |
08 |
|
0846 |
|
GETBYTE |
CD |
Принимаем контрольную сумму |
0847 |
|
|
60 |
|
0848 |
|
|
08 |
|
0849 |
EXIT: |
MOV M,A |
77 |
Сохраняем код ошибки или |
|
|
|
|
контрольную сумму |
… |
… |
… |
… |
… |
0860 |
GETBYTE: |
IN 81 |
DB |
Считываем слово состояния |
0861 |
|
|
81 |
|
0862 |
|
ANI 02 |
E6 |
Анализируем бит готовности |
0863 |
|
|
02 |
приемника |
0864 |
|
JZ GETBYTE |
CA |
Если данные не готовы |
0865 |
|
|
60 |
продолжаем анализировать |
0866 |
|
|
08 |
слово состояния |
0867 |
|
IN 80 |
DB |
Принимаем байт |
0868 |
|
|
80 |
|
0869 |
|
RET |
C9 |
Возвращаемся из подпрограммы |