TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: mrk992 en 09 de Agosto de 2009, 21:27:51

Título: Ayuda, y repaso de este codigo
Publicado por: mrk992 en 09 de Agosto de 2009, 21:27:51
Buenas, antes de nada presentarme a todos y ahroa vamos a los problemillas.
HAber soy nuevo en esto de los pic, estoy  empezando a programar algo y queria hacer  un codigo facilito que seria el siguiente:

#include <16F628A.h>
#use delay(clock=4000000)

 void main()
{
set_tris_b(0b00000000); /*Defino el puerto B como salidas*/
set_tris_a(0b11111111);/*Defino el puerto A como entradas*/
output_low(PIN_B0);/*Apago  el led*/
output_low(PIN_B1);/*Apago el led2*/
while(true) /*bucle infinito*/
{
if(pin_a7==1)/* abro el if para cuando la entra RA7 es 1 activada por un interruptor*/
{
   output_high(pin_B0);/*enciendo led*/
   delay_ms(500);/*retardo de 1/2segundo*/
}
else(pin_a7==0)/* si por la entrada RA7 es 0*/
{
output_high(PIN_b1);/*se enciende el Led2*/
delay_ms(500);/*retardo de 1/2 segundo*/
}
}
}
El problema de eso que lo pruebo en  el proteus y no me funciona no se enciende los led , habersi me podeis mirar si esta todo bien escrito gracias.
Otra cosas es haber si me podeis ayudar con  las entradas y salidas , declaraciones como haccer que un pun tenga 1 o 0  o como poder saber lo que lo entra para poder hacer if  :-/ :-/ gracias espero vuestra respuesta Salu2
Título: Re: Ayuda, y repaso de este codigo
Publicado por: Suky en 09 de Agosto de 2009, 21:31:22
Bienvenido al foro mrk992!
Falta el fuse que configura como oscilador interno INTRC_IO, y setup_oscillator(OSC_4MHZ) en main.

Saludos!
Título: Re: Ayuda, y repaso de este codigo
Publicado por: MLO__ en 09 de Agosto de 2009, 21:40:58
Hola.

Leete el manual para que vayas a la fija  :mrgreen:.

Para averiguar las entradas se usa: input_state(pin_xx);

Para poder condicionar un else, se usa else if(sentencia).

No creo que te haya compilado bien el ejercicio, debio darte algun error o algunos warnings.

Saludos

Título: Re: Ayuda, y repaso de este codigo
Publicado por: mrk992 en 09 de Agosto de 2009, 21:46:48
ok gracias tios , pero para por ejemplo poern en la condicion del if   pin7=1 como lo tendria que hacer?
pd: se me habia olvidado decirlo utilizao tl PCWHD de CSS para compilar
Título: Re: Ayuda, y repaso de este codigo
Publicado por: MLO__ en 09 de Agosto de 2009, 21:50:19
Hola.

Con la funcion que te indique. Verifica la ayuda del CCS, da ejemplos para que te ubiques:

Código: [Seleccionar]
if(input_state(pin_a7))
{
 ....
}
Título: Re: Ayuda, y repaso de este codigo
Publicado por: mrk992 en 09 de Agosto de 2009, 21:50:36
se me ha olvidado decirlo si me da error voy a probar lo de else if  y el manuela me lo he leido pero no lo entiendo muy bien

a y suky lo de INTRC_IO, y setup_oscillator(OSC_4MHZ) para que vale y como lo pongo y lo de  setup_oscillator(OSC_4MHZ) no lo es lo mismo  que  #use delay(clock=4000000)
Título: Re: Ayuda, y repaso de este codigo
Publicado por: MLO__ en 09 de Agosto de 2009, 21:52:30
Es que hay unos fusibles de programacion por medio de los cuales le avisas al PIC que oscilador va a usar, por ejemplo, para un cristal de 4MHz.

Código: C#
  1. #fuses XT

Saludos
Título: Re: Ayuda, y repaso de este codigo
Publicado por: mrk992 en 09 de Agosto de 2009, 22:00:59
haber.... yo lo que quiero intentar hacer es lo siguiente
con un pic 16F68A enchufarle dos LEd y un interruptor, cuando el interruptor este cerrado y de al pic la señal de 1 se encienda y led y cuando  este abierto y de la señal de 0 que se encienda el otro led . Entonces haber si esto que e descrito corresponde a lo que he intentado programar MLO aceptame en el Messenger para poder hablar un poco
Título: Re: Ayuda, y repaso de este codigo
Publicado por: MLO__ en 09 de Agosto de 2009, 22:07:36
Reemplaza lo que tienes dentro del if con lo que te postee y listo. Recuerda poner los #fuses, podrian ser:

#fuses XT,NOLVP,NOWDT

Saludos
Título: Re: Ayuda, y repaso de este codigo
Publicado por: mrk992 en 09 de Agosto de 2009, 22:19:28
ok pero lo que me pusiste de else if lo cambie y funciono y lo del if tambien?  O como tengo yo la condicion del if esta bien gracias
Título: Re: Ayuda, y repaso de este codigo
Publicado por: Suky en 09 de Agosto de 2009, 23:07:10
Las sentencias if están bien, solo agrega input(PIN_A7) y else if como lo indica MLO_, que se me paso la primera vez  :mrgreen:

Agrega los fuses y setup_oscillator para configurar el interno a 4 MHz, dado que también puede usarse 48kHz. La sentencia #use delay(clock=4000000) es para el compilador, se basa en eso en calcular las demoras, configuraciones de USART, etc. pero no el PIC.

