elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  En C he encontrado este código. [code]#include<16f84A.h> #fuses XT,NOLVP,NOWDT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: En C he encontrado este código. [code]#include<16f84A.h> #fuses XT,NOLVP,NOWDT  (Leído 6,079 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
En C he encontrado este código. [code]#include<16f84A.h> #fuses XT,NOLVP,NOWDT
« en: 19 Enero 2011, 08:11 am »

En C he encontrado este código.

Código:
#include<16f84A.h>
#fuses XT,NOLVP,NOWDT
#use delay(clock=4000000)

void main()
{
  int i;
  output_low(PIN_B0);                         // Estado bajo del pin B0 indica que el relé está desactivado.
  while(TRUE)
  {
    if(input(PIN_A4))
    {
      output_high(PIN_B0);                     // Activo el relé.
      delay_ms(60000);                          // Retardo de un minuto...
      delay_ms(60000);                          // Retardo de un minuto...
      output_low(PIN_B0);                     // Desactivo el relé.
    }
  }
}

Otro ejemplo:
Código:
#include<16f84A.h>
#fuses XT,NOLVP,NOWDT
#use delay(clock=4000000)

void main()
{
  int i;
  output_low(PIN_B0);                         // Estado bajo del pin B0 indica que el relé está desactivado.
  while(TRUE)
  {
    if(input(PIN_A4))
    {
      output_high(PIN_B0);                     // Activo el relé.
      for(i=2;i>0;i--) delay_ms(60000);   // Retardo de dos minutos...
      output_low(PIN_B0);                     // Desactivo el relé.
    }
  }
}

Está en C y como puedes ver, funciona como un esclavo, ya que si vuelvo a pulsar el botón para deterner el temporizador, no puede ejecutar esa acción o cualquier otra hasta que se acabe el tiempo, en este caso este temporizador dura 2 min.

Falta por harcer esa parte, desde que esté contando hacia atrás 2 min, el tiempo se acaba y se queda el relé apagado. Si pulsas el botón se activa el temporizador, el tema es que al pulsar de nuevo el mismo botón que sea capaz de detenerlo y se quede desactivado.

Saludo.


En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: En C he encontrado este código. [code]#include<16f84A.h> #fuses XT,NOLVP,NOWDT
« Respuesta #1 en: 19 Enero 2011, 11:59 am »

Mira, se me ocurre una forma, utiliza otro pin, que al detectar que se pulsa un boton, active un flag (una variable usada de bandera), por ejemplo flag =1.

Entonces el bucle del delay, pones que si flag=1, salte fuera del temporizador donde te interese, ccreo que es una forma sencilla de resolverlo.

Otra sería utilizando una interrupción, pero me parece pensandolo rápido que el metodo sería el mismo, utilizando un flag.



Rectifico lo inicial mira, con este codigo te debería funcionar, debes utilizar una interrupción con un pulsador que ponga la variable flag a 1.

Código
  1. #include<16f84A.h>
  2. #fuses XT,NOLVP,NOWDT
  3. #use delay(clock=4000000)
  4. int flag;
  5. void main()
  6. {
  7.  int i;
  8.  flag = 0;                                          // Estado inicia de la bandera
  9.  output_low(PIN_B0);                         // Estado bajo del pin B0 indica que el relé está desactivado.
  10.  while(TRUE)
  11.  {
  12.    if(input(PIN_A4))
  13.    {
  14.      output_high(PIN_B0);                     // Activo el relé.
  15.      for(i=2;i>0;i--)
  16.         while (flag=0)       //mientras flag no sea 1 hacer retardo.          
  17.         {
  18.           delay_ms(60000);   // Retardo de dos minutos...
  19.         }
  20. output_low(PIN_B0);                     // Desactivo el relé.
  21.    }
  22. flag = 0;                   //Inicializamos la bandera
  23.  }
  24. }

No tengo el mplab en este pc, he hecho el codigo en el bloc de notas, pero espero que entiendas la idea, debe ser hecho por interrupción ya que es una acción externa y no se puede implementar dentro el bucle (almenos yo no lo veo claro).

Solo te faltará declarar una interrupción que cuando se aprete el pulsador para parar el contador, haga flag=1;


« Última modificación: 19 Enero 2011, 12:21 pm por skapunky » En línea

Killtrojan Syslog v1.44: ENTRAR
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: En C he encontrado este código. [code]#include<16f84A.h> #fuses XT,NOLVP,NOWDT
« Respuesta #2 en: 20 Enero 2011, 13:50 pm »

Gracias por tu tiempo. Si es por Interrupción no pasa nada.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Codigo fuente de la caja de Megaupload e include. « 1 2 3 »
Nivel Web
dimitrix 26 14,502 Último mensaje 7 Septiembre 2007, 04:37 am
por Ilorev
Personalizar error del include [Solucionado y código aquí]
PHP
dimitrix 5 4,565 Último mensaje 9 Enero 2008, 22:43 pm
por dimitrix
ayuda a programar un pic 16f84a
Electrónica
dario9669 1 4,094 Último mensaje 10 Septiembre 2013, 21:10 pm
por xiruko
He encontrado este archivo en mi servidor web.. y estoy flipando...
Bugs y Exploits
creativesur 2 3,785 Último mensaje 8 Diciembre 2014, 18:58 pm
por engel lex
Que ignifica este include en linux
Programación C/C++
aurquiel 1 3,447 Último mensaje 31 Enero 2017, 15:23 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines