TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: PicLoto en 13 de Enero de 2006, 09:46:00

Título: pbp y retardos...
Publicado por: PicLoto en 13 de Enero de 2006, 09:46:00
Hola y gracias por leer el mensaje... bien, a lo que interesa   Sonrisa

Resulta que estoy dandole caña al PBP y mientras probaba el comando COUNT me he encontrado algo muy curioso

(Pic: 16f84A  XT: 4Mhz )

Con el siguiente programa:

B2       var     byte
I          var     byte

           clear
       
loop:   High    0
           pause   1500
           low     0
           count   portb.1,2000,b2
           if      b2=0 then loop
           for     i=0 to b2
           high    0
           pause   50
           low     0
           pause   50
           next    i
           goto    loop
           End

Pues el caso es que  con el PAUSE 1500, el led permanece encendido un segundo y medio...pero con el count 2000, en vez de estar contando durante dos segundos, cuenta durante aproximadamente diez!...y no acabo de comprender la jugada...
Alguien puede echarle un poco de luz a esto?
Título: RE: pbp y retardos...
Publicado por: BLACKPIC en 13 de Enero de 2006, 20:37:00
hola: bueno amigo dandole una miradita a tu post.
te pido como novatos que somos, tenemos que poner las cosas claras, que uno quiere hacer para los que saben puedan ayudar a uno con mas rapides y entendimiento.

bueno te explico algo

B2 var byte
I var byte

"clear ( para que espesificamentes usas este clear te falta algo mas o no)

loop: High 0
pause 50
low 0
pause 50
count portb.1,2000,b2
if b2=0 then "loop                       ( este loop no va aqui)
for i=0 to b2
high 0  
pause 50
low 0
pause 50
next i
endif         "( y cada if se cierra con un endif amigo)
goto loop
Título: RE: pbp y retardos...
Publicado por: navaismo en 17 de Enero de 2006, 20:17:00
 B2 var byte                "aki declaras tus variables bien son bytes ok
   I var byte

clear                            "esto tambien esta bien limpias todas las variables a cero

loop:                            "empiezas tu programa

 High 0                         "enciendes el portb.0 durante 1.5 segundos
 pause 1500
 low 0                          " aki lo apagas

count portb.1,2000,b2   " enseguida le das la opcion count, lo k hace esta opcion
                                       " es contar un numero de pulsos en un pin es decir checa                                           " las transisiones de estados bajos a estados altos en                                               " milisegundos, el pin debe ser de entrada, lo hace                                                     " automatiko, entonces tu pin de entrada es PORTB.1                                                 " quieres contar los cambios de EDOS. en 2 segundos y                                              " guardarlo en b2

if b2=0 then loop            " aki si b2 es igual a 0 lo regresas a la primer rutina

                                        " si b2 no cumple casi como un else haces un for                                                         "pensando que b2 es diferente de 0 pero recuerda que b2                                         "esta en funcion de los cambios de tu pin o de los pulsos                                            "que conto si conto 3 pulsos b2=3

for i=0 to b2
  high 0
  pause 50
  low 0
  pause 50
next i
                                          " terminas el for
goto loop
 End                                   " y consumes poka energia con el pic


ok mira debes checar si estas usando bien el count o si le estas mandando pulsos en intervalos adecuados, ahora si los pulsos entran bien verifica cuantos mandaste ya que el for esta en funcion de esos pulsos.

Y si estas usando bien el if ya que hay tres formas la normal condicionando:

IF portb.1=1 THEN
high 3
ENDIF

una especie de goto o gosub

IF a="a" THEN etiqueta
........ etiqueta:
........................

y mas comun IF..ELSE

IF PORT.1 =0 THEN
high 3
ELSE
low 3
ENDIF