Normalement on met "int main". Je pense que c'est surtout pour des raisons historiques, car on peut avoir besoin de tester si le programme s'est bien exécuté. Pour ce faire, il suffit de tester la valeur entière retournée par le main. Si c'est 0 c'est que tout s'est bien passé, sinon c'est qu'il y a eu une erreur.
Le "void main" marche aussi en principe.
ea = input (ER_A);
Je ne sais pas ce que signifient exactement ea ou ER_A dans le contexte de ton programme, mais cette ligne signifie que tu vas récupérer l'entrée ER_A de la carte et la mettre dans la variable ea de ton programme.
int8 x=0;
Ca veut simplement dire que tu déclares une variable entière x et que tu l'initialises avec la valeur 0.
Le 8 du int8 signifie que l'entier est codé sur 8 bits, soit 1 octet.
Par défaut les entiers sont souvent codés sur 4 octets.
return x;
C'est pas du tout ce que tu crois !
Le return définit la valeur de retour de ta fonction.
Comme tu as défini ta fonction par : int8 encodeur(), sa valeur de retour doit être un int8.
En gros une fonction en informatique c'est un peu comme une fonction mathématique :
— elle peut prendre des données en entrée (ici la tienne n'a pas d'entrée, mais elle récupère des inputs donc ça revient au même),
— elle effectue un calcul à partir de ces entrées,
— elle renvoie le résultat du calcul.
Dans ta fonction, tu renvoies la valeur de x. C'est correct car x a bien été défini comme étant de type int8.
D'ailleurs quand je parlais du "int main" un peu plus haut : c'est la même chose. A la fin de ton main tu peux mettre if(le programme s'est bien exécuté) return 0 else return -1
Ainsi, le type qui a demandé l'exécution de ton programme pourra savoir si tout s'est bien passé.
J'espère que j'ai éclairé ta LED ^^.