'su bs2 sleave

valoreLuceSx VAR word  'costante per foto Sx
valoreLuceDx VAR word  'costante per foto Dx
status VAR Byte 'status da BS2E
valoreLuceSx VAR word 'costante per foto Sx
valoreLuceDx VAR word 'costante per foto Dx
work1 VAR Word 'word generica
LuceDx PIN 9 'ricettore luce destro
LuceSx PIN 10 'ricettore luce sinistro
TPin PIN 14 'Tx/Rx con BS2E
FPin PIN 15 'Feadback con BS2E
validTxRx CON $c6 'costante per verifica trasmissione 2' DeA

 

main:  
GOSUB ..........'altre rtns
GOSUB Receive 'legge status da DeA-16
IF status = 255 THEN NoStatus
BRANCH status,[...,...,...,...,...,...,Luce,...,...]
NoStatus:
GOTO main

 

Receive:
SERIN TPin\FPin, 16468, ReceiverTO, RxTimeOut,[status, work1.BYTE0] '2byte
IF work1.BYTE0 <> validTxRx THEN invalid
RETURN

TxTimeOut:
counterSTO = counterSTO +1
RETURN

RxTimeOut:
status = 255
RETURN

invalid:
status = 255
counterInv = counterInv +1  'controllo errori
RETURN


Luce:   'misura della costante di tempo per il fotoresistori
HIGH luceDx
PAUSE 3
RCTIME luceDx, 1, valoreLuceDx
HIGH luceSx
PAUSE 3
RCTIME luceSx, 1, valoreLuceSx
SEROUT TPin\FPin, 16468, SenderTO, TxTimeOut, [valoreLuceDx.BYTE0,valoreLuceDx.BYTE1, valoreLuceSx.BYTE0,valoreLuceSx.BYTE1, validTxRx]
RETURN
 

 

--------------------------------------------------------------------------------------------------

'rtn su bs2 master

work1 VAR Word 'word generica
valoreLuceSx VAR word 'costante per foto Sx
valoreLuceDx VAR word 'costante per foto Dx
TPin PIN 14 'TPin to DeA 2k
FPin PIN 15 'FPin to DeA 2k
validTxRx CON $c6 'costante per verifica trasmissione 2' DeA

 

SensoriLuce: 'misura della costante di tempo per i fotoresistori
status = 9
SEROUT TPin\FPin, 16468,[status, validTxRx] 'Send 2 byte
SERIN TPin\FPin, 16468, 500, RxTO, [valoreLuceSx.BYTE0,valoreLuceSx.BYTE1, valoreLuceDx.BYTE0,valoreLuceDx.BYTE1, work1.BYTE0] '5b.
IF work1.BYTE0 <> validTxRx THEN InvalidRx
DEBUG DEC ? valoreLuceSx, " ", DEC ? valoreLuceDx, CR
IF ABS(valoreLuceDx-valoreLuceSx) < sogliaLuce THEN avanti
IF valoreLuceDx > valoreLuceSx THEN GOTO avantiDx
IF valoreLuceSx > valoreLuceDx THEN GOTO avantiSx
GOTO avanti