Similar presentations:
GNU Эмулятор управление устройствами, порты
1. GNU Эмулятор управление устройствами, порты
1GNU Эмулятор управление
устройствами, порты
1. Чтение байтов из порта
2. Запись байтов в порт
3. Обзор устройств
2.
Взаимодействие с устройствомIN N
;Код в AL
MOV AL,Code
OUT N
2
3.
КлавиатураУпражнение №1. Программа kbrd.asm
С устройством связан порт 00.
Клавиатура «физической» ЭВМ
Код клавиши ENTER = 13 (0D)
Повторять:
Порт 00 => AL
| Получить код клавиши
Сравнить AL и 0D | Это ENTER?
Код в видеопамять из AL
Если Z = 0 то Повторять
Конец
3
4.
Светофор4
С устройством связан порт 01.
Для работы со светофором
используется
восьмиразрядный регистр.
Нулевой и первый бит,
которого не используются.
Сигнал
Зеленый, правый
Желтый, правый
Красный, правый
Зеленый, левый
Желтый, левый
Красный, левый
Номер бита
2
3
4
5
6
7
5.
СветофорAL <= Код красного сигнала с лева
Вывод в порт 01 |Вывести код в порт
|Задержка на 10 итераций
CL <= 0A
Выполнять:
пустая команда
CL=СL-1
Перейти Если Z = 0 Выполнять
|Сброс регистра устройства
AL <= 0
Вывод в порт 01
Конец
Пустая команда = nop
5
Упражнение №2.
Выполните программу
redsignal.asm
6.
Светофор задержкаВ программе организована задержка на 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
6
7.
ТермостатДля работы с
термостатом служит порт
03.
В регистр термостата
используются только два
бита младший – нулевой
и старший седьмой.
Если температура
достигает 20 градусов по
Цельсию, то младший бит
выставляется в единицу.
Это контрольная
температура термостата!
7
8.
ТермостатУпражнение №2. Выполните
программу heater.asm
AL <=0 |Сброс регистра термостата
Вывод порт 03
|Включить обогреватель
AL <= 80
Вывод в порт 03
Выполнять:
Пустая команда
Ввод порт 03
В AL бит 0 установлен ?
Если z=0 перейти Стоп
Перейти Выполнять
Стоп: |Выключить нагрев
AL <= 0
Вывод порт 03
Конец
8
9.
ОпределенияПорт двигателя имеет
номер 05.
Для управления работой
двигателя используют
первые четыре бита
регистра устройства.
Каждый бит регистра – магнит статора.
Если бит активен, то лопасть ротора должна
переместиться к соответствующего магниту.
Блоки из четырех магнитов расположены на
статоре по кольцу
9
10.
Шаговый двигатель|Выключить магниты
al <=0
|Движение на один такт
Вывод порт 05
al <= 2
Вывод порт 05
|Движение на второй такт
al <= 4
Вывод порт 05
Конец
Упражнение №3.
Выполните программу
stepmotor.asm
10
11.
Вращение ротора11
При работе с устройством могут можно использовать
команду процессора циклического сдвига битов в правую
или левую сторону. Это команды:
ROR R – циклический сдвиг битов регистра на
один разряд в право.
ROL R – циклический сдвиг битов регистра на
один разряд в лево.
AL
1
0
0
0
1
0
0
0
ROR AL
0
1
0
0
0
1
0
0
ROR AL
0
0
1
0
0
0
1
0
12.
Вращение ротораAL <= 11 |10001
Выполнять:
Циклический правый сдвиг AL
Вывод порт 05
Перейти Выполнять
Конец
Упражнение №4. Выполните
программу stepmov.asm
Вращение против часовой
стрелки
12
13.
Цифровой дисплей13
Для работы с устройством
используется порт 02.
Кодирование цифры в
регистре устройства
14.
Кодирование цифры14
Бит 0 – мультиплексор, если он
нулевой, то цифра выводится в
левом дисплее
Код 9E
15.
Цифровой дисплейТребуется вывести в левом дисплее цифру три.
Этому состоянию соответствует
шестнадцатеричный код 9E.
Упражнение №5. Выполните
программу threenum.asm
|Тройка слева
AL <= Код цифры в левом дисплее
Вывод порт 02
|Сброс регистра устройства
AL <=0
Вывод порт 02
Конец
15
16.
Цифровой дисплей16
Вывод числа в двух дисплеях.
Требуется вывести число 99.
|Число 99
AL <= Девятка в левом дисплее
Вывод порт 02
|------------------------------------AL <= Девятка в правом дисплее
Вывод порт 02
|------------------------------------AL <= 0 ;Очистить левый дисплей
Вывод порт 02
AL <= 1 ;Очистить правый дисплей
Вывод порт 02
|Очистить регистр
AL <= 0
Вывод порт 02
Конец
Упражнение №7.
Выполните программу
nine.asm
17.
ПодъемникДля работы с этим
устройством
используется порт с
номером 06.
Устройство представляет
собой подъемник клети
на верхней этаж здания
17
18.
ПодъемникДанное устройство требует реакции программы
на события быстрее, чем движется клеть!
Поэтому следует подобрать такую частоту
работы процессора, что бы программа успевала
подать соответствующие команды в регистр
устройства.
Подбор частоты выполняется с помощью кнопки
«Faster» эмулятора.
18
19.
ПодъемникНомер
бита
0
1
2
3
4
5
6
7
19
Назначение
Включение двигателя на подъем
Включение двигателя на опускание
Флаг нахождения клети на верхнем этаже
Флаг нахождения клети на нижнем этаже
Флаг кнопки «Опускание»
Флаг кнопки «Подъем»
Не используются
Не используется
20.
ПодъемникДля управления подъемником
используются две кнопки
«Опускание» и «Подъем».
Для управления подъемником
используются две кнопки
«Опускание» и «Подъем».
Если в процессе работы с
устройством клеть удариться о
потолок или пол помещения
устройство выдает сообщение об
ошибке CRASHED !
Для сброса состояния ошибки
следует использовать кнопку
«Repair Crashed Lift».
20
21.
ПодъемникУпражнение №6. Написать программу upmov.asm
для подъема клети на верхний этаж.
AL <= Код включения двигателя на подъем
Порт 06 <=AL
Выполнять: |Опрашивать устройство
Порт 06 => AL
В AL бит 2 активен ? |Клеть на верху – маска 4
Перейти Если Z = 0 ok |Да отключить двигатель
Переход Выполнять |Нет, ждем
ok:
AL <= 0 ;Выключить двигатель
Порт 06 <= AL
Конец
21
22.
ПодъемникУпражнение №7. Написать программу downmov.asm для
опускания клети на первый этаж при нажатии кнопки
«Опускание».
Выполнять:
Порт 06 => AL
в AL бит 4 активен ? |Кнопка нажата, маска 1610=1016
Перейти Если Z=1 Выполнять
AL<= 2 | Включить двигатель
|на опускание
Порт 06 <=AL
Вниз:
Порт 06 => AL
в AL бит 3 активен ? | Клеть внизу, маска = 8
Перейти Если Z=1 Вниз |Ждем опускания
AL<=0 | Выключить двигатель
Порт 06 <= AL
конец
22
23.
Лабиринт, змейкаУстройство срабатывает при
обращении к порту с номером 04.
При работе с устройством
используется регистр первые –
младшие биты которого кодируют
расстояние, на которое движется
голова змейки.
На рисунке эти биты, обозначены их
весами как 1,2,4,8.
Остальные четыре бита с весами
10,20,40,80 (значения
шестнадцатеричные) кодируют
направление, куда движется змейка
23
24.
Лабиринт, змейкаНазначение старших
битов :
Вес/Hex
10
20
40
80
Обозначение
Назначение
Right
Движение
вправо
Left
Движение влево
Down
Движение вниз
Up
Движение вверх
Если в регистр устройства записать код FF, то
голова змейки возвращается в исходное
состояние, так как это показано на рисунке.
24
25.
Лабиринт, змейкаУпражнение №8. Напишите программу
snake.asm для движения змейки в
вертикальном сегменте лабиринта
AL <= FF |Змейка в исходном состоянии
Порт 04 <= AL
CL <= 09 |Движемся вниз на 9 шагов
Выполнять:
AL <= 4F |Шаг смещения
Порт 04 <= AL
CL=CL-1
Перейти Если Z = 0 Выполнять |Итерации
|закончены ?
|Два корректирующих движения
AL <= 47
Порт 04 <= AL
AL <= 47
Порт 04 <= AL
Конец
25
26.
Контрольные задания26
№1. Напишите программу для ввода с клавиатуры ЭВМ строк на
VDU. Нажатие клавиши Enter – создание новой строки. При попытке
создания четвертой строки программа завершает свою работу.
№2. Напишите программу для управления шаговым двигателем.
Для управления работой двигателя используется термостат.
При запуске программы ротор двигателя вращается против
часовой стрелки.
Если термостат зафиксировал температуру 20 градусов и выше,
то шаговый двигатель останавливается, если температура
меньше 20 градусов вращение возобновляется.
27.
Контрольные задания27
№3. Напишите программу для
вывода на цифровой дисплей показаний.
Четные номера вариантов вывод показаний с лева на право.
Программа работает циклически по циклограмме:
Вывод Первой цифры = > Задержка 20 итераций
=> Вывод второй цифры => Задержка 20 итераций =>
Сброс показаний => …
Номер
варианта
1
2
3
4
5
6
7
8
9
10
Показания
67
A0
73
FF
12
C2
45
A6
44
7E
Номер
варианта
11
12
13
14
15
16
17
18
19
20
Показания
Номер
варианта
90
0С
51
E9
28
bA
1h
HH
P2
L4
21
22
23
24
25
Показания
UA
FE
28.
Контрольные задания№4. Напишите программу для управления
работой лифта нажатием кнопок «Подъем» и
«Опускание».
№5. Напишите программу для управления
движением змейки в лабиринте.
Если сигнал светофора переключился
с желтого на зеленый, то змейка
движется по заданному маршруту.
По завершению движения сигнал
светофора переключается на «Красный».
28