AFFICHEUR LCD

Signaler
Messages postés
4
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
22 décembre 2007
-
Messages postés
4
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
22 décembre 2007
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45161-afficheur-lcd

Messages postés
4
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
22 décembre 2007

Recemment, j'ai programmé un microcontroleur pour qu'il gère un LCD. J'ai donc regardé ta source avec intéret.

Plusieurs choses me gène dans le code. Par exemple ta fonction convert, elle n'est utilisée nul part. Et puis la suite de if dedans n'est pas très belle. J'aurais plutôt mis dedans un truc du genre :
if (n >= 0 && n <=9) return n + 48;
return 0;


La fonction right n'est pas géniale non plus. Utilise plutôt l'opérateur modulo : return x % 10;


Pour la fonction left j'aurais aussi utiliser le modulo :
// suppression du chiffre des unités : x - (x % 10) ou x - right(x) pour utiliser ta fonction
// puis on divise par 10 ==> on obtient 0, 1, 2, ...
x = (x - (x % 10)) / 10;

// x est des secondes, minutes ou heures ==> sauf erreur jamais négatif et pas au dessus de 59
// donc on retourne x, ça devrait suffire.
return x;


Quand je programmais avec des outportb, j'utilisais des #define qui aide à comprendre ce qui est fait. Par exemple :
#define LPT1_DATA 888 //Adresse du bus de données
#define LPT1_STATE 889 //Adresse du registre d'état
#define LPT1_CONTROL 890 //Adresse du registre de controle
...
outportb(LPT1_CONTROL, 0x06); // ==> on voit tout de suite qu'on écrit dans le registre de controle


D'ailleur j'en profite pour poser une petite question : outportb n'est elle pas obsolete ? Cette fonction ne fonctionne plus très bien sous XP non ?