elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 08:02  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica (Moderador: skapunky)
| | |-+  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 1,749 veces)
Meta


Desconectado Desconectado

Mensajes: 2.304



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

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

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
skapunky
Electronik Engineer &
Moderador
***
Desconectado Desconectado

Mensajes: 3.428



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 »

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
#include<16f84A.h>
#fuses XT,NOLVP,NOWDT
#use delay(clock=4000000)
int flag;
void main()
{
 int i;
 flag = 0;                                          // Estado inicia de la bandera
 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--)
        while (flag=0)       //mientras flag no sea 1 hacer retardo.          
        {
          delay_ms(60000);   // Retardo de dos minutos...
        }
output_low(PIN_B0);                     // Desactivo el relé.
   }
flag = 0;                   //Inicializamos la bandera
 }
}

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 por skapunky » En línea

Meta


Desconectado Desconectado

Mensajes: 2.304



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 »

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

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Quien tiene este Code
Análisis y Diseño de Malware
VirucKingX 13 811 Último mensaje 12 Marzo 2006, 19:09
por Stewie.
conseguir código -----> include('contador.php');
Desarrollo Web
aj_ville 4 2,356 Último mensaje 10 Abril 2006, 00:13
por aj_ville
Codigo fuente de la caja de Megaupload e include. « 1 2 »
Nivel Web
dimitrix 26 7,460 Último mensaje 7 Septiembre 2007, 04:37
por Ilorev
Personalizar error del include [Solucionado y código aquí]
PHP
dimitrix 5 852 Último mensaje 9 Enero 2008, 22:43
por dimitrix
quien me corrige este code?
Programación C/C++
.:BlackCoder:. 4 771 Último mensaje 6 Febrero 2010, 05:04
por Littlehorse
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines