Ce n'est pas (encore) l'appel du 18 juin !
mais j'en appelle aux specialistes de l'ASM , pour un simple décalage de bit sur un mot de 96 bits..
pour realiser le defilement de texte , pixel by pixel sur un ensemble de 3 Matrices de 4 modules MAX7219 leds 8x8
ce qui represente un texte de 3x4x8 =96 bits de large ( matrice car 8x8) et donc 96 bytes .
ces 96 bytes organisés par 3 long de 32 bits consécutifs..
pour etre sur qu'ils le soient placés par le compilateur , et à une adresse connue , donc accessible en ASM par le compilateur en C.
usage de absolute adresse
Code : Tout sélectionner
static signed long L10 absolute 0x40;
static signed long L11 absolute 0x44;
static signed long L12 absolute 0x48;
static char Bn[12] absolute 0x040;
char * P_Byte; le langage C permet le decalage de bit , mais ne se souscie pas du report Carry bit ..
sous la forme langage C , voilà comment j'opere pour decaler 96 bits à gauche ..
mais c'est quand meme TRES LOURD.
Code : Tout sélectionner
// --- test zone ----
// init de l' ensemble pour megamot de 96 bits
L10=0x40555453; //LSB
L11=0xFFAAFF20; //MSB
L12=0x0102FF80; //HSB
for (i=0;i<12;i++)
{
Decompile_byte(Bn[i],0) ;CRLF1();
}
CRLF1(); CRLF1();
Delay_ms(3000);
P_Byte=0x000040;
for (i=0;i<12;i++)
{
ByteToHex(*(P_Byte+i),CRam1);
UART1_Write_Text(CRam1);
CRLF1();
}
Delay_ms(3000);
CRLF1(); CRLF1();
// decalage de 1 bit de l'ensemble
// visu AVANT
Binarise_32bits(L12,CRam1); UART1_Write_Text(CRam1);UART1_Write('-');
Binarise_32bits(L11,CRam1); UART1_Write_Text(CRam1);UART1_Write('-');
Binarise_32bits(L10,CRam1); UART1_Write_Text(CRam1);;CRLF1();
CRLF1();
//hypothese de depart carry=0
c1=0;
L10=L10<<1;
L10=L10 +c1;
if ((L10 & 0x8000) == 0x8000) c1=1; else c1=0;
L11=L11<<1;
L11=L11 +c1;
if ((L11 & 0x8000) == 0x8000) c1=1; else c1=0;
L12=L12<<1;
L12=L12 +c1;
// visu APRES
Binarise_32bits(L12,CRam1); UART1_Write_Text(CRam1);UART1_Write('-');
Binarise_32bits(L11,CRam1); UART1_Write_Text(CRam1);UART1_Write('-');
Binarise_32bits(L10,CRam1); UART1_Write_Text(CRam1);;CRLF1();
CRLF1();
je pense qu'une solution 100%ASM serait beaucoup plus concise et rapide ..
Si un de vous peut se pencher sur mon probleme ?je joins ici le projet MikroC complet, affichage fixe OK sur 12 matrices , mais defilement stopé sur ce probleme de decalage bit.
affichage terminal:



un peu trop épicé (trop de carry)