Autor Tema: Tacómetro  (Leído 10171 veces)

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

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Tacómetro
« Respuesta #15 en: 24 de Noviembre de 2013, 01:12:39 »
bueno me canse de renegar con los timers, al final no logre lo que buscaba, la funcion count no me sirve, peeeeeroooooo se me ocurrio lo siguiente, como el gran problema es el programa se detiene para contar y por eso buscabamos algo que no complique el programa, se me ocurrio encerrar el programa principal en un FOR - NEXT, dentro de ese lazo ir sumando los pulsos que entran por un port, cuando termina el lazo  simplemente publica los resultados en el lcd, pone las variables en cero y vuelve al inicio, pero siempre el programa principal queda funcionando.

DEFINE OSC 10    ; Definir que se trabajará con 10MHz
Define LCD_DREG PORTB      ; Puerto de datos.
Define LCD_DBIT     4      ; Bit de inicio de datos.
Define LCD_RSREG PORTA      ; Puerto de RS (Register Select)
Define LCD_RSBIT    1      ; Pin para RS
Define LCD_EREG PORTA      ; Puerto de E (Enable)
Define LCD_EBIT     0      ; Pin para E
A var word
G var word
C var Word
symbol int = porta.4
CMCON = 7                   ; Comparadores analógicos OFF  "estoy usando un 16f628"

    LCDOut $FE,1," Tacometro"
inicio:
a = 0     "pone en cero la variable, la limpia luego de publicar en el lcd como veran mas adelante"
for g = 1 to 1000
if int = 1 then a = a+1  "lee los pulsos del port A4 por cada pulso le suma uno a la variable A"

"aca podemos hacer el programa principal que se les ocurra queda encerrado dentro del lazo y funciona sin interrupciones"

next g    "se cierra el lazo"

LCDOut $FE,$C0,"rpm: ",Dec a   "publica en el lcd los resultados"
goto inicio "vuelve al inicio en donde pondra en cero la variable y luego iniciara un nuevo lazo"
end
    

entonces como veran podemos programar lo que sea y contar los pulsos que entran por un port sin detener el programa principal ya que el contador es parte del programa principal, el tiempo que cuenta lo determina el valor del FOR 1 a 1000 o a 10000 ect.



« Última modificación: 24 de Noviembre de 2013, 01:15:11 por jorgenuviola »