Aprendiendo a programar Microcontroladores PIC en · PDF fileMicrocontroladores PIC en...

4
Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Por Andrés Raúl Bruno Saravia Entrega Nº 7. Assembler embebido Se puede insertar código en assembler mediante #asm y #endasm. Dentro de un bloque en assembler no se deben usar: Las directivas del ensamblador. las etiquetas deben acabar con : No se soporta direccionamiento indirecto. La constantes se especifican como en lenguaje C. Ejemplo: #asm //codigo en Assembler MOVLW 10 // Movemos decimal al contador MOVWF count, 0 inicio: //etiqueta NOP NOP DECFSZ count, 1, 0 //decrementamos el contador BRA inicio salir: #endasm //salimos del bloque assembler

Transcript of Aprendiendo a programar Microcontroladores PIC en · PDF fileMicrocontroladores PIC en...

Page 1: Aprendiendo a programar Microcontroladores PIC en · PDF fileMicrocontroladores PIC en Lenguaje C con CCS ... struct Reloj Time; En este caso la variable es de tipo empleado y se pueden

Aprendiendo a programarMicrocontroladores PIC enLenguaje C con CCS

Por Andrés Raúl Bruno Saravia

Entrega Nº 7.

Assembler embebido

Se puede insertar código en assembler mediante #asm y #endasm.

Dentro de un bloque en assembler no se deben usar:

• Las directivas del ensamblador.• las etiquetas deben acabar con :• No se soporta direccionamiento indirecto.• La constantes se especifican como en lenguaje C.

Ejemplo:

#asm //codigo en AssemblerMOVLW 10 // Movemos decimal al contadorMOVWF count, 0

inicio: //etiquetaNOPNOPDECFSZ count, 1, 0 //decrementamos el contadorBRA inicio

salir:#endasm //salimos del bloque assembler

Page 2: Aprendiendo a programar Microcontroladores PIC en · PDF fileMicrocontroladores PIC en Lenguaje C con CCS ... struct Reloj Time; En este caso la variable es de tipo empleado y se pueden

¿Qué son las estructuras?

Una estructura es un conjunto de variables de diferentes tipos referenciadas bajo elmismo nombre.

Ejemplo:

struct Reloj{

char hora;char minuto;char segundo;

}

De esta forma se define una estructura llamada reloj, ahora hay que declarar unavariable de este tipo:

struct Reloj Time;

En este caso la variable es de tipo empleado y se pueden acceder a los camposmiembros de la estructura de la siguiente forma:

Time.horaTime.minutoTime.segundo

Las estructuras son muy usadas para crear campos de BITS que nos permitan usar deforma individual cada uno de los BITS de los registros de funciones especiales.

¿Que son las funciones?

Las funciones son porciones de código que facilitan la claridad de desarrollo delprograma. Son similares a las subrutinas, con la diferencia que podemos pasarlesvalores para que precesen y nos pueden devolver el resultado de dichos procesamiento.

Todas las funciones retornan un valor y pueden recibir parámetros.

La estructura general de un función en C es la siguiente:

Tipo_de_retorno nombre_función (tipo param1, ..., tipo paramn)

{sentenciasreturn(valor_de_retorno);

}

Los posibles tipos de retorno son los tipos de datos ya vistos: (int, float, void, char,etc).Para crear una función en C, primero hay que declarar el prototipo de la misma antes dela función main() y luego de la llave final del programa se define la función.

Page 3: Aprendiendo a programar Microcontroladores PIC en · PDF fileMicrocontroladores PIC en Lenguaje C con CCS ... struct Reloj Time; En este caso la variable es de tipo empleado y se pueden

Ejemplo:

La siguiente función suma dos valores y retorna un resultado:

int suma(int x, int y){return x+y;}

Se retorna de una función cuando se llega a la sentencia return o cuando se encuentra lallave de cierre de la función.

Cuando lo que se desea escribir es un procedimiento que, por ejemplo, realice un delayo muestre un texto por LCD o cargue una arreglo, o sea, que no devuelva ningún valorse escribe como tipo de retorno void,( que significa tipo vacío).

Alcance de las variables:

Variable global:

Conocida por todas las funciones. Se puede utilizar en cualquier punto del programa. Sedeclara fuera del main.

Variable local:

Se declara apenas abrir una llave en el código, cuando la llave se cierra esta variabledesaparece.

Variable declarada en los parámetros formales de una función:

Tiene el mismo comportamiento de las variables locales.

Paso De Parámetros a las funciones:

Paso por valor:

Cuando se pasa un parámetro por valor a una función, la misma hace copias de lasvariables y utiliza las copias para hacer las operaciones. No se alteran los valoresoriginales, ya que cualquier cambio ocurre sobre las copias que desaparecen al terminarla función.

Ejemplo:delay_ms(100); // llamamos a la función

Page 4: Aprendiendo a programar Microcontroladores PIC en · PDF fileMicrocontroladores PIC en Lenguaje C con CCS ... struct Reloj Time; En este caso la variable es de tipo empleado y se pueden

En este ejemplo llamamos a la función delay_ms y le pasamos el valor 100, el cual seencuentra dentro del paréntesis.

Paso por referencia:

Cuando el objetivo de la función es modificar el contenido de la variable pasada comoparámetro, debe conocer la dirección de memoria de la misma. Para ello se le anteponea la variable el operador &, puesto que se le está pasando la dirección de memoria de lavariable

Ejemplo:

void calcula_voltaje (int val, float &voltaje)//funcion quecalcula el voltaje{ voltaje=(val*v_max)/escala;}

En el ejemplo de la función observamos el apuntador & que apunta a la variable voltaje,de esta forma le pasamos el valor de la variable a la posición que la misma ocupa.

ATENCIÓN: Los arrays, (entiéndase también cadenas), siempre se pasanpor referencia y no hace falta anteponerle el símbolo &, pues comohabíamos dicho el nombre de un array es un puntero al primer elemento delmismo.

Continuará ......