Programando PICs CCS 07



Comments



Description

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCSPor 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 char segundo. primero hay que declarar el prototipo de la misma antes de la función main() y luego de la llave final del programa se define la función. ¿Que son las funciones? Las funciones son porciones de código que facilitan la claridad de desarrollo del programa. 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. char. La estructura general de un función en C es la siguiente: Tipo_de_retorno nombre_función (tipo param1. float. .¿Qué son las estructuras? Una estructura es un conjunto de variables de diferentes tipos referenciadas bajo el mismo nombre. } De esta forma se define una estructura llamada reloj.etc). Todas las funciones retornan un valor y pueden recibir parámetros. Para crear una función en C. Los posibles tipos de retorno son los tipos de datos ya vistos: (int. Ejemplo: struct Reloj { char hora. con la diferencia que podemos pasarles valores para que precesen y nos pueden devolver el resultado de dichos procesamiento. void. char minuto.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... Son similares a las subrutinas. . tipo paramn) { } sentencias return(valor_de_retorno). que no devuelva ningún valor se escribe como tipo de retorno void. la misma hace copias de las variables y utiliza las copias para hacer las operaciones. No se alteran los valores originales. o sea. por ejemplo. Ejemplo: delay_ms(100). cuando la llave se cierra esta variable desaparece. realice un delay o muestre un texto por LCD o cargue una arreglo. Variable local: Se declara apenas abrir una llave en el código. } Se retorna de una función cuando se llega a la sentencia return o cuando se encuentra la llave de cierre de la función. Alcance de las variables: Variable global: Conocida por todas las funciones. Variable declarada en los parámetros formales de una función: Tiene el mismo comportamiento de las variables locales. Se puede utilizar en cualquier punto del programa. int y) { return x+y. Paso De Parámetros a las funciones: Paso por valor: Cuando se pasa un parámetro por valor a una función. Se declara fuera del main. // llamamos a la función . ya que cualquier cambio ocurre sobre las copias que desaparecen al terminar la función.( que significa tipo vacío).Ejemplo: La siguiente función suma dos valores y retorna un resultado: int suma(int x. Cuando lo que se desea escribir es un procedimiento que. Continuará . pues como habíamos dicho el nombre de un array es un puntero al primer elemento del mismo. puesto que se le está pasando la dirección de memoria de la variable Ejemplo: void calcula_voltaje (int val.. siempre se pasan por referencia y no hace falta anteponerle el símbolo &. Paso por referencia: Cuando el objetivo de la función es modificar el contenido de la variable pasada como parámetro.. Para ello se le antepone a la variable el operador &. el cual se encuentra dentro del paréntesis.. (entiéndase también cadenas). de esta forma le pasamos el valor de la variable a la posición que la misma ocupa.. } En el ejemplo de la función observamos el apuntador & que apunta a la variable voltaje.. debe conocer la dirección de memoria de la misma.En este ejemplo llamamos a la función delay_ms y le pasamos el valor 100. float &voltaje)//funcion que calcula el voltaje { voltaje=(val*v_max)/escala. ATENCIÓN: Los arrays. .
Copyright © 2024 DOKUMEN.SITE Inc.