Anda di halaman 1dari 4

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Por Andrs Ral Bruno Saravia

Entrega N 7.

Assembler embebido
Se puede insertar cdigo 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

Qu son las estructuras?


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

Ejemplo:
struct Reloj { char hora; char minuto; char segundo; } De esta forma se define una estructura llamada reloj, ahora hay que declarar una variable de este tipo: struct Reloj Time; En este caso la variable es de tipo empleado y se pueden acceder a los campos miembros de la estructura de la siguiente forma: Time.hora Time.minuto Time.segundo Las estructuras son muy usadas para crear campos de BITS que nos permitan usar de forma individual cada uno de los BITS de los registros de funciones especiales.

Que son las funciones?


Las funciones son porciones de cdigo que facilitan la claridad de desarrollo del programa. Son similares a las subrutinas, con la diferencia que podemos pasarles valores para que precesen y nos pueden devolver el resultado de dichos procesamiento. Todas las funciones retornan un valor y pueden recibir parmetros. La estructura general de un funcin en C es la siguiente:
Tipo_de_retorno nombre_funcin (tipo param1, ..., tipo paramn) { } sentencias return(valor_de_retorno);

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

Ejemplo:
La siguiente funcin suma dos valores y retorna un resultado: int suma(int x, int y) { return x+y; } Se retorna de una funcin cuando se llega a la sentencia return o cuando se encuentra la llave de cierre de la funcin. Cuando lo que se desea escribir es un procedimiento que, por ejemplo, realice un delay o muestre un texto por LCD o cargue una arreglo, o sea, que no devuelva ningn valor se escribe como tipo de retorno void,( que significa tipo vaco).

Alcance de las variables:


Variable global:
Conocida por todas las funciones. Se puede utilizar en cualquier punto del programa. Se declara fuera del main.

Variable local:
Se declara apenas abrir una llave en el cdigo, cuando la llave se cierra esta variable desaparece.

Variable declarada en los parmetros formales de una funcin:


Tiene el mismo comportamiento de las variables locales.

Paso De Parmetros a las funciones: Paso por valor:


Cuando se pasa un parmetro por valor a una funcin, la misma hace copias de las variables y utiliza las copias para hacer las operaciones. No se alteran los valores originales, ya que cualquier cambio ocurre sobre las copias que desaparecen al terminar la funcin. Ejemplo: delay_ms(100); // llamamos a la funcin

En este ejemplo llamamos a la funcin delay_ms y le pasamos el valor 100, el cual se encuentra dentro del parntesis.

Paso por referencia:


Cuando el objetivo de la funcin es modificar el contenido de la variable pasada como parmetro, debe conocer la direccin de memoria de la misma. Para ello se le antepone a la variable el operador &, puesto que se le est pasando la direccin de memoria de la variable

Ejemplo: void calcula_voltaje (int val, float &voltaje)//funcion que calcula el voltaje { voltaje=(val*v_max)/escala; } En el ejemplo de la funcin observamos el apuntador & que apunta a la variable voltaje, de esta forma le pasamos el valor de la variable a la posicin que la misma ocupa.

ATENCIN: Los arrays, (entindase tambin cadenas), siempre se pasan por referencia y no hace falta anteponerle el smbolo &, pues como habamos dicho el nombre de un array es un puntero al primer elemento del mismo.
Continuar ......

Anda mungkin juga menyukai