TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: brayan1989 en 13 de Junio de 2009, 10:25:44

Título: me pueden ayudar con este problemita con el 16f877?
Publicado por: brayan1989 en 13 de Junio de 2009, 10:25:44
hola a todos los usuarios de este maravilloso foro la pregunta que me gustaria que me ayudaran es la siguiente:

tengo dos bandas transportados una al lado de la otrala segunda prende con un pulsador de star y la primera 15 segundos despues que la segunda banda arranco y para la parada utilice un pulsador de stop cuando lo presiono tendria que apagar los dos motores de las dos bandas el problema que tengo esta cuando le doy al stop tengo que dejarlo presinado unos segundos para que se me pueda apagar las bandas y esa no es la idea yo lo que quiero es que se me apagen las dos cuando le de al stop si que tenga que esperar ningun tiempo , este es el codigo que hice a ver si me pueden ayudar:

Código: [Seleccionar]
#include<16f877.h>
#fuses nowdt
#fuses noput
#fuses noprotect
#fuses hs

#use delay (clock=4000000)

# define star !input(pin_a0)
# define stop !input(pin_a1)
# define f2 !input(pin_a2)
# define f3 !input(pin_a3)

int a0;

void main()
{
  while(1)
  {
  if ((star|a0)&(!stop)&(!F2)&(!F3))
  {
output_high(pin_b0);

a0=1;

 
  }
  if (A0&(!stop)&(!F2)&(!F3))
  {
 
  delay_ms(300);
output_high(pin_b1);
  }

 
 
  if(stop|F2|F3)

{

  output_low(pin_b0);
   
  output_low(pin_b1);
a0=0;
 
  }
 
}


el montaje en proteus que hice es el siguiente:
(http://s3.subirimagenes.com:81/otros/previo/thump_2715194simulacion.jpg)
Título: Re: me pueden ayudar con este problemita con el 16f877?
Publicado por: Suky en 13 de Junio de 2009, 10:58:27
Coloca el segundo if, dentro del primero:
Código: C
  1. while(1){
  2.   if ((star|a0)&(!stop)&(!F2)&(!F3)){
  3.     output_high(pin_b0);
  4.     a0=1;
  5.     if (A0&(!stop)&(!F2)&(!F3)){
  6.       delay_ms(300);
  7.       output_high(pin_b1);
  8.     }
  9.   }
  10.   if(stop|F2|F3){
  11.     output_low(pin_b0);
  12.     output_low(pin_b1);
  13.     a0=0;
  14.   }
  15. }
Título: Re: me pueden ayudar con este problemita con el 16f877?
Publicado por: fidodido18 en 13 de Junio de 2009, 12:50:51
hola a todos los usuarios de este maravilloso foro la pregunta que me gustaria que me ayudaran es la siguiente:

tengo dos bandas transportados una al lado de la otrala segunda prende con un pulsador de star y la primera 15 segundos despues que la segunda banda arranco y para la parada utilice un pulsador de stop cuando lo presiono tendria que apagar los dos motores de las dos bandas el problema que tengo esta cuando le doy al stop tengo que dejarlo presinado unos segundos para que se me pueda apagar las bandas y esa no es la idea yo lo que quiero es que se me apagen las dos cuando le de al stop si que tenga que esperar ningun tiempo , este es el codigo que hice a ver si me pueden ayudar:

Hola te recomiendo que trabajes con interrupcion en los pines B4 a B7, o alguna otra interrupcion que obligue al PIC a dejar de hacer la operacion que realiza para deterner todo el proceso hasta nueva orden...
Título: Re: me pueden ayudar con este problemita con el 16f877?
Publicado por: brayan1989 en 13 de Junio de 2009, 18:02:49
amigo Suky hice lo que me dijistes pero de igual manera cuando presiono stop tarda en desconectarme los dos motores de la cinta, no tienes mas opciones de que pueda ser?
Título: Re: me pueden ayudar con este problemita con el 16f877?
Publicado por: freshdesing en 24 de Junio de 2009, 11:01:53
¿Podrías poner el esquema de proteus más grande?