list p=16XXX;Definir el PIC con el que se va a trabajar. include "P16FXXX.INC";Archivo de direcciones con su respectiva etiqueta ;Definición de variables dato equ 0x20;Asignar una dirección de memoria a la variable. ;Vectores de reset y de inicio de programa org 0 goto Inicio;Salta hacia la etiqueta 'Inicio' donde comienza org 5;el programa. ;Configuración de puertos Inicio bsfSTATUS,RP0;Se posiciona en el banco 1 de la memoria. movlw0xFF;Todos los bits de trisX en uno (1Log) configuran movwfTRISX;al puerto X como entrada. movlw0x00;Todos los bits de trisY en cero (0Log) configuran movwfTRISY;al puerto Y como salida. bcfSTATUS,RP0;Se posiciona en el banco 0 de la memoria. ;Programa Principal ciclocallleer_puerto_X;Llama a la subrutina de lectura. callconvertir_dato;Llama a la subrutina de conversión. callescribir_puerto_Y;Llama a la subrutina de escritura. gotociclo;Regresa al ciclo principal. ;*** Área de subrutinas *** ;Subrutina para leer el puerto X y guardarlo en dato. leer_puerto_X movfPOIRTX,0;Guarda el dato de entrada en el registro W. movwfdato;Envía el contenido del registro W a "dato". return;Regresa de la subrutina. ;*** Área para escribir la subrutina que convierta el dato de entrada al formato de salida*** ;Leer el valor de dato y escribirlo en el puerto Y escribir_puerto_Y movfdato,0;Envía el contenido de "dato" al registro W. movwf PORTY;Escribe en el puerto Y el código de salida. return;Regresa de la subrutina. END;Fin del programa.