TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Cryn en 14 de Mayo de 2006, 17:11:25
-
Hola saludos a todos, tengo una duda al programar en ccs, hago una función que me provoca un error, "Expression must evaluate to a constant"
la funcion es:
void parpadeo(int pin)
{
output_high(pin);
delay_ms(250);
output_low(pin);
delay_ms(250);
}
donde pin es el pin en el cual se realizará el parpadeo, que es enviado por el prog principal, por ejemplo:
parpadeo(PIN_A5);
que falta en esta función o que debo corregir para que funcione??? intente varias cosas y no me funciona, por si fuera necesario defini con set_tris_x cuales serian entradas y todo, no me olvide de nada creo, ni del clock, ni fuses, talvez algo incorrecto, ayuda por favor!
y tengo otro problema, hago parpadear RA4, y al momento de la simulación en proteus, el led conectado en RA4 no parpadea, le di en el programa un valor alto al principio y tampoco encendía, que debo hacer para que funcione??
trabajo con el pic16f877a
muchas gracias por la ayuda, chao.
-
Hola amigo,
Dos tips para que salgas del yoyo en que te metistes.... para poder configurar el púerto A debes meterte con el registro ADCON1 (Analog To Digital Register Control 1), en el cual le dices al pic que tu puerto A sera utilizado como entradas y salidas digitales, porque recuerda que siempre que se enciende el pic, o lo rteseteas el puerto A se coloca como entradas todas y analógicas.... abajao te coloco en assembled como configurar el puerto A:
BSF STATUS,RP0 ;CAMBIO A BANCO 1
MOVLW B'000000' ;todo el puerto A colocado como salida
MOVWF TRISA
MOVLW b'10000110' ;TODAS DOGITAL I/O, A0-A5= I/O DIGITAL
MOVWF ADCON1
BCF STATUS,RP0 ;CAMBIO A BANCO 0
Por último recuerda que el RA4 es un pin que se mantiene como colector abierto, pór lo tanto debes colocarle una resistencia de Pull UP para que puedas ver el led encender..¡¡¡
Suerte...¡¡¡¡
-
Hola Cryn!
En tu función 'void parpadeo(int pin)' el parametro que espera recibir cuando la llamas es un INT. No se yo que puede interpretar el compilador si en lugar de pasarle un númerode 8 bits le pasas 'PIN_A5'.
En referencia al problema que comentas del RA4 mira esto:
http://www.todopic.com.ar/foros/index.php?topic=8121.0
Mucha suerte!
Un saludo desde Alicante.
-
Si, ya logre solucionar el problema en RA4, muy similar a la forma en la cual explican por el enlace que me dejaste, muchas gracias; en cuanta a la funcion que quiero crear, es que la usare muchas veces, por eso quiero crearla, para evitar mucho codigo, pero el complilador no me lo permite, y si se fijan en el archivo de definicines (16f877a.h):
#define PIN_A0 40
#define PIN_A1 41
#define PIN_A2 42
#define PIN_A3 43
#define PIN_A4 44
#define PIN_A5 45
#define PIN_B0 48
#define PIN_B1 49
#define PIN_B2 50
#define PIN_B3 51
#define PIN_B4 52
#define PIN_B5 53
#define PIN_B6 54
#define PIN_B7 55
por ejemplo, para mi esos son bytes, verdad?? ayuda porfavor, se puede hacer la funcion que quiero verdad????
-
vamos, yo se que ustedes son muy buenos para la programación, cual es el error, como puedo solucionarlo?? ncesito su ayuda, es solo una funcion, vamos muchachos (as); muchas gracias, chao.
-
Hola Cryn, busca en el foro, ese ejemplo esta posteado como 1000 veces, no te quieren responder por la falta de ganas de trabajar que tienes, y no porque no sepan como hacerlo.
Un saludo.
Atte. CARLOS.
-
Te juro que he buscado un monton, siempre que paso por mi pc me conecfto a internet y constantemente busco lo que necesito, a veces encuentro lo que necesito, otras no, ayer por ejemplo despues de leer tu post busque como loco sin ningun resultado, ayudame, si sabes como solucionar el problema, alguien porfavor, o conque palabras claves puedo buscar, ya use función y nada, delay y sale cualquier post, parametro y nada, bueno nose como podria especificar, si alguien, pues muy agradecido estare, de antemano muhcas gracias.
chau.