Autor Tema: contador de pulsos en "C" con PIC16F887  (Leído 4486 veces)

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

Desconectado Silvio Franquis

  • PIC10
  • *
  • Mensajes: 3
contador de pulsos en "C" con PIC16F887
« en: 21 de Febrero de 2015, 23:21:37 »
contador de pulsos en "C" con PIC16F887
« Última modificación: 22 de Febrero de 2015, 17:50:52 por Silvio Franquis »

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: contador de pulsos en "C" con PIC16F887
« Respuesta #1 en: 21 de Febrero de 2015, 23:59:04 »
Hola, pues yo haría esto

Código: CSS
  1. #include <16f887.h>
  2.  
  3. #use delay(clock=4000000)
  4. #fuses wdt, put, brownout, nomclr, intrc_io,protect
  5.  
  6. #byte   porta = 0x05            //Definicion de variables del pic
  7. #byte   portb = 0x06
  8. #byte   portc = 0x07
  9. #byte   portd = 0x08
  10.  
  11. short bandera;
  12. int contador;
  13. int const valor []={6, 91, 79, 102, 109, 125, 7, 127, 111};  //Valores del 1 al 9 en el display 7 segmentos
  14.  
  15.  
  16. ///////////////////////////////////////////////////////////////////////////////
  17. ///////////////////////////////////////////////////////////////////////////////
  18. #zero_ram       //Borrado de la memoria ram
  19.  
  20. void main()             //Rutina principal
  21. {
  22. set_tris_b(0b00000001);
  23. set_tris_d(0b00000000);
  24.  
  25. setup_oscillator(osc_4mhz);
  26.  
  27. while(true)             //Rutina general
  28.     {
  29.         if(input(pin_b0) && !bandera)
  30.         {
  31.             bandera =1;
  32.             contador += 1;
  33.             if(contador == 10)
  34.             {
  35.                 contador = 1;
  36.             }
  37.             portd = valor[contador];
  38.         }
  39.         else if(!input(pin_b0) && bandera)
  40.         {
  41.             bandera = 0;
  42.         }
  43.     }
  44. }
  45. ///////////////////////////////////////////////////////////////////////////////
  46. ///////////////////////////////////////////////////////////////////////////////

Desconectado Silvio Franquis

  • PIC10
  • *
  • Mensajes: 3
Re: contador de pulsos en "C" con PIC16F887
« Respuesta #2 en: 22 de Febrero de 2015, 01:49:08 »
Gracias Diego E.

Si sirve mucho mejor el programa  ((:-))

Pero solo tengo unas preguntas, para que sirve o porque pusite " && !bandera" y "!input(pin_b0) && bandera" oh y para que utilizas "#zero_ram"?.
Agracederia me respondieras

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: contador de pulsos en "C" con PIC16F887
« Respuesta #3 en: 22 de Febrero de 2015, 15:40:59 »
Hola amigo, la directiva #zero_ram limpia todas las posiciones de memoria que vayas a utilizar, te explico de lo de la bandera, esta es una variable tipo bit que inicia en cero, se enciende cuando presionan la tecla y se apaga cuando sueltan la tecla, su objetivo es evitar que el procesador entre varias veces a la función de la tecla mientras esta se encuentra presionada, sólo entra un vez

Saludos.


 

anything