' 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.