Je voulais tester la liaison SPI avec Mikrobasic et ça ne veut pas comme j'aimerais ...
La liaison SPI attaque 4 WS2801 DS du WS2801 pilotant chacun une LED RGB AC.
Les variables R_1 à B_4 sont déclarées comme byte.
Sur RB3 est branché une LED témoin pour voir si le programme tourne.
Merci pour vos lumières.
Edit : je ne sais pas pourquoi certaines parties du programme apparaissent en rouge.
Code : Tout sélectionner
'*************************************************************
' S/P TRANSFERT
'*************************************************************
SUB PROCEDURE TRANSFERT
SPI1_WRITE (R_1)
SPI1_WRITE (G_1)
SPI1_WRITE (B_1)
SPI1_WRITE (R_2)
SPI1_WRITE (G_2)
SPI1_WRITE (B_2)
SPI1_WRITE (R_3)
SPI1_WRITE (G_3)
SPI1_WRITE (B_3)
SPI1_WRITE (R_4)
SPI1_WRITE (G_4)
SPI1_WRITE (B_4)
END SUB
'*************************************************************
' S/P BLEU
'*************************************************************
SUB PROCEDURE BLEU
R_1 = 0
G_1 = 0
B_1 = 255
R_2 = 0
G_2 = 0
B_2 = 255
R_3 = 0
G_3 = 0
B_3 = 255
R_4 = 0
G_4 = 0
B_4 = 255
TRANSFERT
Delay_MS (10)
END SUB
'*************************************************************
' S/P ROUGE
'*************************************************************
SUB PROCEDURE ROUGE
R_1 = 255
G_1 = 0
B_1 = 0
R_2 = 255
G_2 = 0
B_2 = 0
R_3 = 255
G_3 = 0
B_3 = 0
R_4 = 255
G_4 = 0
B_4 = 0
TRANSFERT
Delay_MS (10)
END SUB
' Main program
ADCON0 = 0
PORTA = 0
PORTB = 0
INTCON = 0
ADCON1 = 7
OSCCON = %01110100
ANSEL = 0
TRISA = %00000000
TRISB = %00000010
SPI1_INIT ()
DEBUT:
for K = 0 to 4
PORTB.B3 = 0
DELAY_MS (200)
PORTB.B3 = 1
DELAY_MS (200)
next K
BLEU
DELAY_MS (500)
ROUGE
DELAY_MS (500)
GOTO DEBUT


