' Cible = 16F877A / Quartz = 4Mhz / Fuses = HS, ALLS OTHERS OFF
program base_000
'
dim colonnes as byte[8] ' on déclare un tableau de 8 octets (8x8 bits)
'
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)
  wend
' ...dans une boucle infinie...
end.