Hola a todos! Tengo un par de dudas sobre los .Hex... pondré un ejemplo para que podais entender mejor las preguntas; esta es la primera linea de archivo .Hex de un programa para un 16f877a:
:1000000000308A00072900000A108A100A100A118207AE .... si lo separamos en bytes tenemos(los numeros son hexadecimales...):
10 (nº bytes datos,)
0000 (direccion,doblada, del PC)
00 (los datos son para grabar)
00 30 8A 00 07 29 00 00 0A 10 8A 10 0A 11 82 07 (son los 16 bytes de datos)
AE (checksum)
La siguiente linea del archivo es: 10 0010..... lo que quiere decir que apunta a la dirección 0x08 ( 8 ) pues, como ya he comentado, las direcciones están dobladas. Con esto tenemos que los 16 bytes de datos de la primera linea representan 8 palabras de la memoria de programa del PIC, con lo que cada 2bytes representan una palabra de la memoria de programa. Mi duda es:
¿Si la longitud de palabra(memoria de programa) para el 16f877a es de 14bits.. cuales de los 16 bits/palabra que obtengo del .Hex se corresponden con los que tengo que grabar?
También tengo uns segunda duda
; he visto que en los .hex compilados con CCS, al final del archivo, incluyen una linea con el modelo al que corresponde el código(ej.: PIC16F877). Me gustaría saber si hay alguna opción en MPLAB para que el linkador haga lo mismo, pues no la he encontrado y es algo que me parece muy util a la hora de verificar que el código se corresponde con el dispositivo físico...
Gracias a todos y saludos!