GNU Эмулятор управление устройствами, порты

Содержание

Слайд 2

Взаимодействие с устройством MOV AL,Code OUT N IN N ;Код в AL

Взаимодействие с устройством

MOV AL,Code
OUT N

IN N
;Код в AL

Слайд 3

Клавиатура Упражнение №1. Программа kbrd.asm С устройством связан порт 00. Клавиатура

Клавиатура

Упражнение №1. Программа kbrd.asm
С устройством связан порт 00.
Клавиатура «физической» ЭВМ
Код

клавиши ENTER = 13 (0D)

Повторять:
Порт 00 => AL | Получить код клавиши
Сравнить AL и 0D | Это ENTER?
Код в видеопамять из AL
Если Z = 0 то Повторять
Конец

Слайд 4

Светофор С устройством связан порт 01. Для работы со светофором используется

Светофор

С устройством связан порт 01.
Для работы со светофором используется восьмиразрядный

регистр.
Нулевой и первый бит, которого не используются.
Слайд 5

Светофор AL Вывод в порт 01 |Вывести код в порт |Задержка

Светофор

AL <= Код красного сигнала с лева
Вывод в порт 01 |Вывести

код в порт
|Задержка на 10 итераций
CL <= 0A
Выполнять:
пустая команда
CL=СL-1
Перейти Если Z = 0 Выполнять
|Сброс регистра устройства
AL <= 0
Вывод в порт 01
Конец

Пустая команда = nop

Упражнение №2.
Выполните программу redsignal.asm

Слайд 6

Светофор задержка В программе организована задержка на 10 итераций для продолжительной

Светофор задержка

В программе организована задержка на 10 итераций для продолжительной подачи

сигнала. Максимальное число итераций может составлять 256.

Пример задержки на 300 итераций:
mov CL,3 ;число шагов внешнего
go1:
push CL;итерации в стек
;число итераций внутреннего цикла
mov CL,64;100 десятичное
go2:
nop
dec CL
jnz go2
pop CL ;продолжить внешний цикл
dec CL
jnz go1

Слайд 7

Термостат Для работы с термостатом служит порт 03. В регистр термостата

Термостат

Для работы с термостатом служит порт 03.
В регистр термостата используются

только два бита младший – нулевой и старший седьмой.
Если температура достигает 20 градусов по Цельсию, то младший бит выставляется в единицу.
Это контрольная температура термостата!
Слайд 8

Термостат AL Вывод порт 03 |Включить обогреватель AL Вывод в порт

Термостат

AL <=0 |Сброс регистра термостата
Вывод порт 03
|Включить обогреватель
AL <=

80
Вывод в порт 03
Выполнять:
Пустая команда
Ввод порт 03
В AL бит 0 установлен ?
Если z=0 перейти Стоп
Перейти Выполнять
Стоп: |Выключить нагрев
AL <= 0
Вывод порт 03
Конец

Упражнение №2. Выполните программу heater.asm

Слайд 9

Определения Порт двигателя имеет номер 05. Для управления работой двигателя используют

Определения

Порт двигателя имеет номер 05.
Для управления работой двигателя используют первые

четыре бита регистра устройства.

Каждый бит регистра – магнит статора.
Если бит активен, то лопасть ротора должна переместиться к соответствующего магниту.
Блоки из четырех магнитов расположены на статоре по кольцу

Слайд 10

Шаговый двигатель |Выключить магниты al |Движение на один такт Вывод порт

Шаговый двигатель

|Выключить магниты
al <=0
|Движение на один такт
Вывод порт 05
al <= 2
Вывод

порт 05
|Движение на второй такт
al <= 4
Вывод порт 05
Конец

Упражнение №3. Выполните программу stepmotor.asm

Слайд 11

Вращение ротора При работе с устройством могут можно использовать команду процессора

Вращение ротора

При работе с устройством могут можно использовать команду процессора циклического

сдвига битов в правую или левую сторону. Это команды:

ROR R – циклический сдвиг битов регистра на один разряд в право.
ROL R – циклический сдвиг битов регистра на один разряд в лево.

Слайд 12

Вращение ротора AL Выполнять: Циклический правый сдвиг AL Вывод порт 05

Вращение ротора

AL <= 11 |10001
Выполнять:
Циклический правый сдвиг AL
Вывод порт 05
Перейти

Выполнять
Конец

Вращение против часовой стрелки

Упражнение №4. Выполните программу stepmov.asm

Слайд 13

Цифровой дисплей Для работы с устройством используется порт 02. Кодирование цифры в регистре устройства

Цифровой дисплей

Для работы с устройством используется порт 02.

Кодирование цифры в

регистре устройства
Слайд 14

Кодирование цифры Бит 0 – мультиплексор, если он нулевой, то цифра

Кодирование цифры

Бит 0 – мультиплексор, если он нулевой, то цифра выводится

в левом дисплее

Код 9E

Слайд 15

Цифровой дисплей Требуется вывести в левом дисплее цифру три. Этому состоянию

Цифровой дисплей

Требуется вывести в левом дисплее цифру три. Этому состоянию соответствует

шестнадцатеричный код 9E.

|Тройка слева
AL <= Код цифры в левом дисплее
Вывод порт 02
|Сброс регистра устройства
AL <=0
Вывод порт 02
Конец

Упражнение №5. Выполните программу threenum.asm

Слайд 16

Цифровой дисплей |Число 99 AL Вывод порт 02 |------------------------------------- AL Вывод

Цифровой дисплей

