Autor Tema: ayuda¡ pic16f873a delays  (Leído 2228 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
ayuda¡ pic16f873a delays
« en: 25 de Septiembre de 2018, 21:21:08 »
buenas amigos lo que pasa es que necesito obtener las señales de salida al mismo tiempo con diferentes delays, el problema con la programación que tengo es que salen una por una adjunto la programación que tengo agradezco cualquier ayuda que se me pueda brindar.
void main() {
 TRISB=0;
 PORTB=0;
 while(1){
 PORTB.F0=1;
 delay_mS(2000);
 PORTB.F0=0;
 delay_mS(2000);
 PORTB.F1=1;
 delay_mS(1500);
 PORTB.F1=0;
 delay_mS(1500);
 PORTB.F2=1;
 delay_mS(1000);
 PORTB.F2=0;
 delay_mS(1000);
 PORTB.F3=1;
 delay_mS(500);
 PORTB.F3=0;
 delay_mS(500);
 }
}

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ayuda¡ pic16f873a delays
« Respuesta #1 en: 25 de Septiembre de 2018, 22:09:56 »
Usa un solo delay (el más pequeño 500 ms). Usa una XOR para cambiar el estado de un pin y....
Utiliza una variable para saber cuándo usar las demás salidas.. me explico mejor... Si tenés un solo delay de 500ms F3 lo cambias siempre, pero F2 lo haces cuando pase 2 veces, F1 cuando pase 3 veces y por último F0 cuando pase 4 veces.

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:ayuda¡ pic16f873a delays
« Respuesta #2 en: 26 de Septiembre de 2018, 01:03:35 »
gracias por responder pero quisiera saber con que linea de codigo ejecuto el xor, y para incrementar el numero de veces utilizo un for?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ayuda¡ pic16f873a delays
« Respuesta #3 en: 26 de Septiembre de 2018, 07:18:26 »
Un for o un if.. Por ahi te sea mas simple utilizar varias variables ( 1 para cada salida por ejemplo ) luego lo podes intentar reducir a 1 sola cuando entiendas que estas haciendo.

Para hacer la XOR lo haces con:

Código: C
  1. PORTB.F3 ^= 1;

La ventaja que tenes es que si estaba en 1 pasa a 0, y si estaba en 0 pasa a 1. Es decir, invierte el estado del bit.
« Última modificación: 26 de Septiembre de 2018, 07:28:38 por KILLERJC »

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:ayuda¡ pic16f873a delays
« Respuesta #4 en: 16 de Octubre de 2018, 03:04:31 »
muchas gracias por su colaboración  :) al final lo logre con el timer 0 del micro. Muy buen foro  ;-)