XOB 16
SASI 0
10
LD R 3
0
EXOB
TEXT 10 "UART:9600,8,N,1;"
"MODE:MC0;"
"DIAG:F1000,R1000;"
COB 0
1
ACC E
; L'accumulatore è impostato al valore del flag E
JR H OUTRS
; Se la seriale non è impostata correttamente
salta in OUTRS
JR TEST1
CONTINUA:
STH F 1000
; F 1000 è l'indirizzo di RSBY.
; Se F 1000=H allora c'è un carattere valido
JR L FINE
SRXD 0
; Seleziona la COM1
R 2
LD R 49
; Carattere '1' TEST DEL PLC
49
LD R 42
; Carattere '*' RICHIESTA DATI
42
C1:
CMP R 2
; Confronto col carattere '*'
R 42
JR Z
DATI
CMP R 2
; Confronto col carattere '1'
R 49
JR Z
STATO
JPD FINE
;----------------------------------------------
OUTRS:
LD R 2000
131
BITO 8
R 2000
O 48
JPD FINE
;----------------------------------------------
STATO:
LD R 2
; Invio il carattere 'o'
111
; Significa che il PLC è OK
STXD 0
R 2
JPD FINE
;----------------------------------------------
DATI:
LD R 2
0
LD R 100
; Carica il registro R 100 con il valore 1
1
LD R 101
; Carica il registro R 101 con il valore 2
2
LD R 102
; Carica il registro R 102 con il valore 4
4
LD R 103
; Carica il registro R 103 con il valore 8
8
LD R 104
; Carica il registro R 104 con il valore 16
16
STH I 32
ADD R 2
R 100
R 2
STH I 33
ADD R 2
R 101
R 2
STH I 34
ADD R 2
R 102
R 2
STH I 35
ADD R 2
R 103
R 2
STH I 36
ADD R 2
R 104
R 2
STXD 0
R 2
MOV R 2
L 0
R 3
; COPIA DI R2 <=> R2=R3
L 0
JPD FINE
;----------------------------------------------
TEST1:
LD R 2
0
LD R 100
; Carica il registro R 100 con il valore 1
1
LD R 101
; Carica il registro R 101 con il valore 2
2
LD R 102
; Carica il registro R 102 con il valore 4
4
LD R 103
; Carica il registro R 103 con il valore 8
8
LD R 104
; Carica il registro R 105 con il valore 16
16
STH I 32
ADD R 2
R 100
R 2
STH I 33
ADD R 2
R 101
R 2
STH I 34
ADD R 2
R 102
R 2
STH I 35
ADD R 2
R 103
R 2
STH I 36
ADD R 2
R 104
R 2
CMP R 2
R 3
; COPIA DEGLI INGRESSI
JR Z CONTINUA
JR N CRITICO
JR P CRITICO
;----------------------------------------------
CRITICO:
LD R 2
101
; Carattere 'e'
STXD 0
R 2
; Il PLC manda la 'e'
; PLC in attesa di risposta
LOOP:
STH F 1000
; F 1000 è l'indirizzo di RSBY.
; Se F 1000=H allora c'è un carattere valido
JR L LOOP
SRXD 0
; Carattere '*' ricevuto
R 2
JPD C1
;----------------------------------------------
FINE:
ECOB