DETTAGLI CORSO SITE PLAYER
Tutti i documenti relativi al Corso SitePlayer sono contenuti in un file ZIP da 1,974 Mb.
Una una volta scaricato e decompresso tale file, saranno disponibili una cartella con tutto il software e l'hardware ed un file PDF contenete tutte le puntate del corso di cui presentiamo l'anteprima:
Nella cartella Corso SP1 è presente un'altra cartella con il firmware ed il software nonché il master della demoboard illustrata nel Corso. Il master è disponibile in scala 1:1 come illustrato di seguito:
Nella cartella "Firmware Corso" sono presenti altre nove cartelle contenenti i dettagli firmware e software relativi agli esempi citati nel Corso.
 
In ciascuna delle nove cartelle sono presenti i tutti i file relativi (.bas, .hex, ecc). In basso, uno dei listati presenti in questa cartella.
 

;File DEMO8.BAS

TEMP var word
TEMPLOW var TEMP.byte0
DATOIN var byte
DATOOUT var byte
INDIRIZZO var byte
FLAGOK var bit
TEMPERATURA var byte
TRIMMER var byte

'************************************************
Include "modedefs.bas"

'LED

SYMBOL LED1 = PORTC.0
SYMBOL LED2 = PORTC.1
SYMBOL LED3 = PORTC.2
SYMBOL LED4 = PORTC.3
SYMBOL LED5 = PORTC.4
SYMBOL LED6 = PORTC.5
SYMBOL LED7 = PORTC.6
SYMBOL LED8 = PORTC.7

'DIP
SYMBOL DIP1 = PORTB.0
SYMBOL DIP2 = PORTB.1
SYMBOL DIP3 = PORTB.2
SYMBOL DIP4 = PORTB.3
SYMBOL DIP5 = PORTB.4
SYMBOL DIP6 = PORTB.5
SYMBOL DIP7 = PORTB.6
SYMBOL DIP8 = PORTB.7

'Comunicazione con il Site Player
SYMBOL TX232 = PORTA.2
SYMBOL RX232 = PORTA.5

'Interrupt dal Site Player
SYMBOL INTSP = PORTA.4

'Pilotaggio PWM
symbol CCP1 = Portc.2

'******************************

'Definizione I/O

ADCON1=%00000100 'RA0,RA1 e RA3 analogici
ADCON0=%10000001

OUTPUT LED1
OUTPUT LED2
OUTPUT LED3
OUTPUT LED4
OUTPUT LED5
OUTPUT LED6
OUTPUT LED7
OUTPUT LED8

OUTPUT TX232
INPUT RX232

'Dip

INPUT DIP1
INPUT DIP2
INPUT DIP3
INPUT DIP4
INPUT DIP5
INPUT DIP6
INPUT DIP7
INPUT DIP8

'Portb coi pull up interni

OPTION_REG.7 = 0

INPUT Porta.0
INPUT Porta.1
INPUT INTSP

Output CCP1

START:
Gosub SEND20
TEMP = 0
Pause 50
'Settaggio timer TMR2 per PWM
Gosub TIMER2CONFIG
Gosub CCPCONFIG
Gosub PR2CONFIG
Pause 50
'Settaggi PWM
CCPR1L = 0
Pause 50
CCP1CON = %00001100
CCP1 = 0

Pause 100
START0:
ASM
START00
BTFSC Porta.4
Goto START00
ENDASM
INDIRIZZO = 5
Gosub SENDREADREQUEST
Pauseus 50
Gosub READDATO
If FLAGOK = 1 then
TEMP= DATOIN*255
TEMP = TEMP/100
CCPR1L = TEMPLOW
Gosub SCRIVI
Endif
Pause 100
Goto START0

'***************************************************
'Routine di invio di 20 byte 0 per inzializzazione
SEND20:
For TEMP = 1 to 20
Serout TX232,T9600,[0]
Pause 5
Next TEMP
Return
'****************************************************

'****************************************************
'Routine di scrittura di un byte
'Invia : Comando di write (128), INDIRIZZO, DATOOUT
WRITEDATO:
Pause 10
Serout TX232,T9600,[128]
Pause 5
Serout TX232,T9600,[INDIRIZZO]
Pause 5
Serout TX232,T9600,[DATOOUT]
Pause 20
Return
'*******************************************************

'*******************************************************
'Routine di richiesta di lettura di un byte
'Invia: Comando di read (192), INDIRIZZO
SENDREADREQUEST:
Pause 10
Serout TX232,T9600,[192]
Pause 5
Serout TX232,T9600,[INDIRIZZO]
Return
'*********************************************************

'*********************************************************
'Routine di lettura di un byte (dopo aver inviato
'SENDREADREQUEST
'In uscita: DATOIN, FLAGOK = 1 se è andata a buon fine la
'lettura, altrimenti 0 se è andato in timeout (300 msec)
READDATO:
FLAGOK = 0
Serin RX232,T9600,300,READDATO1,DATOIN
FLAGOK = 1
Return
READDATO1:
FLAGOK = 0
Return
'***********************************************************

'************************************************************
'Routine di configurazione modulo PWM
CCPCONFIG:
CCP1CON = %00001100
Return

TIMER2CONFIG:
T2CON = %00000101 'Timer2 ON
'Prescaler /4
Return

PR2CONFIG:
PR2 = 254
Return

'*****************************************************************
'Routine che scrive la percentuale nel SitePlayer
SCRIVI:
DATOOUT = DATOIN
INDIRIZZO = 6
Gosub WRITEDATO
Return