' Cible = 16F877A / Quartz = 4Mhz / Fuses = HS, ALLS OTHERS OFF
program base_001
'
dim colonnes as byte[8] ' on déclare un tableau de 8 octets (8x8 bits)
dim x, vitesse as byte
'
main:
' on initialise les ports du PIC
ADCON0 = %00000000 ' désactive ADC
TrisA = %00000000 ' met tous les ports A en sorties
TrisB = %00000000 ' met tous les ports B en sorties
TrisC = %00000000 ' met tous les ports C en sorties
TrisD = %00000000 ' met tous les ports D en sorties
TrisE = %00000000 ' met tous les ports E en sorties
PortA = %00000000 ' met tous les ports A à 0
PortB = %00000000 ' met tous les ports B à 0
PortC = %00000000 ' met tous les ports C à 0
PortD = %00000000 ' met tous les ports D à 0
PortE = %00000000 ' met tous les ports E à 0
' on définit un motif
colonnes[0] = %11111111 ' X X X X X X X X
colonnes[1] = %10000001 ' X 0 0 0 0 0 0 X
colonnes[2] = %10111101 ' X 0 X X X X 0 X ...ici un petit carré...
colonnes[3] = %10100101 ' X 0 X 0 0 X 0 X
colonnes[4] = %10100101 ' X 0 X 0 0 X 0 X
colonnes[5] = %10111101 ' X 0 X X X X 0 X
colonnes[6] = %10000001 ' X 0 0 0 0 0 0 X
colonnes[7] = %11111111 ' X X X X X X X X ...dans un grand carré...
' ...le programme principal...
while true '
PortB = colonnes[0]
PortD = %00000001
delay_ms(1)
PortB = colonnes[1]
PortD = %00000010
delay_ms(1)
PortB = colonnes[2]
PortD = %00000100
delay_ms(1)
PortB = colonnes[3]
PortD = %00001000
delay_ms(1)
PortB = colonnes[4]
PortD = %00010000
delay_ms(1)
PortB = colonnes[5]
PortD = %00100000
delay_ms(1)
PortB = colonnes[6]
PortD = %01000000
delay_ms(1)
PortB = colonnes[7]
PortD = %10000000
delay_ms(1)
inc(vitesse)
' l'animation du motif (défilement)
if vitesse = 31 then ' 31 x 8 x 1ms = vitesse de défilement (environ 4Hz)
x = colonnes[0]
colonnes[0] = colonnes[1] ' on décale le motif...
colonnes[1] = colonnes[2]
colonnes[2] = colonnes[3]
colonnes[3] = colonnes[4]
colonnes[4] = colonnes[5]
colonnes[5] = colonnes[6]
colonnes[6] = colonnes[7]
colonnes[7] = x ' ...en décalant ses octets
vitesse = 0
end if
wend
' ...dans une boucle infinie...
end.