Autor Tema: Sigo Chapando, Ayuda Con una Ins RARA  (Leído 2290 veces)

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

Desconectado ErYeZuZ

  • PIC10
  • *
  • Mensajes: 32
Sigo Chapando, Ayuda Con una Ins RARA
« en: 22 de Noviembre de 2004, 19:57:00 »
Hola sigo estudiando pal examen del micro 8x81 y en los temporizadores me sale la ins
JNB TF0, $
Por lo que veo es q se este ejecunatdo esa ins hasta q el Bit TF0 este a 0 lo que me extrana pues es una temporizacion y el TF0 marcaria el desborde del TL0 y se pondria a 1, os pongo un ejemplo tengo que temporizar 40 us:
Temp40: TMOD, #01H
               MOV TH0, #>65496 ; PARTE ALTA DE 65536 - LOS 40 us
               MOV TLO, #<65496
               SETB TR0                 ; INICIA LA CUENTA
               JNB TF0, $
               CLR TR0                  ; PARARIA LA CUENTA
               CLR TF0
               RET
Bueno pos lo entiendo todo menos esa ins
despues de esto tengo que hacer una secuencia teniendo en cuenta el tiempo q dura cada ins, es decir para temporizar 40us:
Temp40: TMOD, #01H            ; 2us
               MOV TH0, #>65509 ; 2us PARTE ALTA DE 65536 - LOS 40 us +13 q tardarian las ins
               MOV TLO, #<65509 ; 2us
               SETB TR0                 ; 1 us INICIA LA CUENTA
               JNB TF0, $               ; 2us
               CLR TR0                  ; 1us PARARIA LA CUENTA
               CLR TF0                  ; 1us
               RET                         ; 2us
Bueno pos eso por q esa ins tarda 2us si se ejecutaria unas 13 veces una por cada ciclo maquina, ¿como se sabe el tiempo q tarda en ejecutarse una ins?
Todo esto con un cristal de 12 Mhz lo que me da un ciclo makina de 1us

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Sigo Chapando, Ayuda Con una Ins RARA
« Respuesta #1 en: 23 de Noviembre de 2004, 13:05:00 »
Hola...

La instruccion JNB TF0,$ realiza lo siguiente:

El temporizador ya esta contando, entonces tienes que estar pendiente  de cuando se desborda la cuenta para saber cuando se ha finalizado de temporizar. Uno sabe cuando ha temporizado el tiempo cuando el bit TF0 se pone a 1, entonces lo que hace esa instruccion, es estar comprobando continuamente si el bit TF0 es cero (aun no ha terminado de temporizar) y saltar a la misma posicion hasta que este bit se pone a uno, entonces esa condicion no se cumplirá (TF0=0) y pasará a la siguiente instruccion que será CLR TR0 (parar el timer) y CLR TF0 (borrar el flag de timer desbordado) para así tener preparado todo la proxima vez que vayas a temporizar.

No se si me has entendido o me he explicado con claridad, si no es así dimelo que intentaré explicarme mejor.

El porque de la instruccion JNB TF0,$ tarda 2us es porque todas las intrucciones de salto ocupan 2 ciclos maquina y como cada ciclo maquina tarda 1us (tienes cristal de 12mhz) pos tonces tardará 2us. (esto viene especificado en el datasheet).

Suerte pal examen.




Desconectado ErYeZuZ

  • PIC10
  • *
  • Mensajes: 32
RE: Sigo Chapando, Ayuda Con una Ins RARA
« Respuesta #2 en: 23 de Noviembre de 2004, 16:45:00 »
Gracias, alto y claro en realidad ya lo suponia lo que me extraña es el simbolo $ se puede usar con otras ins???

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Sigo Chapando, Ayuda Con una Ins RARA
« Respuesta #3 en: 24 de Noviembre de 2004, 05:52:00 »
En teoría podrías usarlo en todas aquellas instrucciones que permitan como parametros una etiqueta o label.

Si te lias con eso piensa que es lo mismo que hacer lo siguiente:

Codigo:

Temp40:    TMOD, #01H ; 2us
      MOV TH0, #>65509
      MOV TLO, #<65509 ; 2us
      SETB TR0 ; 1 us INICIA LA CUENTA
BUCLE:      JNB TF0,BUCLE ; 2us
      CLR TR0 ; 1us PARARIA LA CUENTA
      CLR TF0 ; 1us
      RET ; 2us



Es exactamente lo mismo, lo que hace el $ es saltar a la misma instruccion, lo único es que te ahorras las etiquetas.

Saludos.