Upload
uriel
View
279
Download
13
Embed Size (px)
Citation preview
El juego de instrucciones : El juego de instrucciones :
PIC 16F87xPIC 16F87x
CCFF DPE MÓDULO DE PROYECTOS 2
El El SetSet de Instrucciones de Instrucciones IntroducciIntroduccióón n
•• Los PIC 16F87x poseen un juego de 35 Los PIC 16F87x poseen un juego de 35 instrucciones de tipo RISC, siendo todas ellas de 14 instrucciones de tipo RISC, siendo todas ellas de 14 bits. El tamabits. El tamañño de los datos es de 1 o de los datos es de 1 bytebyte. .
•• Las instrucciones de los PIC 16F87x son Las instrucciones de los PIC 16F87x son exactamente iguales a las del PIC 16f84exactamente iguales a las del PIC 16f84
•• En los 14 bits de cada instrucciEn los 14 bits de cada instruccióón se incluye el n se incluye el ccóódigo de operacidigo de operacióón y los n y los operandosoperandos si estos si estos existen.existen.
•• Todas las instrucciones tardan en ejecutarse 1 ciclo Todas las instrucciones tardan en ejecutarse 1 ciclo (4 golpes de reloj) excepto las de salto que tardan (4 golpes de reloj) excepto las de salto que tardan 2 ciclos.2 ciclos.
CCFF DPE MÓDULO DE PROYECTOS 3
•• Las instrucciones de los PIC son altamente Las instrucciones de los PIC son altamente ortogonales. Esto quiere decir que casi todas las ortogonales. Esto quiere decir que casi todas las instrucciones pueden usar cualquier registro como instrucciones pueden usar cualquier registro como como operando y como destino.como operando y como destino.
•• El nEl núúmero total de instrucciones del mero total de instrucciones del microcontrolador es de 35. Clasificmicrocontrolador es de 35. Clasificáándose en los ndose en los siguiente tipos:siguiente tipos:
Instrucciones orientadas a Instrucciones orientadas a bytesbytes..
Instrucciones orientadas a bits.Instrucciones orientadas a bits.
Instrucciones de control y con literales.Instrucciones de control y con literales.
4
El El SetSet de Instruccionesde InstruccionesNomenclatura en las InstruccionesNomenclatura en las Instrucciones
•• En las instrucciones orientadas a En las instrucciones orientadas a bytesbytes o registros o registros ffrepresenta un registro y representa un registro y dd representa el destino. Si representa el destino. Si dd eses00, , el resultado de la operaciel resultado de la operacióón sen se almacena en el almacena en el registro de trabajoregistro de trabajo WW, mientras que si, mientras que si dd es 1es 1,, el el resultado se guarda en el registroresultado se guarda en el registro ff..
•• En las instrucciones orientadas a bits, En las instrucciones orientadas a bits, bb representa en representa en binario la posicibinario la posicióón (0n (0--7) del 7) del bitbit dentro del dentro del bytebyte, , ffrepresenta el representa el bytebyte o registro. El o registro. El bitbit 0 siempre es el de 0 siempre es el de menor peso.menor peso.
•• Para las instrucciones de control y con literales Para las instrucciones de control y con literales kkrepresenta una constante o un literal, que segrepresenta una constante o un literal, que segúún los n los casos puede ser de 8 casos puede ser de 8 óó 11 bits.11 bits.
CCFF DPE MÓDULO DE PROYECTOS 5
El El SetSet de Instruccionesde InstruccionesFormato de las instruccionesFormato de las instrucciones
Instrucciones orientadas a bytes o registros (18)
Donde:
Opcode es el código de operación.
( ) significa contenidos.
CCFF DPE MÓDULO DE PROYECTOS 6
Instrucciones orientadas a bits (4).
CCFF DPE MÓDULO DE PROYECTOS 7
Instrucciones de control y con literales (13).
CCFF DPE MÓDULO DE PROYECTOS 8
Instrucciones Orientadas a Instrucciones Orientadas a BytesBytes o Registroso Registros
CCFF DPE MÓDULO DE PROYECTOS 9
Instrucciones Orientadas a Bits.Instrucciones Orientadas a Bits.Instrucciones Con Literales Y De Instrucciones Con Literales Y De Control. Control.
CCFF DPE MÓDULO DE PROYECTOS 10
ADDLW (Suma W con un literal)ADDLW (Suma W con un literal)
CCFF DPE MÓDULO DE PROYECTOS 11
ADDWF (Suma W con un registro)ADDWF (Suma W con un registro)
CCFF DPE MÓDULO DE PROYECTOS 12
ANDLW (AND de W con un literal)ANDLW (AND de W con un literal)
CCFF DPE MÓDULO DE PROYECTOS 13
ANDWF (AND de W con un registro)ANDWF (AND de W con un registro)
CCFF DPE MÓDULO DE PROYECTOS 14
BCF (pon a 0 un bit del registro f)BCF (pon a 0 un bit del registro f)
CCFF DPE MÓDULO DE PROYECTOS 15
BSF (pon a 1 un bit del registro f)BSF (pon a 1 un bit del registro f)
CCFF DPE MÓDULO DE PROYECTOS 16
BTFSC (Testea un Bit y Salta si Cero) (1)BTFSC (Testea un Bit y Salta si Cero) (1)
Si se produce el salto (bit=0) la instrucciSi se produce el salto (bit=0) la instruccióón n tarda 2 ciclos en ejecutarse, por el contrario tarda 2 ciclos en ejecutarse, por el contrario si no se produce salto solo tarda 1 ciclo en si no se produce salto solo tarda 1 ciclo en ejecutarse.ejecutarse.
CCFF DPE MÓDULO DE PROYECTOS 17
BTFSC (Testea un Bit y Salta si Cero) (2)BTFSC (Testea un Bit y Salta si Cero) (2)
CCFF DPE MÓDULO DE PROYECTOS 18
BTFSS (Testea un Bit y Salta si BTFSS (Testea un Bit y Salta si SetSet) (1)) (1)
Si se produce el salto (bit=1) la instrucciSi se produce el salto (bit=1) la instruccióón tarda 2 ciclos en n tarda 2 ciclos en ejecutarse, por el contrario si no se produce salto solo tarda 1ejecutarse, por el contrario si no se produce salto solo tarda 1ciclo en ejecutarse.ciclo en ejecutarse.
CCFF DPE MÓDULO DE PROYECTOS 19
BTFSS (Testea un Bit y Salta si BTFSS (Testea un Bit y Salta si SetSet) (2)) (2)
CCFF DPE MÓDULO DE PROYECTOS 20
CALL (Llamada a subrutina) (1)CALL (Llamada a subrutina) (1)
•• Tos es la cima de la pilaTos es la cima de la pila
21
CALL (Llamada a subrutina) (2)CALL (Llamada a subrutina) (2)
•• El cEl cáálculo de la direccilculo de la direccióón efectiva varn efectiva varíía sega segúún la n la familia de PIC.familia de PIC.
CCFF DPE MÓDULO DE PROYECTOS 22
CLRF (Pon a cero el registro f) (1)CLRF (Pon a cero el registro f) (1)
CCFF DPE MÓDULO DE PROYECTOS 23
CLRW (Pon a cero el registro W) CLRW (Pon a cero el registro W)
CCFF DPE MÓDULO DE PROYECTOS 24
CLRWDT (Pon a cero el registro WDT) (1)CLRWDT (Pon a cero el registro WDT) (1)
CCFF DPE MÓDULO DE PROYECTOS 25
CLRWDT (Pon a cero el registro WDT) (2)CLRWDT (Pon a cero el registro WDT) (2)
•• T0 y PD se ponen a 1 tambiT0 y PD se ponen a 1 tambiéén cuando se ejecuta n cuando se ejecuta la instruccila instruccióón SLEEPn SLEEP
CCFF DPE MÓDULO DE PROYECTOS 26
COMF (COMF (COMplementaCOMplementa F) F)
CCFF DPE MÓDULO DE PROYECTOS 27
DECF (DECF (DECrementaDECrementa F) F)
•• En el caso de que En el caso de que d=0d=0, , elel resultado se resultado se almacena en almacena en WW,y ,y ffno modifica su valor.no modifica su valor.
•• RecuRecuéérdese que al rdese que al decrementardecrementar 00h, se 00h, se obtiene 0FFH.obtiene 0FFH.
CCFF DPE MÓDULO DE PROYECTOS 28
DECFSZ (DECFSZ (DECrementaDECrementa F y Salta si F y Salta si ZeroZero))
•• En el caso de que En el caso de que d=0d=0, , elel resultado resultado se almacena en se almacena en WW,y ,y ff no modifica no modifica su valor.su valor.
•• Si el resultado es Si el resultado es cero se ignora la cero se ignora la siguiente siguiente instrucciinstruccióón ( se n ( se salta), y la salta), y la InstrucciInstruccióón tarda n tarda en ejecutarse 2 en ejecutarse 2 ciclos.ciclos.
CCFF DPE MÓDULO DE PROYECTOS 29
DECFSZ (DECFSZ (DECrementaDECrementa F y Salta si F y Salta si ZeroZero))•• En el caso de que En el caso de que
d=1d=1, , elel resultado se resultado se almacena en almacena en ffmodificmodificáándose su ndose su valor.valor.
•• Si el resultado es Si el resultado es distinto de cero se distinto de cero se ejecuta la siguiente ejecuta la siguiente instrucciinstruccióón ( no se n ( no se salta), y la salta), y la InstrucciInstruccióón tarda n tarda en ejecutarse 1 en ejecutarse 1 ciclo.ciclo.
CCFF DPE MÓDULO DE PROYECTOS 30
GOTO (Salto incondicional a la direcciGOTO (Salto incondicional a la direccióón )n )
•• GotoGoto es una es una instrucciinstruccióón que n que tarda en tarda en ejecutarse dos ejecutarse dos ciclosciclos
CCFF DPE MÓDULO DE PROYECTOS 31
INCF (INCF (INCrementaINCrementa F )F )
•• En el caso de que En el caso de que d=0d=0, , el resultado se almacena el resultado se almacena en en WW,y ,y ff no modifica su no modifica su valor.valor.
•• En el caso de que En el caso de que d=1d=1, , el resultado se almacena el resultado se almacena en en ff modificmodificáándose su ndose su valorvalor..
•• RecuRecuéérdese que al rdese que al incrementar 0FFh, se incrementar 0FFh, se obtiene 00H.obtiene 00H.
CCFF DPE MÓDULO DE PROYECTOS 32
INCFSZ (INCFSZ (INCrementaINCrementa F y Salta si F y Salta si ZeroZero) (1)) (1)
•• En el caso de que En el caso de que d=0d=0, el resultado se , el resultado se almacena en almacena en WW,y ,y ff no no modifica su valor.modifica su valor.
•• En el caso de que En el caso de que d=1d=1, el resultado se , el resultado se almacena en almacena en ffmodificmodificáándose su ndose su valorvalor..
•• RecuRecuéérdese que al rdese que al incrementar 0FFh, se incrementar 0FFh, se obtiene 00H.obtiene 00H.
CCFF DPE MÓDULO DE PROYECTOS 33
INCFSZ (INCFSZ (INCrementaINCrementa F y Salta si F y Salta si ZeroZero)(2))(2)
Si el resultado es cero se Si el resultado es cero se ignora la siguiente ignora la siguiente instrucciinstruccióón ( se salta), y n ( se salta), y la Instruccila Instruccióón tarda en n tarda en ejecutarse 2 ciclos.ejecutarse 2 ciclos.
Si el resultado es distinto Si el resultado es distinto de cero se ejecuta la de cero se ejecuta la siguiente instruccisiguiente instruccióón ( no n ( no se salta), y la Instruccise salta), y la Instruccióón n tarda en ejecutarse 1 tarda en ejecutarse 1 ciclo.ciclo.
CCFF DPE MÓDULO DE PROYECTOS 34
IORLW (OR LIORLW (OR Lóógica de W con un Literal)gica de W con un Literal)
CCFF DPE MÓDULO DE PROYECTOS 35
IORWF (OR LIORWF (OR Lóógica de W con un registro F)gica de W con un registro F)
CCFF DPE MÓDULO DE PROYECTOS 36
MOVLW (MOVLW (MOVerMOVer un Literal a W )un Literal a W )
CCFF DPE MÓDULO DE PROYECTOS 37
MOVF (MOVF (MOVerMOVer un registro un registro FsrFsr))Al ejecutar la instrucciAl ejecutar la instruccióónn
MOVF FSR, 1MOVF FSR, 1
No realizamos ningNo realizamos ningúún n cambio ya que el cambio ya que el registro se queda como registro se queda como estaba, pero sin estaba, pero sin embargo nos sirve para embargo nos sirve para chequear su contenido chequear su contenido ya que el ya que el FLAG Z FLAG Z se se actualiza.actualiza.
CCFF DPE MÓDULO DE PROYECTOS 38
NOP (No NOP (No OPeraciOPeracióónn))
Esta instrucción no hace nada, simplemente consume un ciclo de instrucción.
CCFF DPE MÓDULO DE PROYECTOS 39
RETFIE (Retorno de interrupciRETFIE (Retorno de interrupcióón)n)Carga el PC con el valor Carga el PC con el valor que se encuentra en la que se encuentra en la cima de la pila (TOS).cima de la pila (TOS).
Pone a 1 el bit Pone a 1 el bit GIE, GIE, con con el fin de autorizar de el fin de autorizar de nuevo las nuevo las interrupciones.interrupciones.
Esta es una instrucciEsta es una instruccióón n que tarda en ejecutarse que tarda en ejecutarse 2 ciclos de instrucci2 ciclos de instruccióónn
CCFF DPE MÓDULO DE PROYECTOS 40
RETLW (Retorno y carga un literal en W) RETLW (Retorno y carga un literal en W)
Carga el registro W Carga el registro W con el literal k, con el literal k, despudespuéés Carga el PC s Carga el PC con el valor que se con el valor que se encuentra en la cima encuentra en la cima de la pila (TOS), de la pila (TOS), efectuando un retorno efectuando un retorno de subrutina.de subrutina.
CCFF DPE MÓDULO DE PROYECTOS 41
RETLW (Retorno y carga un literal en W) RETLW (Retorno y carga un literal en W)
Es una instrucciEs una instruccióón n que tarda en que tarda en ejecutarse 2 ciclos.ejecutarse 2 ciclos.
CCFF DPE MÓDULO DE PROYECTOS 42
RETURN (Retorno de subrutina) RETURN (Retorno de subrutina)
Carga el PC con el Carga el PC con el valor que se valor que se encuentra en la cima encuentra en la cima de la pilade la pila
Es una instrucciEs una instruccióón n que tarda en que tarda en ejecutarse 2 ciclos.ejecutarse 2 ciclos.
CCFF DPE MÓDULO DE PROYECTOS 43
RLF (Rota un bit a la izquierda el Registro RLF (Rota un bit a la izquierda el Registro F, pasando por el bit de F, pasando por el bit de CarryCarry) (1)) (1)
Si d=0 el resultado Si d=0 el resultado se almacena en W, se almacena en W, no modificno modificáándose el ndose el valor de f.valor de f.
Si d=1 el resultado Si d=1 el resultado se almacena en f.se almacena en f.
El El úúnico nico flagflag que se que se modifica es el modifica es el CarryCarry..
CCFF DPE MÓDULO DE PROYECTOS 44
RLF (Rota un bit a la izquierda el Registro RLF (Rota un bit a la izquierda el Registro F, pasando por el bit de F, pasando por el bit de CarryCarry) (2) ) (2)
CCFF DPE MÓDULO DE PROYECTOS 45
RRF (Rota un bit a la derecha el Registro RRF (Rota un bit a la derecha el Registro F, pasando por el bit de F, pasando por el bit de CarryCarry) (1) ) (1)
CCFF DPE MÓDULO DE PROYECTOS 46
RRF (Rota un bit a la derecha el Registro RRF (Rota un bit a la derecha el Registro F, pasando por el bit de F, pasando por el bit de CarryCarry) (2) ) (2)
CCFF DPE MÓDULO DE PROYECTOS 47
SLEEP (Modo de bajo consumo)SLEEP (Modo de bajo consumo)Las maneras de salir Las maneras de salir del modo de bajo del modo de bajo consumo son:consumo son:
Por un RESET, Por un RESET, activando activando MCLRMCLR
Por desbordamiento Por desbordamiento de de WDTWDT si si ééste ste quedquedóó operativo al operativo al entrar en el modo entrar en el modo reposo.reposo.
ActivaciActivacióón de una n de una interrupciinterrupcióón que no n que no sea sea TMR0TMR0, ya que , ya que esta se desactiva al esta se desactiva al entrar en reposo.entrar en reposo.
CCFF DPE MÓDULO DE PROYECTOS 48
SUBLW (Resta al literal k el contenido de W)SUBLW (Resta al literal k el contenido de W)
CCFF DPE MÓDULO DE PROYECTOS 49
SUBLW (Resta al literal k el contenido de W)
• La resta se efectúa en complemento a dos
• Z se pone a 1 si el resultado de la opración es 0
• C se pone a 0 si se genera un debe en el bit de mayor peso
• DC se pone a 1 si genera un acarreo del bit 3 al bit 4.
CCFF DPE MÓDULO DE PROYECTOS 50
SUBWF (Resta al R. F el contenido de W)
CCFF DPE MÓDULO DE PROYECTOS 51
SUBWF (Resta al R. F el contenido de W)
• La resta se efectúa en complemento a dos.
• Si d=0 el resultado queda en W, y si d=1, el resultado se guarda en f.
• Los flag afectados como en la instrucción anterior son Z, C y DC
CCFF DPE MÓDULO DE PROYECTOS 52
SWAPF (Intercambia nibbles en F)
• Los 4 bits de menor peso del registro f se intercambian con los 4 de mayor peso
• Si d=0 el resultado queda en W
• Si d=1, el resultado se guarda en f.
CCFF DPE MÓDULO DE PROYECTOS 53
XORLW (OXORLW (O--exclusiva entre W y un literal)exclusiva entre W y un literal)
CCFF DPE MÓDULO DE PROYECTOS 54
XORWF (OXORWF (O--exclusiva entre W y f)exclusiva entre W y f)
CCFF DPE MÓDULO DE PROYECTOS 55
OPTION (Inicializa el registro OPTION (Inicializa el registro optionoption))
CCFF DPE MÓDULO DE PROYECTOS 56
TRIS(Inicializa un registro TRIS)