- •Цели курсового проектирования
- •Тематика курсовых проектов
- •Этапы выполнения курсового проекта
- •Структура, объём и оформление проекта
- •5. Проектирование основных блоков мпу.
- •5.1. Процессорный блок.
- •Блок памяти
- •5.3. Обмен информацией в микропроцессорной системе.
- •Формирование управляющих сигналов мпс.
- •5.3.2. Интерфейсы ввода - вывода.
- •6. Пример проектирования микропроцессорного устройства.
- •6.1. Выбор микропроцессорного комплекта.
- •Разработка структурной и принципиальной электрической схем устройства.
- •Программная часть.
- •6.4. Расчёт быстродействия
- •Электротехнические чертежи и схемы. Правила выполнения схем [ 12 ]
- •Схемы цифровой вычислительной техники Общие положения
- •Принципиальные схемы
- •Программируемый параллельный интерфейс кр580вв55
- •Статические озу
- •Двоичные коды
- •Двоично-десятичные коды
- •Алфавитно-цифровые коды
- •394026, Воронеж, Московский просп. , 14
Программная часть.
Программа для МПУ составлена в системе команд МП КР580 [14 ]. Запись программы выполнена в символах языка ассемблера, затем сделана трансляция в машинные коды с определением адресного пространства в ПЗУ. В этом виде производится запись программы в ПЗУ («прошивка») с нулевого адреса.
Для удобства программирования необходимо составить блок-схему алгоритма программы (рис.6.4). Правила составления блок схемы приведены в приложении 1.
1
2
3
4 5 6 7 8 9 10
14 15 16 17 18 19
12 13
20 23
11
21 24
22 25
Рис. 6.4. Схема алгоритма программы
27
Номера графических символов на рис. 6.4 соответствуют программным блокам:
1 – инициализация МПУ (обнуление внешних регистров,
установка битов в регистре С);
2 – чтение управляющих сигналов в порту ввода ППИ на D7;
3 … 10 – основной цикл (анализ наличия управляющих сиг-
налов;
11 – ожидание окончания импульса тактового генератора;
12, 13 - анализ установки битов регистра С;
20, 21 - блоки инкремента секунд, минут канала 1;
23, 24 – блоки инкремента секунд, минут канала 2
22, 25 - блоки вывода информации во внешние регистры по
каналам 1 и 2;
14 …19 – блоки обработки управляющих сигналов (start,
stop, reset) по каналам 1 и 2.
Преобразование алгоритма в текст программы оформлено в табличном виде, содержащем четыре столбца. Содержимое первого столбца - адреса ячеек памяти (метки), второго – мнемоники и операнды команд на языке ассемблера, третьего – машинные коды, четвертого – комментарии. Программа, состоящая из символических команд, называется исходной программой, а переведённая на машинный язык - объектной программой.
Перевод программы в машинные коды выполнен вручную с использованием системы команд МП КР580ВМ80А.
Ниже приведена программа в машинных кодах и в мнемониках языка ассемблера
|
|
|
; инициализация |
0000 |
Mvi A, 00H |
3E 00 |
|
0002 |
Out 00H |
D3 00 |
|
…… |
Out 01H |
D3 01 |
|
…… |
Out 02H |
D3 02 28 |
|
…… |
Out 04H |
D3 04 |
|
|
Out 05H |
D3 05 |
|
|
Mvi C, 03H |
0E 03 |
|
|
|
|
; основной цикл |
Loop: |
In 05H |
DB 05 |
; чтение порта ввода |
|
Mov B, A |
47 |
|
|
Ani 01H |
E6 01 |
|
|
Jnz Generator1 |
C2 Generator1 |
|
|
Mov A, B |
78 |
|
|
Ani 02H |
E6 02 |
|
|
Jnz start1 |
C2 start1 |
|
|
Mov A, B |
78 |
|
|
Ani 04H |
E6 04 |
|
|
Jnz stop1 |
C2 stop1 |
|
|
Mov A, B |
78 |
|
|
Ani 08H |
E6 08 |
|
|
Jnz reset1 |
C2 reset1 |
|
|
Mov A, B |
78 |
|
|
Ani 10H |
E6 10 |
|
|
Jnz start2 |
C2 start2 |
|
|
Mov A, B |
78 |
|
|
Ani 20H |
E6 20 |
|
|
Jnz stop2 |
C2 stop2 |
|
|
Mov A, B |
78 |
|
|
Ani 40H |
E6 40 |
|
|
Jnz reset2 |
C2 reset2 |
|
|
Jmp Wait |
C3 Wait |
|
|
; проверка включения секундомера 1 |
||
Generator1: |
Mov A, C |
79 |
|
|
Ani 01H |
E6 01 |
|
|
Jnz Incr-ment1 |
C2 Increment1 |
|
29 |
|||
|
; проверка включения секундомера 2 |
||
Generator2: |
Mov A, C |
79 |
|
|
Ani 02H |
E6 02 |
|
|
Jnz Increment2 |
C2 Increment2 |
|
|
Jmp Wait |
C3 Wait |
|
|
|
; инкремент секундомера 1 |
|
Increment 1: |
In 00H |
DB 00 |
|
|
Cpi 59 |
FE 3В |
|
|
Jz IncremenMin1 |
CA incrementmin1 |
|
|
Inr A |
3C |
; инкремент секунд |
|
Out 00H |
D3 00 |
|
IncrementMin1: |
Mvi A, 00H |
3E 00 |
|
|
Out 00H |
D3 00 |
|
|
In 01H |
DB 01 |
|
|
Cpi 09H |
FE 09 |
|
|
Jz reset1 |
CA reset1 |
|
|
Inr A |
3C |
|
|
Out 01H |
D3 01 |
|
|
Jmp Generator2 |
C3 Generator 2 |
|
|
|
; инкремент секундомера 2 |
|
Increment2: |
In 02H |
DB 02 |
|
|
Cpi 59 |
FE 3В |
|
|
Jz IncrementMin2 |
CA IncremenMin2 |
|
|
Inr A |
3C |
|
|
Out 02H |
D3 02 |
|
|
Jmp Wait |
C3 Wait |
|
IncrementMin2: |
Mvi A, 00H |
3E 00 |
|
30 |
|||
|
Out 02H |
D3 04 |
|
|
In 04H |
DB 04 |
|
|
Cpi 09H |
FE 09 |
|
|
Jz reset2 |
CA reset2 |
|
|
Inr A |
3C |
|
|
Out 04H |
D3 04 |
|
|
Jmp Wait |
C3 wait |
|
|
|
; старт секундомера 1 |
|
Start1: |
Mov A, C |
79 |
|
|
Ori 01H |
F6 01 |
|
|
Mov C, A |
4F |
|
|
|
; останов секундомера 1 |
|
Stop1: |
Mov A, C |
79 |
|
|
Ani 02H |
E6 02 |
|
|
Mov C, A |
4F |
|
|
|
; сброс секундомера 1 |
|
Reset1: |
Mvi A, 00H |
3E 00 |
|
|
Out 00H |
D3 00 |
|
|
Out 01H |
D3 01 |
|
|
|
; старт секундомера 2 |
|
Start2: |
Mov A, C |
79 |
|
|
Ori 02H |
F6 02 |
|
|
Mov C, A |
4F |
|
|
|
; останов секундомера 2 |
|
Stop2: |
Mov A, C |
79 |
|
|
Ani 01H |
E6 01 |
|
|
Mov C, A |
4F |
|
|
|
; сброс секундомера 2 |
|
Reset2: |
Mvi A, 00H |
3E 00 |
|
|
Out 02H |
D3 02 |
|
|
Out 04H |
|
|
|
; ожидание окончания импульса |
||
Wait: |
In 05H |
DB 05 |
|
|
Cpi 00H |
FE 00 |
|
31 |
|||
|
Jz Loop |
CA Loop |
|
|
Jmp Wait |
C3 Wait |
|