Bon voila en stage je dois realiser une interface lcd grafique évolué de A à Z (la carte gere un ecran, un clavier matriciel 5*5, 3protocoles differents de communication) et divers module secondaire.
La partie partie graphique fonctionne correctement et les protocoles sont en cour, le probleme vient de la partie la plus simple evidament

.
Je sais cela manque d'elegance et d'optimisation mais bon vu que sa refuse de marcher j'ai fais o plus simple.
Le registre.h stoke toute les adresses de mes ports, registres et mes variable globales.
Le programme rentre bien dans l'interruption lorsque l'on presse une touche mais fait n'importe quoi apres.
Le PORTC permet de scanner le clavier et le portf recupere la touche presser.
#include <registre.h>
#pragma TRAP_PROC SAVE_REGS
void interrupt ei1 (void) //declencher sur interruption clavier
{ char col,x,z,t,ligne1,ligne2;
ligne1=*PORTF&0x07; //ligne determiner
t=0x00;z=0x01;
rebond=0x0F;
clav_rebond(); // temps de rebond (52ms par defaut)
while(t<0x08)
{
t++;
*PORTC=z;
z=z*2;
Tempo_1m();
x=(*PORTF&0x07);
if(x==ligne1)
col=t; // colonne determiner
}
if(col==0x08) // si colone non trouvée
col=0;
t=Tab_clav[ligne1][col]; // transforme ligne colone en un caractere
ligne2=ligne1; // Atta le relachement de la touche
while(ligne1==ligne2)
{ ligne2=*PORTF&0x07; }
*PORTA=~*PORTA; // sert verifier que l'interuption fct (connecter à des LED)
BUFFER[Cur_buffer]=t; //affiche la lettre pressée
Cur_buffer++;
clav_rebond(); // temps de rebond (52ms par defaut)
*PORTC=0xFF;
}
shema du clavier:
PORTC(5bits)
| | | | |
OOOOO--
OOOOO--
OOOOO--Codeur 8par3 => PORTF(3bits)
OOOOO--
OOOOO--
Le debugueur de l'entreprise mais plus de 10min pour realisé juste l'initialisation

et ne gere pas les interruption donc je fais tout au filing avec mes led <_<
Si quelqu'un trouve qu'il me fasse signe.