различные ДЗ (CHECK)

Посмотреть архив целиком

.Program CHECK

C ---------------------------------------------------

C Программа управления роботом РМ-01 для игры в шашки

C ---------------------------------------------------

C Выполняемые фрагменты:

C 1 GO.HOME - выйти в исходное положение

C 2 SET.SPEED - установить скорость движения робота

C 3 TAKE - взять шашку и убрать в коробку

C 4 REPLACE - переставить шашку

C 5 GIVE - взять и передать шашку другому роботу

C 6 PUT - взять шашку у другого робота и поставить

C 7 Exit - выход из программы

C

C Инициализация

CALL INIT

C

GO READY

GO #READY0

GO #SPACE

GO #HOME

OPEN

C

PRINT 'Robot is ready'

C ==> ЭВМ

SET MARKER. = NULL.

CALL TRANSC.

C Ошибка

RETURN

C ------

10 PRINT '$'

C <==> ЭВМ - ожидание команды

CALL SWITCH.

JUMP 101

JUMP 10

C 1 фрагмент

CALL GO.HOME

JUMP 101

JUMP 10

C 2 фрагмент

CALL SET.SPEED

JUMP 101

JUMP 10

C 3 фрагмент

CALL TAKE

JUMP 101

JUMP 10

C 4 фрагмент

CALL REPLACE

JUMP 101

JUMP 10

C 5 фрагмент

CALL GIVE

JUMP 101

JUMP 10

C 6 фрагмент

CALL PUT

JUMP 101

JUMP 10

C 7 фрагмент - выход из программы

GO #SPACE

GO #READY0

GO READY

RETURN

C ------

C

101 CALL ERROR.

JUMP 10

.End

C

C==============================================================

C Рабочие фрагменты C==============================================================

C

.Program GO.HOME

C --------------------------

C 1 Выйти в исходное положение

C --------------------------

C Параметров нет

C

PRINT 'Go home position'

ENABLE INCALLS

OPEN

GO #SPACE

GO #HOME

DISABLE INCALLS

C ==> ЭВМ

SET MARKER. = NULL.

CALL TRANSC.

JUMP 101

C

RETURN 1

C Ошибка

101 RETURN

.End

C

.Program SET.SPEED

C ---------------------------------------

C 2 Установить скорость движения робота (%)

C ---------------------------------------

C Параметр:

C PAR1. - относительная скорость робота (1%-300%)

C

PRINT 'Set speed % ',PAR1.

IF PAR1. < 1 THEN JUMP 102

IF PAR1. > 300 THEN JUMP 102

SET SPEED = PAR1.

SPEED% SPEED

C ==> ЭВМ

SET MARKER. = NULL.

CALL TRANSC.

JUMP 101

C

RETURN 1

C Ошибка в параметре

102 SET ERRORW. = ER1

C ==> ЭВМ

SET MARKER. = ERRORW.

CALL TRANSC.

JUMP 101

C Ошибка

101 RETURN

.End

C

.Program TAKE

C ------------------------------

C 3 Взять шашку и убрать в коробку

C ------------------------------

C Параметры:

C PAR1. - номер позиции X на доске (1-8)

C PAR2. - номер позиции Y на доске (1-8)

C

PRINT 'Take off checker'

PRINT PAR1.

PRINT PAR2.

C

SET PAR1 = PAR1.

SET PAR2 = PAR2.

C Вычислить координаты шашки

CALL POS.XY

JUMP 102

C Взять шашку

ENABLE INCALLS

GO #WAIT

OPEN

C Ожидание освобождения рабочей зоны

WAIT IN I.WORK.N

C Занять рабочую зону

OUT O.WORK.Y

C

GO #WORK

GONEAR POS,30

SPEED% 100

SPEED NEXT 50

GOS POS

CLOSE

SPEED% SPEED

GOSNEAR POS,30

GO #WORK

GO #SPACE

C Освободить рабочую зону

OUT O.WORK.N

C

GO #PUT

GONEAR #BOX,100

SPEED% 100

SPEED NEXT 100

GOS #BOX

DELAY 0.5

OPEN

SPEED% SPEED

GOSNEAR #BOX,100

GO #PUT

GO #SPACE

GO #HOME

DISABLE INCALLS

C ==> ЭВМ

100 SET MARKER. = NULL.

CALL TRANSC.

JUMP 101

C

RETURN 1

C ==> ЭВМ

102 SET MARKER. = ERRORW.

CALL TRANSC.

JUMP 101

C Ошибка

101 RETURN

.End

C

.Program REPLACE

C -----------------

