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 bsf STATUS,RP0 ;Se posiciona en el banco 1 de la memoria. movlw 0xFF ;Todos los bits de trisX en uno (1Log) configuran movwf TRISX ;al puerto X como entrada. movlw 0x00 ;Todos los bits de trisY en cero (0Log) configuran movwf TRISY ;al puerto Y como salida. bcf STATUS,RP0 ;Se posiciona en el banco 0 de la memoria. ;Programa Principal ciclo call leer_puerto_X ;Llama a la subrutina de lectura. call convertir_dato ;Llama a la subrutina de conversión. call escribir_puerto_Y ;Llama a la subrutina de escritura. goto ciclo ;Regresa al ciclo principal. ;*** Área de subrutinas *** ;Subrutina para leer el puerto X y guardarlo en dato. leer_puerto_X movf POIRTX,0 ;Guarda el dato de entrada en el registro W. movwf dato ;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 movf dato,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.