Aqui pongo el codigo, aver los fallos que encontrais. el nº de serie y el primer vector de la matriz coinciden y deberia de salir un YES, pero siempre sale yes¡¡ cambio el nº de serie de la simulacion para que salga NO¡ y tambien sale YES. me estan ayudando 3 personas mas y nada, que no sabemos donde falla:
#include <16f876.h> // Definiciones del PIC 16F876A
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT // Los Fuses de siempre
#use delay(clock=4000000) // Oscilador a 4 Mhz
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)// RS232 Estándar
#include <touch.c>
void main() {
char buffer[8];
int j,k,iguales=0,i;
char tabla[4][6]={{0x00,0x00,0x87,0x65,0x43,0x21},{0x00,0x00,0xEF,0xFF,0xFF,0xFA},{0x00,0x00,0xDF,0xFF,0xFF,0xFA},{0x00,0x00,0xCF,0xFF,0xFF,0xFA}};
printf("\r\nibutton...\r\n");
while (TRUE) {
while(!touch_present()) ;
delay_ms(200);
if(touch_present()) {
touch_write_byte(0x33);
for(i=0;i<8;++i)
buffer=touch_read_byte();
for(i=6;i!=0;i--)
printf("%2X",buffer);
printf("\r\n");
delay_ms(100);
printf("%2X%2X%2X%2X%2X%2X\r",tabla[0][0],tabla[0][1],tabla[0][2],tabla[0][3],tabla[0][4],tabla[0][5]);
delay_ms(200);
i=0;
for(j=0;j<4;j++)
{ for(k=0;k<6;k++){
if (tabla[j][k]==buffer){iguales=0; i++;}
else {iguales=1; i++;}}}
if(iguales==0){
printf("\r\nYES");
delay_ms(200);
}
else
printf("\r\nNO\r\n");
}
}
}