C 4 Переставить шашку

C -----------------

C Параметры:

C PAR1. - номер исходной позиции X на доске (1-8)

C PAR2. - номер исходной позиции Y на доске (1-8)

C PAR3. - номер конечной позиции X на доске (1-8)

C PAR4. - номер конечной позиции Y на доске (1-8)

C

PRINT 'Replace chacker'

PRINT PAR1.

PRINT PAR2.

PRINT PAR3.

PRINT PAR4.

C Начальные координаты шашки

SET PAR1 = PAR1.

SET PAR2 = PAR2.

C Вычислить координаты шашки

CALL POS.XY

JUMP 102

C

LOCATE POS1 = POS

C Конечные координаты шашки

SET PAR1 = PAR3.

SET PAR2 = PAR4.

C Вычислить координаты шашки

CALL POS.XY

JUMP 102

C Взять шашку

ENABLE INCALLS

GO #WAIT

OPEN

C Ожидание освобождения рабочей зоны

WAIT IN I.WORK.N

C Занять рабочую зону

OUT O.WORK.Y

C

GO #WORK

GONEAR POS1,30

SPEED% 100

SPEED NEXT 50

GOS POS1

CLOSE

SPEED% SPEED

GOSNEAR POS1,30

C

GONEAR POS,30

SPEED% 100

SPEED NEXT 50

GOS POS

GOSNEAR ,-1

DELAY 0.5

OPEN

SPEED% SPEED

GOSNEAR POS,30

GO #WORK

GO #SPACE

C Освободить рабочую зону

OUT O.WORK.N

C

GO #HOME

DISABLE INCALLS

C ==> ЭВМ

100 SET MARKER. = NULL.

CALL TRANSC.

JUMP 101

C

RETURN 1

C ==> ЭВМ

102 SET MARKER. = ERRORW.

CALL TRANSC.

JUMP 101

C Ошибка

101 RETURN

.End

C

.Program GIVE

C -------------------------------------

C 5 Взять и передать шашку другому роботу

C -------------------------------------

C Параметры:

C PAR1. - номер позиции X на доске (1-8)

C PAR2. - номер позиции Y на доске (1-8)

C

PRINT 'Give checker'

PRINT PAR1.

PRINT PAR2.

C

SET PAR1 = PAR1.

SET PAR2 = PAR2.

C Вычислить координаты шашки

CALL POS.XY

JUMP 102

C Взять шашку

ENABLE INCALLS

GO #WAIT

OPEN

C Ожидание освобождения рабочей зоны

WAIT IN I.WORK.N

C Занять рабочую зону

OUT O.WORK.Y

C

GO #WORK

GONEAR POS,30

SPEED% 100

SPEED NEXT 50

GOS POS

CLOSE

SPEED% SPEED

GOSNEAR POS,30

GO #WORK

GO #SPACE

C Освободить рабочую зону

OUT O.WORK.N

C

GO #GIVE

GONEAR #MEET,150

C Ожидание другого робота

WAIT IN I.MEET.Y

C

SPEED% 100

SPEED NEXT 100

GOS #MEET

C Выход в зону встречи

OUT O.MEET.Y

SPEED% SPEED

C Ожидание другого робота

WAIT IN I.MEET.N

C

DELAY 0.5

OPEN

GOSNEAR #MEET,150

C Выход из зоны встречи

OUT O.MEET.N

C

GO #GIVE

GO #SPACE

GO #HOME

DISABLE INCALLS

C ==> ЭВМ

100 SET MARKER. = NULL.

CALL TRANSC.

JUMP 101

C

RETURN 1

C ==> ЭВМ

102 SET MARKER. = ERRORW.

CALL TRANSC.

JUMP 101

C Ошибка

101 RETURN

.End

C

.Program PUT

C ----------------------------------------

C 6 Взять шашку у другого робота и поставить

C ----------------------------------------

C Параметры:

C PAR1. - номер позиции X на доске (1-8)

C PAR2. - номер позиции Y на доске (1-8)

C

PRINT 'Take and put checker'

PRINT PAR1.

PRINT PAR2.

C

SET PAR1 = PAR1.

SET PAR2 = PAR2.

C Вычислить координаты шашки

CALL POS.XY

JUMP 102

C

ENABLE INCALLS

GO #SPACE

GO #GIVE

GONEAR #MEET,150

C Выход в зону встречи

OUT O.MEET.Y

OPEN

C Ожидание другого робота

WAIT IN I.MEET.Y

C

SPEED% 100

SPEED NEXT 100

GOS #MEET

CLOSE

SPEED% SPEED

