ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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