Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

19/04/2012 #1


Duda con librerias CCS
Hola gente, tengo una duda enorme y no encuentro respuesta. Resulta que quiero armar una libreria para el manejo de un integrado, el cual manejo con un pic programado en ccs.

El tema es el siguiente, como funcionan las librerias de CCS, por ejemplo cuando yo llamo a setup_adc_ports(... | ...);?

Donde esta declarada esa funcion?

Como es que paso parametros con la funcion "|" Sin importar el orden?

El tema es que yo quiero tener esa independencia. Por ejemplo la libreria del integrado maneja 4 funciones. Enable, Sleep, Mode y Phase.

Entonces yo no queiro declarar una funcino que espere 4 parametros, sino que queiro una funcion en la cual le pueda pasar uno, dos, tres o cuatro dependiendo de lo que necesite, es decir poder ahcer esto

#define EnableON 1
#define EnableOFF 0
#define Mode1 1
#define Mode0 0
#define Phase1 1
#define Phase0 0
#define Sleep 1
#define NOSleep 0

integrado(EnableON); o integrado(EnableON | Phase1); o integrado(EnableOFF | Phase0 | Mode1 | Sleep);

Espero se entienda. Desde ya muchisimas gracias!

Saludos!
21/04/2012 #2

Avatar de ByAxel

Hola:
1ro: No quiere decir que pasen varios parámetros sin importar el símbolo (|); recuerda que ese símbolo es un operador tipo (OR).

2do: Cada parámetro del CCS está previamente declarado y cada uno tiene un valor asignado, además no es cualquier valor.
Por ejemplo.

- Al utilizar setup_adc_ports(...); es una función que escribe en un registro del PIC de 1 byte(8 bits) donde se configura los pines análogos.
- Sus parámetros tienen valores distintos que (no activan ningún pin, activan un pin o una serie de pines) y cada uno es un valor distinto (ver el registro del PIC en la hoja de datos).
- Y al utlizar (|) sucede lo siguiente por ejemplo 01111000 OR 0000110 = 01111101 (primer parametro OR segundo parámetro).
- El resultado de la operación OR es la que realmente está usando la función setup_adc_ports...

3ro: Sabiendo lo anterior puedes declarar tus propios parámetros y una función donde:
Código:
void MyFunc(char dato){
        if(dato==1)
        else if(dato == 2)
        // etc, según sea el valor de entrada.
    }
* Como vez no es la gran cosa puesto que la variable de entrada 'dato' usa el resultado de OR si es que que lo hay. Esto tambien indica que se puede hacer multitud de cosas, como:

MyFunction(Suma(a, b)|Resta(c, b)); // Usando OR, AND, o el operador que quieras.


4to: Tambien puedes un valor por defecto a una dato de entrada en una función, por ejemplo:

Código:
 void MyFunction(char x, char y = 7){

   }
La funcion se puede usar de 2 formas.
- MyFunction(12, 20);
- MyFunction(12); // Aqui toma el valor por defecto de 'y' que seria 7.

Espero entiendas, un saludos.

PD: Todas las delcraciones para el PIC que uses la encuentras en el archivo de cabecera del PIC '#include <16Fxxx.h>'
21/04/2012 #3


Te agradezco muchisimo por tu respuesta! Muy bien explicado. Tanto que me di cuenta de lo totna de mi respuesta jajaja. Gracias!

Saludos, Bruno.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.