;=================================================================================;
'PICAXE_20X2
'FIRMWARE NO ***
;=================================================================================;
SETFREQ M8
SYMBOL IRT1 = PINC.5 ;REQUEST TO SEND FOR INPUT 1
SYMBOL ICT1 = C.4 ;CLEAR TO SEND FOR INPUT 1
SYMBOL IRT2 = PINC.3 ;REQUEST TO SEND FOR INPUT 2
SYMBOL ICT2 = C.2 ;CLEAR TO SEND FOR INPUT 2
SYMBOL IRT3 = PINC.0 ;REQUEST TO SEND FOR INPUT 3
SYMBOL ICT3 = C.1 ;CLEAR TO SEND FOR INPUT 3
SYMBOL IRT4 = PINB.0 ;REQUEST TO SEND FOR INPUT 4
SYMBOL ICT4 = B.1 ;CLEAR TO SEND FOR INPUT 4
SYMBOL IRT5 = PINB.3 ;REQUEST TO SEND FOR INPUT 5
SYMBOL ICT5 = B.2 ;CLEAR TO SEND FOR INPUT 5
SYMBOL IRT6 = PINB.5 ;REQUEST TO SEND FOR INPUT 6
SYMBOL ICT6 = B.4 ;CLEAR TO SEND FOR INPUT 6
SYMBOL OUT = B.7 ;OUTPUT SIGNAL ACKNOWLEDGE AND SERIAL OUT
SYMBOL IN = PINB.6 ;INPUT SIGNAL ACKNOWLEDGE AND SERIAL IN
INITIALISE:
LET B1 = 1
MAIN:
LOW ICT1
LOW ICT2
LOW ICT3
LOW ICT4
LOW ICT5
LOW ICT6
DO
IF IRT1 = 1 THEN MAIN1
IF IRT2 = 1 THEN MAIN2
IF IRT3 = 1 THEN MAIN3
IF IRT4 = 1 THEN MAIN4
IF IRT5 = 1 THEN MAIN5
IF IRT6 = 1 THEN MAIN6
LOOP
MAIN1:
HIGH ICT1
SERRXD B15, B16, B17, B18, B19
LOW ICT1
"SERTXD (B15,B16, B17, B18, B19)"
PAUSE 10
IF B15 = 0 AND B16 = 28 THEN
LET B0 = B18
GOTO PROCESS
LET B1 = B0
ELSE
SERTXD (B15,B16,B17,B18,B19,255)
ENDIF
GOTO MAIN
MAIN2:
HIGH ICT2
SERRXD [1000,MAIN], B10, B11, B12, B13, B14
LOW ICT2
IF B10 = 0 AND B11 = 12 THEN
LET B0 = B13 + 8
GOTO PROCESS
LET B1 = B0
ENDIF
GOTO MAIN
MAIN3:
HIGH ICT3
SERRXD [1000,MAIN], B10, B11, B12, B13, B14
LOW ICT3
IF B10 = 0 AND B11 = 12 THEN
LET B0 = B13 + 16
GOTO PROCESS
LET B1 = B0
ENDIF
GOTO MAIN
MAIN4:
HIGH ICT4
SERRXD [1000,MAIN], B10, B11, B12, B13, B14
LOW ICT4
IF B10 = 0 AND B11 = 12 THEN
LET B0 = B13 + 24
GOTO PROCESS
LET B1 = B0
ENDIF
GOTO MAIN
MAIN5:
HIGH ICT5
SERRXD [1000,MAIN], B10, B11, B12, B13, B14
LOW ICT5
IF B10 = 0 AND B11 = 12 THEN
LET B0 = B13 + 32
GOTO PROCESS
LET B1 = B0
ENDIF
GOTO MAIN
MAIN6:
HIGH ICT6
SERRXD [1000,MAIN], B10, B11, B12, B13, B14
LOW ICT6
IF B10 = 0 AND B11 = 12 THEN
LET B0 = B13 + 40
GOTO PROCESS
LET B1 = B0
ENDIF
GOTO MAIN
PROCESS:
SELECT CASE B0
CASE 1
CALL PREVIOUS_INPUT
CALL ON_1
SERTXD (0, 12, 0, 1, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 1, 1)
CASE 2
CALL PREVIOUS_INPUT
CALL ON_1
SERTXD (0, 12, 0, 2, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 2, 1)
CASE 3
CALL PREVIOUS_INPUT
CALL ON_1
SERTXD (0, 12, 0, 3, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 3, 1)
CASE 4
CALL PREVIOUS_INPUT
CALL ON_1
SERTXD (0, 12, 0, 4, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 4, 1)
CASE 5
CALL PREVIOUS_INPUT
CALL ON_1
SERTXD (0, 12, 0, 5, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 5, 1)
CASE 6
CALL PREVIOUS_INPUT
CALL ON_1
SERTXD (0, 12, 0, 6, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 6, 1)
CASE 7
CALL PREVIOUS_INPUT
CALL ON_1
SERTXD (0, 12, 0, 7, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 7, 1)
CASE 8
CALL PREVIOUS_INPUT
CALL ON_1
SERTXD (0, 12, 0, 8, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 8, 1)
CASE 9
CALL PREVIOUS_INPUT
CALL ON_2
SERTXD (0, 12, 0, 1, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 9, 1)
CASE 10
CALL PREVIOUS_INPUT
CALL ON_2
SERTXD (0, 12, 0, 2, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 10, 1)
CASE 11
CALL PREVIOUS_INPUT
CALL ON_2
SERTXD (0, 12, 0, 3, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 11, 1)
CASE 12
CALL PREVIOUS_INPUT
CALL ON_2
SERTXD (0, 12, 0, 4, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 12, 1)
CASE 13
CALL PREVIOUS_INPUT
CALL ON_2
SERTXD (0, 12, 0, 5, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 13, 1)
CASE 14
CALL PREVIOUS_INPUT
CALL ON_2
SERTXD (0, 12, 0, 6, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 14, 1)
CASE 15
CALL PREVIOUS_INPUT
CALL ON_2
SERTXD (0, 12, 0, 7, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 15, 1)
CASE 16
CALL PREVIOUS_INPUT
CALL ON_2
SERTXD (0, 12, 0, 8, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 16, 1)
CASE 17
CALL PREVIOUS_INPUT
CALL ON_3
SERTXD (0, 12, 0, 1, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 17, 1)
CASE 18
CALL PREVIOUS_INPUT
CALL ON_3
SERTXD (0, 12, 0, 2, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 18, 1)
CASE 19
CALL PREVIOUS_INPUT
CALL ON_3
SERTXD (0, 12, 0, 3, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 19, 1)
CASE 20
CALL PREVIOUS_INPUT
CALL ON_3
SERTXD (0, 12, 0, 4, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 20, 1)
CASE 21
CALL PREVIOUS_INPUT
CALL ON_3
SERTXD (0, 12, 0, 5, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 21, 1)
CASE 22
CALL PREVIOUS_INPUT
CALL ON_3
SERTXD (0, 12, 0, 6, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 22, 1)
CASE 23
CALL PREVIOUS_INPUT
CALL ON_3
SERTXD (0, 12, 0, 7, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 23, 1)
CASE 24
CALL PREVIOUS_INPUT
CALL ON_3
SERTXD (0, 12, 0, 8, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 24, 1)
CASE 25
CALL PREVIOUS_INPUT
CALL ON_4
SERTXD (0, 12, 0, 1, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 25, 1)
CASE 26
CALL PREVIOUS_INPUT
CALL ON_4
SERTXD (0, 12, 0, 2, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 26, 1)
CASE 27
CALL PREVIOUS_INPUT
CALL ON_4
SERTXD (0, 12, 0, 3, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 27, 1)
CASE 28
CALL PREVIOUS_INPUT
CALL ON_4
SERTXD (0, 12, 0, 4, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 28, 1)
CASE 29
CALL PREVIOUS_INPUT
CALL ON_4
SERTXD (0, 12, 0, 5, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 29, 1)
CASE 30
CALL PREVIOUS_INPUT
CALL ON_4
SERTXD (0, 12, 0, 6, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 30, 1)
CASE 31
CALL PREVIOUS_INPUT
CALL ON_4
SERTXD (0, 12, 0, 7, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 31, 1)
CASE 32
CALL PREVIOUS_INPUT
CALL ON_4
SERTXD (0, 12, 0, 8, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 32, 1)
CASE 33
CALL PREVIOUS_INPUT
CALL ON_5
SERTXD (0, 12, 0, 1, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 33, 1)
CASE 34
CALL PREVIOUS_INPUT
CALL ON_5
SERTXD (0, 12, 0, 2, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 34, 1)
CASE 35
CALL PREVIOUS_INPUT
CALL ON_5
SERTXD (0, 12, 0, 3, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 35, 1)
CASE 36
CALL PREVIOUS_INPUT
CALL ON_5
SERTXD (0, 12, 0, 4, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 36, 1)
CASE 37
CALL PREVIOUS_INPUT
CALL ON_5
SERTXD (0, 12, 0, 5, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 37, 1)
CASE 38
CALL PREVIOUS_INPUT
CALL ON_5
SERTXD (0, 12, 0, 6, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 38, 1)
CASE 39
CALL PREVIOUS_INPUT
CALL ON_5
SERTXD (0, 12, 0, 7, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 39, 1)
CASE 40
CALL PREVIOUS_INPUT
CALL ON_5
SERTXD (0, 12, 0, 8, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 40, 1)
CASE 41
CALL PREVIOUS_INPUT
CALL ON_6
SERTXD (0, 12, 0, 1, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 41, 1)
CASE 42
CALL PREVIOUS_INPUT
CALL ON_6
SERTXD (0, 12, 0, 2, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 42, 1)
CASE 43
CALL PREVIOUS_INPUT
CALL ON_6
SERTXD (0, 12, 0, 3, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 43, 1)
CASE 44
CALL PREVIOUS_INPUT
CALL ON_6
SERTXD (0, 12, 0, 4, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 44, 1)
CASE 45
CALL PREVIOUS_INPUT
CALL ON_6
SERTXD (0, 12, 0, 5, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 45, 1)
CASE 46
CALL PREVIOUS_INPUT
CALL ON_6
SERTXD (0, 12, 0, 6, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 46, 1)
CASE 47
CALL PREVIOUS_INPUT
CALL ON_6
SERTXD (0, 12, 0, 7, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 47, 1)
CASE 48
CALL PREVIOUS_INPUT
CALL ON_6
SERTXD (0, 12, 0, 8, 1)
SEROUT OUT, T9600_8, (0, 12, 0, 48, 1)
ELSE
SERTXD (0, 0, 0, 0, 2)
ENDSELECT
GOTO MAIN
PREVIOUS_INPUT:
SELECT CASE B1
CASE 1 TO 8
GOSUB OFF_1
CASE 9 TO 16
GOSUB OFF_2
CASE 17 TO 24
GOSUB OFF_3
CASE 25 TO 32
GOSUB OFF_4
CASE 33 TO 40
GOSUB OFF_5
CASE 41 TO 48
GOSUB OFF_6
ENDSELECT
RETURN
OFF_1:
HIGH ICT1
DO WHILE IRT1 = 0
LOOP UNTIL IRT1 = 1
LOW ICT1
SERTXD (0,12,0,0,0)
RETURN
OFF_2:
HIGH ICT2
DO WHILE IRT2 = 0
LOOP UNTIL IRT2 = 1
LOW ICT2
SERTXD (0,12,0,0,0)
RETURN
OFF_3:
HIGH ICT3
DO WHILE IRT3 = 0
LOOP UNTIL IRT3 = 1
LOW ICT3
SERTXD (0,12,0,0,0)
RETURN
OFF_4:
HIGH ICT4
DO WHILE IRT4 = 0
LOOP UNTIL IRT4 = 1
LOW ICT4
SERTXD (0,12,0,0,0)
RETURN
OFF_5:
HIGH ICT5
DO WHILE IRT5 = 0
LOOP UNTIL IRT5 = 1
LOW ICT5
SERTXD (0,12,0,0,0)
RETURN
OFF_6:
HIGH ICT6
DO WHILE IRT6 = 0
LOOP UNTIL IRT6 = 1
LOW ICT6
SERTXD (0,12,0,0,0)
RETURN
ON_1:
HIGH ICT1
DO WHILE IRT1 = 0
LOOP UNTIL IRT1 = 1
LOW ICT1
RETURN
ON_2:
HIGH ICT2
DO WHILE IRT2 = 0
LOOP UNTIL IRT2 = 1
LOW ICT2
RETURN
ON_3:
HIGH ICT3
DO WHILE IRT3 = 0
LOOP UNTIL IRT3 = 1
LOW ICT3
RETURN
ON_4:
HIGH ICT4
DO WHILE IRT4 = 0
LOOP UNTIL IRT4 = 1
LOW ICT4
RETURN
ON_5:
HIGH ICT5
DO WHILE IRT5 = 0
LOOP UNTIL IRT5 = 1
LOW ICT5
RETURN
ON_6:
HIGH ICT6
DO WHILE IRT6 = 0
LOOP UNTIL IRT6 = 1
LOW ICT6
RETURN