;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
|