Il programma, scaricabile qui, e' abbastanza leggibile.
Suggerisco di scaricarlo, aprirlo con il notepad e affiancarlo a questa finestra in modo da seguirne
la descrizione. Nei settaggi iniziali viene dichiarato questo
INCLUDE, un file in cui vengono assegnate le variabili specifiche per questo microcontrollore.
Segue l'elenco delle variabili usate con il numero di byte usato. Dopo i setteggi TRISA e TRiSB,
in cui vengono dichiarati pin di ingresso e uscita, si passa (linea 47) al settaggio dei pin.
In effetti uso queste linee per indicare la funzione dei vari pin.
Il programma inizia con il commento ;startup a cui segue l'accensione del led ed un piccolo ritardo
che serve per indicare che il programma e' partito.
Il MainLoop e' un ciclo chiuso che esce (SetDir) solo nel caso in cui sia presente una tensione sul
pin RB6, usato come clock. SetDir, che e' il nocciolo del programma, inizia cancellando
Verif1 e 2 che saranno usati per contare e dunque verificare il numero di "1" presenti nel treno
arrivato. Scorrendo il programma si vede come vengano settati i bit delle variabili e quindi
anche come e' composto il treno di bit in arrivo.
p = pinza: primo bit=muovi, secondo = apri o chiudi
dir = direzione: avanti - indietro - destra - sinistra
c = CENT: se attivato quando curva si ferma se le ruote sono allineate
a = Fast Servo: se attivato i servo si muoveranno al massimo delle loro capacita'
verif = 6 bit di verifica
Dopo la verifica si passa alla trasmissione del segnale. Un "fischio" di 35ms anticipera'
il treno trasmesso. Il motivo e' da ricercare nel sistema di controllo del robot:
quando il programma del robot sta' muovendo le ruote o i servo non puo' contemporaneamente
controllare cosa arriva all'antenna. Il programma, dunque, controllera' l'antenna, settera' i servo,
li muovera' e ricontrollera' l'antenna....
Il programma si conclude con le subroutine di timers e LoadServo.