HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

 Cómo utilizar los pointers en C18 para direccionar arreglos; simulación utilizando MPLAB-IDE

 

 

 

El uso de pointers en C18

El lenguaje ANSI C y el compilador C18, permiten el uso de pointers ó punteros para manejar arreglos en la memoria del microcontrolador.

Para una mejor comprensión del uso de pointers, se utilizará el simulador de MPLAB IDE. El programa de prueba que se muestra en la imagen de la izquierda define primero un arreglo de 5 elementos en memoria ROM  llamado "arrayrom". A continuación, se define un arreglo en la memoria RAM llamado "arrayram". El programa utiliza una función llamada "transfer( )" para transferir cada uno de los elementos del arreglo en ROM, al arreglo en RAM.

Observe cómo el arreglo "arrayrom" se pasa como un pointer llamado *p a la función. Ya dentro de la función el pointer puede direccionar cada uno de los elementos del arreglo en ROM.  

 

USANDO EL SIMULADOR DE MPLAB IDE

Archivo fuente del programa de prueba: C18-BOLT-POINTERS-SIMULACION-MPLAB.c

Una vez que haya creado el proyecto C18 en MPLAB IDE, active el simulador con las opciones: >Debugger>Select Tool>MPLAB SIM

A continuación, compile el programa. Configure la ventana llamada "Watch" con la opción: >View>Watch. Elija y agregue las variables que desea ver en la simulación: "arrayrom", "arrayram", "p", "a". También puede ver cada uno de los 5 elementos de los arreglos seleccionados, como se muestra en la ventana a continuación.

Establezca breakpoints dando doble click en las líneas: b=0, y for (;;). Los breakpoints aparecerán como hexágonos rojos. Inicie la simulación haciendo click en la opción "Run" en el menú del simulador. La simulación se detendrá en el primer breakpoint, que muestra una flecha verde. Siga haciendo click en "Run" y se verá en la ventana "Watch" cómo cada elemento del arreglo en la memoria ROM se pasa de uno en uno al arreglo en la memoria RAM.

Nota: la línea b=0 en el programa es una expresión dummy utilizada sólo para poner un breakpoint y facilitar la simulación.

Observe en la ventana "Watch" como el pointer se creó en la dirección 240H (RAM), y que el contenido de esta dirección es 9AEH, es decir, que apunta al primer elemento del arreglo en ROM. Con el uso de un subíndice, se puede direccionar cada uno de los elementos a través de la expresión: *(p+a);

Una vez que los cinco elementos del arreglo en ROM fueron transferidos al arreglo en RAM, la simulación termina cuando la flecha verde llega al segundo breakpoint en la línea for(;;) del programa.

Si desea simular de nuevo el programa, deberá borrar la memoria RAM. Utilice: >Debugger>Clear Memory>All memory. A continuación, debe volver a compilar y repetir el procedimiento descrito anteriormente.