Autor Tema: Ciclos de ejecucion de instrucciones en los pic18fxxxx  (Leído 2538 veces)

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

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Ciclos de ejecucion de instrucciones en los pic18fxxxx
« en: 12 de Julio de 2008, 17:03:37 »
Que tal amigos!
Recien me inicio en la programacion de los pic18fxxxx, despues de estar muchos años pegados a mis queridos pic16fxxx y ya es hora de que migre a estos  :mrgreen:

Estoy trabajando especificamente con un pic18F252, pero leyendome el set de instrucciones de este me vinieron varias dudas  :shock: por ejemplo:

La instruccion cpfseq dice que tarda en ejecutarse 1, 2 o 3 ciclos no entiendo esto me podrian explicar con un ejemplito sencillo en asembler :mrgreen:  para saber cuando tarda un ciclo, dos o tres ?

Gracias
« Última modificación: 12 de Julio de 2008, 18:15:59 por RALF2 »

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: Ciclos de ejecucion de instrucciones en los pic18fxxxx
« Respuesta #1 en: 12 de Julio de 2008, 22:18:55 »
Que tal, bueno me voy a responder a mi mismo y para que les sirva tambien a los demas  :mrgreen:

El set de instrucciones de la familia pic18fxxxx poseen un conjunto de instrucciones que se ejecutan en 1, 2 o 3 ciclos de instruccion (Fosc/4) ahora bien. Ya sabemos que en la serie pic16fxxx las instrucciones se ejecutan en 1 o 2 ciclos por ejemplo la instruccion btfss si es cierta tarda en ejecutarse dos ciclos pero si no tarda solo uno. Ahora bien los pic18 al poseer un conjunto de instrucciones mayor a los pic16 cambian algunas cosas  :mrgreen:

En el caso concreto de la instruccion cpfseq si la comparacion es falsa tarda un ciclo, si es verdadera y siempre y cuando la instruccion inmediata que le sigue tarde solo un ciclo en ejecutarse, la instruccion (cpfseq)  tardara dos ciclos, pero si la instruccion que le sigue tarda dos ciclos (por ejemplo movff ) esta tardara 3 ciclos  :mrgreen:  he alli la respuesta a mi pregunta  :D

Adjunto un ejemplo hecho en el mplab, para tres ciclos.
para uno y dos ciclos cambien la instruccion movff var1,var2, por ejemplo,  por un nop.

Saludos


 

anything