C Схватил шашку

OUT O.MEET.N

C Ожидание другого робота

WAIT IN I.MEET.N

C

GOSNEAR #MEET,150

GO #GIVE

GO #SPACE

C Положить шашку

GO #WAIT

C Ожидание освобождения рабочей зоны

WAIT IN I.WORK.N

C Занять рабочую зону

OUT O.WORK.Y

C

GO #WORK

GONEAR POS,30

SPEED% 100

SPEED NEXT 50

GOS POS

GOSNEAR ,-1

DELAY 0.5

OPEN

SPEED% SPEED

GOSNEAR POS,30

GO #WORK

GO #SPACE

C Освободить рабочую зону

OUT O.WORK.N

C

GO #HOME

DISABLE INCALLS

C ==> ЭВМ

100 SET MARKER. = NULL.

CALL TRANSC.

JUMP 101

C

RETURN 1

C ==> ЭВМ

102 SET MARKER. = ERRORW.

CALL TRANSC.

JUMP 101

C Ошибка

101 RETURN

.End

C C++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ C Подпрограммы C++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ C C============================================================== .Program POS.XY

C --------------------------

C Вычислить координаты шашки

C --------------------------

C Параметры:

C PAR1 - номер позиции X на доске (1-8)

C PAR2 - номер позиции Y на доске (1-8)

C

IF PAR1 < 1 THEN JUMP 102

IF PAR1 > 8 THEN JUMP 102

C

IF PAR2 < 1 THEN JUMP 102

IF PAR2 > 8 THEN JUMP 102

C

LOCATE CIJ = C00

C

10 IF PAR1 <= 1 THEN JUMP 20

SHIFT CIJ = 34.5

SET PAR1 = PAR1 - 1

JUMP 10

C

20 IF PAR2 <= 1 THEN JUMP 30

SHIFT CIJ = ,34.5

SET PAR2 = PAR2 - 1

JUMP 20

C

30 LOCATE POS = CHECK(CIJ)

RETURN 1

C

102 SET ERRORW. = ER1

C Ошибка в параметрах

101 RETURN

.End

C C############################################################## .Program ALARM

C ----------------------------

C Прерывание по датчику аварии

C ----------------------------

C

PRINT 'ALARM'

C

WAIT IN I.ALARM.N

C

STOP 'Continue ?'

C

ENABLE INCALLS

RETURN

.End C############################################################## C C============================================================== .Program INIT

C ------------------------------------

C Инициализация программы игры в шашки

C ------------------------------------

C

C Инициализация последовательного порта

CALL INID2.

C

C************ Технологические входы / выходы **************** C

OUTGROUP 1 = 0

OUTGROUP 2 = 0

C

C--------------------------- Входы ---------------------------- C Авария

C да

SET I.ALARM.Y = 15

C нет

SET I.ALARM.N = -15

C Рабочая зона

C занята

SET I.WORK.Y = 14

C свободна

SET I.WORK.N = -14

C Ожидание другого робота

C 1

SET I.MEET.Y = 13

C 0

SET I.MEET.N = -13

C

C--------------------------- Выходы --------------------------- C Рабочая зона

C занять

SET O.WORK.Y = 14

C освободить

SET O.WORK.N = -14

C Сигналы другому роботу

C 1

SET O.MEET.Y = 13

C 0

SET O.MEET.N = -13

C C************************************************************** C

SPEED 166

ODELAY 1

CDELAY 1

TOOL

FRAME CHECK = O,X,Y

C

C*************************** Ошибки ************************* C Неверный параметр (A)

SET ER1 = 65

C

C************************* Переменные *********************** C

C Временные: PAR1, PAR2,

C Число фрагментов

SET MAX.FR. = 7

C Текущая относительная скорость робота

SET SPEED = 200

SPEED% SPEED

C

INCALL I.ALARM.Y, ALARM

RETURN

C ------

C

C************************* Положения ************************ C Обучаемые:

C #READY0 - начальное положение после READY

C #SPACE - переходное положение

C #HOME - исходное положение

C #BOX - коробка для шашек

C O - начало системы координат доски

C X - ось X доски

C Y - ось Y доски

C #PUT - положение над стержнями

C #WAIT - положение у рабочей зоны

C #WORK - положение над доской

C #MEET - положение для передачи шашки

C #GIVE - исходное положение для передачи шашки

C C00 - первая шашка в системе координат доски

C Вычисляемые:

C CHECK, CIJ, POS, POS1

.End


Случайные файлы

Файл
122829.rtf
114742.rtf
114689.rtf
ITALY.DOC
2.DOC




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.