domingo, noviembre 16, 2008

Codificador PIC16 Nemónico a Hexa y Hexa a Txt


Convertidor PIC16 Nemónico a Hexadecimal

Por la necesidad de codificar a mano las instrucciones de los PIC16 en modo hexadecimal y después de haberme equivocado al hacerlo, escribí un programa que genera la instrucción en hexa a través de una ventana de diálogo.

Solo se debe elegir la instrucción (nemónico) a emplear y sus operandos: registro f, literal k, bit a modificar o destino de la operación ALU. Al dar click en convertir, el programa genera la palabra en hexadecimal de 14 bits que se puede grabar directamente en la memoria de programa del pic.

Adjunto código fuente y ejecutable para quienes le vean utilidad al programita. Fue compilado con VBasic 2008 Express.

Ejecutable:
http://www.4shared.com/file/71823480/b6bedcef/Codificador_PIC16.html

Código fuente VB2008:
http://www.4shared.com/file/71823560/29ff9b56/Codificador_PIC16_cdigo_fuente.html

Convertidor archivo .hex a archivo .txt

Este programa se encarga de leer los archivos .hex que contienen la información a grabar de los PIC16. Extrae la memoria de programa en un archivo de texto, donde cada línea expresa la instrucción en binario del pic.

Cada línea representa la instrucción del pic16 en modo binario, teniendo por ejemplo a NOP = 00000000000000 o teniendo a SUBLW 0x00 = 11110000000000. Se respeta la posición en la memoria como en org 0x05, dejando las líneas sin código como 11111111111111, que equivale a un pic nuevo o a una instrucción ADDLW 0xFF.

¿Qué no hace el programa? No lee la EEPROM ni los fusibles de configuración del pic; tampoco identifica al pic para el que fue ensamblado.

Por ejemplo, si el código ensamblador es el siguiente...

org 0x0000
nop
return
retfie
movwf efe
clrw
...

El programa genera la siguiente salida...

00000000000000
00000000001000
00000000001001
00000010000000
00000100000011
...

Adjunto código fuente y ejecutable:
http://www.4shared.com/file/70640741/6ec22da6/Hex2TxtSan.html

Hay un bug que no supe corregir: si generan un archivo.txt con el mismo nombre por segunda vez les marca error. Solo hay que quitarle la propiedad de Solo Lectura al archivo y listo.

Más información sobre los archivos .hex de los PIC16 con el tutorial de Diego RedPic:
http://www.todopic.com.ar/foros/index.php?topic=23342.0