comment entrer 4 positions (allant de 0 à 8000)avec clavier, les afficher sur lcd et les comparer une par une avec des données venant d'un codeur absolu?
a mon avis il faut les enregistrer dans l'EEPROM du 16f877, puis on fait appel a la position pour la comparaison.
ce travail doit être réaliser afin de commander un moteur cc avec 16f877 dans les deux sens et en entrant des positions exacts à atteindre.
prière aidez moi

l'affichage des position est fait.et voici le programme réalisé avec picC:

#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)

#include <string.h>

#include <lcd1.c>
#include<clavier16T.c>
byte value ;

void main()
{ int8 i=1;
char *array;
char value;
char k;
char * position1[4];
char * position2[4];
char * position3[4];
char * position4[4];
unsigned char j;
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RT CC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1) ;
port_b_pullups(true);
lcd_init();
kbd_init();
lcd_gotoxy(1,1);
lcd_putc("\fwelcome in valeo...\n");
lcd_putc("enter positions");
delay_ms(2000);
start:;
{



printf(lcd_putc,"\fposition n:1\n");
DO
{
value=kbd_getc();
}while(value==0 );
lcd_putc('\f');
lcd_gotoxy(1,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='='||value=='9') goto start;

else lcd_putc(value);


write_eeprom(0X70,value);
}
do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(2,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start;

else lcd_putc(value);
write_eeprom(0X71,value);

do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(3,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start;

else lcd_putc(value);
write_eeprom(0X72,value);

do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(4,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start;

else lcd_putc(value);
write_eeprom(0X73,value);
* position1=(read_eeprom(0X70),r ead_eeprom(0X71),read_eeprom(0 X72),read_eeprom(0X73));

// attend de touche de confirmation qui est le *

lcd_putc('\n');
lcd_putc("enter or delete");

DO
{
k=kbd_getc();
if(k!=0)
if(k=='*')
goto start1;
else if(k=='+') goto start;
}
while(true);

//kbd_init();
//lcd_init();
start1:;
{



printf(lcd_putc,"\fposition n:2\n");
DO
{
value=kbd_getc();
}while(value==0 );
lcd_putc('\f');
lcd_gotoxy(1,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='='||value=='9') goto start1;

else lcd_putc(value);


write_eeprom(0X74,value);
}
do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(2,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start1;

else lcd_putc(value);
write_eeprom(0X75,value);

do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(3,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start1;
else lcd_putc(value);
write_eeprom(0X76,value);

do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(4,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start1;
else lcd_putc(value);
write_eeprom(0X77,value);
* position2=(read_eeprom(0X74),r ead_eeprom(0X75),read_eeprom(0 X76),read_eeprom(0X77));

// attend de touche de confirmation qui est le *

lcd_putc('\n');
lcd_putc("enter or delete");

DO
{
k=kbd_getc();
if(k!=0)
if(k=='*')
goto start2;
else if(k=='+') goto start1;
}
while(true);
start2:;
{



printf(lcd_putc,"\fposition n:3\n");
DO
{
value=kbd_getc();
}while(value==0 );
lcd_putc('\f');
lcd_gotoxy(1,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='='||value=='9')goto start2;
else lcd_putc(value);


write_eeprom(0X78,value);
}
do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(2,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start2;
else lcd_putc(value);
write_eeprom(0X79,value);

do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(3,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start2;
else lcd_putc(value);
write_eeprom(0X80,value);

do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(4,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start2;
else lcd_putc(value);
write_eeprom(0X81,value);
* position3=(read_eeprom(0X78) , read_eeprom(0X79) , read_eeprom(0X80) , read_eeprom(0X81));

// attend de touche de confirmation qui est le *

lcd_putc('\n');
lcd_putc("enter or delete");

DO
{
k=kbd_getc();
if(k!=0)
if(k=='*')
goto start3;
else if(k=='+') goto start2;
}
while(true);
start3:;
{



printf(lcd_putc,"\fposition n:4\n");
DO
{
value=kbd_getc();
}while(value==0 );
lcd_putc('\f');
lcd_gotoxy(1,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='='||value=='9') goto start3;
else lcd_putc(value);


write_eeprom(0X82,value);
}
do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(2,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start3;
else lcd_putc(value);
write_eeprom(0X83,value);

do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(3,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start3;
else lcd_putc(value);
write_eeprom(0X84,value);

do
{
value=kbd_getc();
}while(value==0);
lcd_gotoxy(4,1);
if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start3;
else lcd_putc(value);
write_eeprom(0X85,value);
* position4=(read_eeprom(0X82),r ead_eeprom(0X83),read_eeprom(0 X84),read_eeprom(0X85));

// attend de touche de confirmation qui est le *

lcd_putc('\n');
lcd_putc("enter or delete");

DO
{
k=kbd_getc();
if(k!=0)
if(k=='*')
{ lcd_putc('\f');
i=1;
while (i<5)
lcd_putc(position3[i]);i++;}
else if(k=='+') goto start3;
}
while(true);



lcd_putc(position3);

}
lorsque je veux récupérer la position3 de l'eeprom et l afficher ca marche pas.
je veux savoir est ce que c bien enregistrer ou nn afin de le tester apres.