Bonjour;
je suis nouveau sur ce forum, je me suis inscrit pour chercher de l'aide et c'échanger les idées dans la Programmation en Pic Basic Pro.
Voilà, je travail sur un Projet " Journal lumineux à matrice de LEDs "
Mon programme est un peu lourd sur tout le temps de rafraichissement, pourtant c'est simple: je charge des registres à décalage 74LS164 monter en série, par des données lus dans une EEPROM de type 24c256 et je valide les ligne pour constituer une image fixe puis calcule le décalage des données pour créer un défilement;
voici le programme:
Code:define OSC 24 define LOADER_USED 1 INCLUDE "modedefs.bas" TRISA = %00010111 TRISB = %00000000 TRISC = %11111111 TRISD = %00000000 TRISE = %00000000 ADCON1 = 6 Addr var word value1 var byte value2 var byte value var byte DH var byte DL var byte T var word Y var word Y1 var byte clf var byte clf1 var byte N var byte H var byte X var byte j var byte W var PORtA.3 D1Reg var PORTb.4 D2Reg var PORTD.7 HReg var PORTB.5 ClkE var PORTA.1 DEE1 var PORTA.0 DEE2 var PORTA.2 Cs var PORTB.3 data @0,0,0,0,0,130,254,254,144,144 ,240,96,0,4,46,42,42,60,30,2,0 ,32,124,254,34,36,0,0,34,190,1 90,2,0,28,62,42,42,58,24,0,62, 62,32,32,30,30,0,32,124,254,34 ,36,0,28,62,42,42,58,24,0,50,3 8,46,58,50,38,0,0,0,0,0,0,0,0, 0,100,246,146,146,206,76,0,0,2 48,252,2,4,248,240,0,0,130,254 ,254,144,144,240,96,0,0 '------------------------------------------------------------------------------- '***************************** ****************************** **** StartFR: j = j + 1 if j = 2 then j = 0 clf=0 for addr = 0 to 4000 high cs n = 0 for t = addr + 40 to addr + 1 step -1 I2Cread dee1 , CLke, $a0 , t, [value1] value(n) = value1 if PortA.4 = 1 then goto Image2 if value1 = 0 then clf = clf + 1 if value1 <> 0 then clf = 0 if clf >= 80 then goto StartFR n = n +1 next t gosub F_image next addr goto StartFR '***************************** ****************************** *** '***************************** ****************************** ***** F_Image: for x = 0 to 7 high cs For n= 40 to 0 step -1 dh = value(n) dh = dh >> x if j = 0 then d1reg = dh.bit0 toggle d1reg d2reg =1 endif if j = 1 then d2reg = dh.bit0 toggle d2reg d1reg =1 endif high hreg low hreg next n PortB.0 = x.bit0 PortB.1 = x.bit1 PortB.2 = x.bit2 low cs pause 1 next x return Image2: if PortA.4 = 0 then StartFR for x = 0 to 7 high cs For n= 0 to 40 read n,dh dh = dh >> x d1reg = dh.bit0 toggle d1reg high hreg low hreg next n PortB.0 = x.bit0 PortB.1 = x.bit1 PortB.2 = x.bit2 low cs Pause 1 next x goto image2
-----