Informatics Point

Информатика и проектирование

Управляющая программа

EQU $0000EQU $E000EQU $FFFE

INITRG EQU $0011

;Num1 EQU $60 ;Адрес младшего байта первого числа; ;

;MOVB #$08, $60; ;MOVB #$09, $61; ;LDAA Num1+1;EQU $0020 ;Показывает на каком этаже находиться лифт;EQU $0021 ;0 - закрыто 1 - открыть дверь 2 - дверь открыта 3 - закрыть дверь;EQU $0021 ;ячейка хранящая условие перехода но более высокую скорость;EQU $0023 ;0 - низкая скорость 1 - средняя скорость;EQU $0024 ;0 - двигатель выключен 1 - двигатель включён;EQU $0025 ;0 - таймер выключен 5 - таймер равен 5 секундам;

VizovLiftaVneKabini EQU $0026EQU $0027EQU $0028

ORG RomStart

;Холодный старт. Сброс настроек. Закрыть двери. Вывести лифт на нулевой(первый этаж) уровень; : MOVB #$08, INITRG#$01, EtajGdeLift ;этаж где лифт, по умолчанию 1 этаж;#$00, TimerOtritihDverei ;по умолчанию таймер выключен, значит в переменной занесён 0;#$00, OtkritiZakritiDvery ;по умолчанию закрыты, значит в переменной занесён 0;#$00, DvigatelLifta ;по умолчанию выключен, значит в переменной занесён 0;#$00, VizovLiftaVneKabini ;по умолчанию лифт не был вызван, значит переменная равна 0;#$00, VizovLiftaVKabine ;по умолчанию лифт не был вызван, значит переменная равна 0;#$02, SkorostLifta ;Скорость лифта увеличивается если расстояние больше двух этажей;

;Основной цикл лифта;:#$05, EtajKudaNadoLifty#$01 ;Если равно 1 то нажали на кнопку вне кабиты;VizovLiftaVneKabini ;Сравниваем ячейку А с переменной вызов лифта вне кабины;VizovLifta ;Если неравны но переходим на метку VizovLifta, иначе продолжаем работу программы;#$01 ;Если равно 1 то нажали на кнопку в кабине;VizovLiftaVKabine ;Сравниваем ячейку А с переменной вызов лифта вне кабины;CikeLifta

;Вызов лифта;:EtajKudaNadoLifty ;Здесь указываем этаж на котором мы нажали кнопку вызова;EtajKudaNadoLiftyEtajGdeLift ;Вычитаем из B значение где находиться лифт, а потом заномим в Б это значение;SkorostLifta ;Сравниваем ячейку B с переменной Скорость лифта;Skorost ;Если ячейка Б больше то переходим на метку Skorost, иначе продолжаем работу программы;

JMP go2:#$01, SkorostDvijenia:

CMPA EtajGdeLift ;Сравниваем ячейку А с переменной ЭтажГдеЛифт;go ;Если неравны но переходим на метку go, иначе продолжаем работу программы;quit: EtajGdeLift ;Сравниваем ячейку А с переменной ЭтажГдеЛифт;Vverh ;Если мы находимся выше лифта то переходим на метку Vverh, иначе продолжаем работу;#$01DvigatelLifta ;Включаем двигатель, значит в переменную заносим 1;EtajGdeLift ;Опускаем лифт на один этаж;VizovLifta:#$01DvigatelLifta ;Включаем двигатель, значит в переменную заносим 1;EtajGdeLift ;Поднимаем лифт на один этаж; VizovLifta :

;Мы на нужном этаже;#$00DvigatelLifta ;Выключаем двигатель, значит в переменную заносим 0; #$01OtkritiZakritiDvery ;Хотим открыть двери лифта, значит в переменную заносим 1; #$02OtkritiZakritiDvery ;Открываем двери, значит в переменную заносим 2; #$05TimerOtritihDverei ;в таймер ввели 5 секунд; : #$00 ;Здесь указываем когда закрыть двери; TimerOtritihDverei ;Сравниваем ячейку А с переменной Таймера;goTimer ;Если неравны но переходим на метку goTimer, иначе продолжаем работу программы;

JMP TimerItsOk ;Время вышло; : DEC TimerOtritihDvereiCicleTimera : #$03

STAA OtkritiZakritiDvery ;Хотим закрыть двери, значит в переменную заносим 3;

LDAA #$00OtkritiZakritiDvery ;Закрываем двери, значит в переменную заносим 0;

JMP CikeLifta StartVector.W Lift

ЗАКЛЮЧЕНИЕ

В рамках курсовой работы была написана программа управления лифтом, которая позволяет реализовать движение лифта с этажа на этаж, а также закрывание и открывание двери. Пользователь сам решает, какой этаж ему нужен и где ему удобнее выходить. Так же у лифта мы меняем скорость его передвижения в зависимости от расположенности лифта. Чем лифт ближе, тем скорость меньше, чем дальше - тем скорость выше.

Эта курсовая работа в полной мере помогла нам разобраться с особенностями языка Assembler, а также закрепить их, тем самым достигнув основной цели работы. Таким образом, заданная тема реализована в полном объеме.

Лучшие статьи по информатике

Расчет тиристорного преобразователя
1. Техническое задание на проектирование Данные электродвигателя постоянного тока Тип двигателя РН, кВт ...

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

Проектирование источника вторичного электропитания
Научно технический прогресс в значительной мере связан с развитием радиотехники и электроники. В таких далёких от радиотехники областях, как медицина, транс ...

Меню сайта