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, а также закрепить их, тем самым достигнув основной цели работы. Таким образом, заданная тема реализована в полном объеме.

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

Радиотехничесакие средства
радиотехника передатчик генератор каскад Практика была организована в радиотехническом учебном центре (РТУЦ) Ленинградской военно-морской базы (ЛенВМБ), базир ...

Расчет основных характеристик усилительного каскада биполярного транзистора
транзистор усилитель каскад Целью данной курсовой работы по предмету “Схемотехника телекоммуникационных устройств” является применение знаний полученных ...

Суммирующий синхронный счетчик
В наше время проявляется тенденция к бурному развитию цифровой электроники. Курсовая работа предполагает рассмотрение и разработку такого устройства цифров ...

Меню сайта