1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
/* -ed- rien de standard, mais on dirait que ce pragma installe une ligne de code au 'vecteur 8', c'est à dire à une certaine interruption
matérielle qui est déclenchée selon des règles définies dans la doc de
ton µC */
#pragma code fonctionInterruptVectorHigh 0x08
void fonctionInterruptVectorHigh (void)
{
/* -ed- par contre, ça, bien que non standard, ça semble
être n'importe quoi. Je ne connais pas de langage assembleur
supportant goto. C'est pas jmp ?*/
_asm
goto fonctionInterrupt
_endasm
}
#pragma code
/* -ed- ceci définit la fonction qui est appelée par le 'vecteur 8' */
#pragma fonctionInterrupt
void fonctionInterrupt (void)
{
/*on met ce qu'on veut dans cette fonction, autrement dit ce que l'on veut qu'il se produise lors de l'apparition de l'interruption*/
}
int main (void)
{
/* -ed- la programmaton des registres doit plutôt se faire ci, c'est à dire dans la partie 'initialisation', celle qui n'est appelée qu'une seule fois au début du programe...
Selon la doc du µC, il doit falloir sans doute autoriser l'interruption matérielle correspondant au 'vecteur 8', régler des détails dans le genre 'déclenchement sur front ou sur niveau' etc. Je ne connais pas ce µC.
Il y a quelques principes généraux, mais le détail appartient à chaque plateforme et le langage C n'a rien à voir là-dedans...
*/
while(1)
{
/* Et "LA" c'est la grand mystere, on y met je suppose, le programme principale, met comment fait ton pour programmer le registre adequat??? comment fait on pour produire l'interruption ???
Sachant que dans mon cas ce que j'aimerais faire c'est endormir le processus avec la fonction sleep() et pouvoir le reveiller au déclenchement d'une interruption.
*/
return EXIT_SUCCESS;
} |
Partager