ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.05.2025

Просмотров: 173

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

10 Call move.Checker

SET Y.CUR=Y.CUR+1

IF Y.CUR>Y.MAX THEN JUMP 20

JUMP 10

20 SET Y.CUR=1

SET X.CUR=X.CUR+1

IF X.CUR>X.MAX THEN JUMP 30

JUMP 10

30 Go #work

GO READY

RETURN

.End

.Program MOVE.CHECKER

C Подпрограмма для перемещения одной шашки

GO #WORK

SET X.POS = X.CUR

SET Y.POS = Y.CUR

CALL POS.XY

LOCATE FROM=POS

GONEAR FROM,50

OPEN

SPEED 50%

GOS FROM

CLOSE

GOSNEAR FROM, 50

SPEED 100%

IF IN -5 THEN JUMP 10

SET X.POS=9-X.CUR

SET Y.POS=9-Y.CUR

CALL POS.XY

LOCATE TO=POS

GONEAR TO,50

SPEED 50%

GOS TO

OPEN

GOSNEAR TO,50

CLOSE

SPEED 100%

GO #WORK

RETURN

10 PRINT ‘error: checker not grabbed’

RETURN

.End

.Program POS.XY

С Подпрограмма для вычисления координат шашки по номеру ее клетки

LOCATE CIJ = C11

10 IF X.POS <= 1 THEN JUMP 20

SHIFT CIJ = 34.5,0,0

SET X.POS = X.POS - 1

JUMP 10

20 IF Y.POS <= 1 THEN JUMP 30

SHIFT CIJ = 0,34.5,0

SET Y.POS = Y.POS - 1

JUMP 20

30 LOCATE POS = BOARD(CIJ)

RETURN

.End

.Program INIT

SPEED 100

ODELAY .5

CDELAY .5

FRAME BOARD=O,X,Y

C Включить прерывания

ENABLE INCALLS

C По появлению сигнала на входе 1 (датчик ограждения) вызвать обработчик –

C подпрограмму INTERRUPT

INCALL 1, INTERRUPT

RETURN

.End

.Program INTERRUPT

C Подпрограмма обработки прерывания

PRINT ‘interrupt’

C Ожидание, пока не исчезнет сигнал по каналу 1 (датчик ограждения)

WAIT IN -1

C Включение прерываний (были отключены при срабатывании прерывания)

ENABLE INCALLS

.End