Autor Tema: Ayuda, y repaso de este codigo  (Leído 5355 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado mrk992

  • PIC10
  • *
  • Mensajes: 26
Ayuda, y repaso de este codigo
« 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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda, y repaso de este codigo
« Respuesta #1 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!
No contesto mensajes privados, las consultas en el foro

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda, y repaso de este codigo
« Respuesta #2 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

El papel lo aguanta todo

Desconectado mrk992

  • PIC10
  • *
  • Mensajes: 26
Re: Ayuda, y repaso de este codigo
« Respuesta #3 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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda, y repaso de este codigo
« Respuesta #4 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))
{
 ....
}
El papel lo aguanta todo

Desconectado mrk992

  • PIC10
  • *
  • Mensajes: 26
Re: Ayuda, y repaso de este codigo
« Respuesta #5 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)

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda, y repaso de este codigo
« Respuesta #6 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
El papel lo aguanta todo

Desconectado mrk992

  • PIC10
  • *
  • Mensajes: 26
Re: Ayuda, y repaso de este codigo
« Respuesta #7 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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda, y repaso de este codigo
« Respuesta #8 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
El papel lo aguanta todo

Desconectado mrk992

  • PIC10
  • *
  • Mensajes: 26
Re: Ayuda, y repaso de este codigo
« Respuesta #9 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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda, y repaso de este codigo
« Respuesta #10 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!
« Última modificación: 09 de Agosto de 2009, 23:51:13 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Ayuda, y repaso de este codigo
« Respuesta #11 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
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado mrk992

  • PIC10
  • *
  • Mensajes: 26
Re: Ayuda, y repaso de este codigo
« Respuesta #12 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?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda, y repaso de este codigo
« Respuesta #13 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!
No contesto mensajes privados, las consultas en el foro

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Ayuda, y repaso de este codigo
« Respuesta #14 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
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.