Saludos!
Título: Re: Ayuda, y repaso de este codigo
Publicado por: jfh900 en 09 de Agosto de 2009, 23:22:01
Tienes que incluir un bucle while para que este continuamente comprobando las entradas, si no termina el main y comienza desde el principio.:

while(1)
{

Sentencias a repetir

}

Un saludo
Título: Re: Ayuda, y repaso de este codigo
Publicado por: mrk992 en 10 de Agosto de 2009, 01:54:34
el while le he puesto pero en vez te 1 he puesto true creo k funciona y otra cosa como se que fuses utilizar?
Título: Re: Ayuda, y repaso de este codigo
Publicado por: Suky en 10 de Agosto de 2009, 09:21:31
el while le he puesto pero en vez te 1 he puesto true creo k funciona y otra cosa como se que fuses utilizar?
Si funciona de la misma manera.
Para saber los fuses, primero tener el datasheet a mano, después podes abrir el archivo 16F628A.h, al principio están listados los fuses.-

Saludos!
Título: Re: Ayuda, y repaso de este codigo
Publicado por: KALLITOS en 10 de Agosto de 2009, 11:03:03
Hola, he leido a la volada el hilo y si mal no recuerdo el pic16f628 tiene entradas de comparacion analogica, y no he visto que hayan configurado los pines como digitales.

Ademas hacerles mencion que en proteus no importa si colocas o no la configuracion del osc, puedes obviar ese punto, pero si es necesario indicar el valor del osc.

Saludos
Título: Re: Ayuda, y repaso de este codigo
Publicado por: ppyote en 10 de Agosto de 2009, 12:33:25
Hola, he leido a la volada el hilo y si mal no recuerdo el pic16f628 tiene entradas de comparacion analogica, y no he visto que hayan configurado los pines como digitales.

Ademas hacerles mencion que en proteus no importa si colocas o no la configuracion del osc, puedes obviar ese punto, pero si es necesario indicar el valor del osc.


cierto.... no estan indicado el puerto si son analogicas o digitales o comparaores....
yo hago lo siguiente...

#byte cmcon = 0x1f // la direccion del byte de las entradas A/D del puerto A....
y en el main, indico las entradas que deseo en analogicas , digitales o de compaacion, para eso miro el datasheet
cmcon = 0x07; //todo entradasdigitales y comparadores off
Título: Re: Ayuda, y repaso de este codigo
Publicado por: Suky en 10 de Agosto de 2009, 14:01:25
Hola, he leido a la volada el hilo y si mal no recuerdo el pic16f628 tiene entradas de comparacion analogica, y no he visto que hayan configurado los pines como digitales.

Ademas hacerles mencion que en proteus no importa si colocas o no la configuracion del osc, puedes obviar ese punto, pero si es necesario indicar el valor del osc.


cierto.... no estan indicado el puerto si son analogicas o digitales o comparaores....
yo hago lo siguiente...

#byte cmcon = 0x1f // la direccion del byte de las entradas A/D del puerto A....
y en el main, indico las entradas que deseo en analogicas , digitales o de compaacion, para eso miro el datasheet
cmcon = 0x07; //todo entradasdigitales y comparadores off

En CCS seria:

Código: C
  1. setup_comparator(NC_NC_NC_NC);
  2.    setup_vref(FALSE);

Saludos!
Título: Re: Ayuda, y repaso de este codigo
Publicado por: ppyote en 10 de Agosto de 2009, 14:24:16
yo tambien lo utilizo en ccs... me he acostumbrado a usarlo asi... no se manias de cada uno jajajajaja
Título: Re: Ayuda, y repaso de este codigo
Publicado por: Suky en 10 de Agosto de 2009, 15:23:00
yo tambien lo utilizo en ccs... me he acostumbrado a usarlo asi... no se manias de cada uno jajajajaja
Jejeje! Cuando uno viene de programar en assembler por lo general se hace eso  :mrgreen:

Saludos!
Título: Re: Ayuda, y repaso de este codigo
Publicado por: mrk992 en 10 de Agosto de 2009, 15:37:09
ok ok , gracias pero con    1.
      setup_comparator(NC_NC_NC_NC);
   2.
        setup_vref(FALSE);
que puertos tengo en comparacion, caules en analogicos y cuales en digital?
gracias pero es que soy nuevo y de programacion en pc tengo un poco de idea pero... muchas gracias me tais sacando de muchos apuros. A el otro codigo el modifique un poco y le he conseguio hacer funcionar bien espero vuestra respuesta
Título: Re: Ayuda, y repaso de este codigo
Publicado por: Suky en 10 de Agosto de 2009, 15:53:47
ok ok , gracias pero con    1.
      setup_comparator(NC_NC_NC_NC);
   2.
        setup_vref(FALSE);
que puertos tengo en comparacion, caules en analogicos y cuales en digital?
gracias pero es que soy nuevo y de programacion en pc tengo un poco de idea pero... muchas gracias me tais sacando de muchos apuros. A el otro codigo el modifique un poco y le he conseguio hacer funcionar bien espero vuestra respuesta
Para eso hay que mirar el datasheet del PIC  (http://host.nigde.edu.tr/muzam/PIC16F648A.pdf)que estas utilizando.  :mrgreen:

También revisa el siguiente link (http://www.todopic.com.ar/foros/index.php?topic=24720.msg204908#msg204908)

Saludos!