AFFICHEUR LCD

Braiman Messages postés 4 Date d'inscription mardi 1 juillet 2003 Statut Membre Dernière intervention 22 décembre 2007 - 22 déc. 2007 à 15:53
Braiman Messages postés 4 Date d'inscription mardi 1 juillet 2003 Statut Membre Dernière intervention 22 décembre 2007 - 22 déc. 2007 à 15:53
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

Braiman Messages postés 4 Date d'inscription mardi 1 juillet 2003 Statut Membre Dernière intervention 22 décembre 2007
22 déc. 2007 à 15:53
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 ?
Rejoignez-nous