|Число 99
AL <= Девятка в левом дисплее
Вывод порт 02
|-------------------------------------
AL <=

Девятка в правом дисплее
Вывод порт 02
|-------------------------------------
AL <= 0 ;Очистить левый дисплей
Вывод порт 02
AL <= 1 ;Очистить правый дисплей
Вывод порт 02
|Очистить регистр
AL <= 0
Вывод порт 02
Конец

Вывод числа в двух дисплеях. Требуется вывести число 99.

Упражнение №7. Выполните программу nine.asm

Слайд 17

Подъемник Для работы с этим устройством используется порт с номером 06.

Подъемник

Для работы с этим устройством используется порт с номером 06.

Устройство представляет собой подъемник клети на верхней этаж здания
Слайд 18

Подъемник Данное устройство требует реакции программы на события быстрее, чем движется

Подъемник

Данное устройство требует реакции программы на события быстрее, чем движется клеть!


Поэтому следует подобрать такую частоту работы процессора, что бы программа успевала подать соответствующие команды в регистр устройства.
Подбор частоты выполняется с помощью кнопки «Faster» эмулятора.
Слайд 19

Подъемник

Подъемник

Слайд 20

Подъемник Для управления подъемником используются две кнопки «Опускание» и «Подъем». Для

Подъемник

Для управления подъемником используются две кнопки «Опускание» и «Подъем».

Для управления

подъемником используются две кнопки «Опускание» и «Подъем».
Если в процессе работы с устройством клеть удариться о потолок или пол помещения устройство выдает сообщение об ошибке CRASHED !
Для сброса состояния ошибки следует использовать кнопку «Repair Crashed Lift».
Слайд 21

Подъемник AL Порт 06 Выполнять: |Опрашивать устройство Порт 06 => AL

Подъемник

AL <= Код включения двигателя на подъем
Порт 06 <=AL
Выполнять: |Опрашивать

устройство
Порт 06 => AL
В AL бит 2 активен ? |Клеть на верху – маска 4
Перейти Если Z = 0 ok |Да отключить двигатель
Переход Выполнять |Нет, ждем
ok:
AL <= 0 ;Выключить двигатель
Порт 06 <= AL
Конец

Упражнение №6. Написать программу upmov.asm для подъема клети на верхний этаж.

Слайд 22

Подъемник Выполнять: Порт 06 => AL в AL бит 4 активен

Подъемник

Выполнять:
Порт 06 => AL
в AL бит 4 активен ? |Кнопка нажата,

маска 1610=1016
Перейти Если Z=1 Выполнять
AL<= 2 | Включить двигатель
|на опускание
Порт 06 <=AL
Вниз:
Порт 06 => AL
в AL бит 3 активен ? | Клеть внизу, маска = 8
Перейти Если Z=1 Вниз |Ждем опускания
AL<=0 | Выключить двигатель
Порт 06 <= AL
конец

Упражнение №7. Написать программу downmov.asm для опускания клети на первый этаж при нажатии кнопки «Опускание».

Слайд 23

Лабиринт, змейка Устройство срабатывает при обращении к порту с номером 04.

Лабиринт, змейка

Устройство срабатывает при обращении к порту с номером 04.

При

работе с устройством используется регистр первые – младшие биты которого кодируют расстояние, на которое движется голова змейки.
На рисунке эти биты, обозначены их весами как 1,2,4,8.
Остальные четыре бита с весами 10,20,40,80 (значения шестнадцатеричные) кодируют направление, куда движется змейка
Слайд 24

Назначение старших битов : Если в регистр устройства записать код FF,

Назначение старших битов :

Если в регистр устройства записать код FF, то

голова змейки возвращается в исходное состояние, так как это показано на рисунке.

Лабиринт, змейка

Слайд 25

Лабиринт, змейка AL Порт 04 CL Выполнять: AL Порт 04 CL=CL-1

Лабиринт, змейка

AL <= FF |Змейка в исходном состоянии
Порт 04 <= AL
CL

<= 09 |Движемся вниз на 9 шагов
Выполнять:
AL <= 4F |Шаг смещения
Порт 04 <= AL
CL=CL-1
Перейти Если Z = 0 Выполнять |Итерации |закончены ?
|Два корректирующих движения
AL <= 47
Порт 04 <= AL
AL <= 47
Порт 04 <= AL
Конец

Упражнение №8. Напишите программу snake.asm для движения змейки в вертикальном сегменте лабиринта

Слайд 26

Контрольные задания №1. Напишите программу для ввода с клавиатуры ЭВМ строк

Контрольные задания

№1. Напишите программу для ввода с клавиатуры ЭВМ строк на

VDU. Нажатие клавиши Enter – создание новой строки. При попытке создания четвертой строки программа завершает свою работу.

№2. Напишите программу для управления шаговым двигателем.
Для управления работой двигателя используется термостат.
При запуске программы ротор двигателя вращается против часовой стрелки.
Если термостат зафиксировал температуру 20 градусов и выше, то шаговый двигатель останавливается, если температура меньше 20 градусов вращение возобновляется.

Слайд 27

№3. Напишите программу для вывода на цифровой дисплей показаний. Четные номера

№3. Напишите программу для
вывода на цифровой дисплей показаний.
Четные номера вариантов

вывод показаний с лева на право.
Программа работает циклически по циклограмме:
Вывод Первой цифры = > Задержка 20 итераций
=> Вывод второй цифры => Задержка 20 итераций =>
Сброс показаний => …

Контрольные задания