Documente Academic
Documente Profesional
Documente Cultură
ADDLW
Suma un valor designado por el programador al registro W
Ejemplo
ADDLW
.128
Si W tena cargado un valor = .5, despus de la instruccin W tiene cargado el valor .133
Para recordar, ADD es sumar, L es Literal y W es el registro W
Afecta a:
Z Se pone a 1 si la operacin es 0
ADDWF
Suma el valor del registro W con el valor de un registro cualquiera. El destino de esta suma, lo elige el programador.
Ejemplo:
ADDWF
TEMP,W
Si W tena guardado .133 y la pocicin de la RAM llamada TEMP tena el valor cargado con .2, W vale .135 y TEMP contina
valiendo .2
Ahora si hubiera puesto as:
Ejemplo:
ADDWF
TEMP,F
Z Se pone a 1 si la operacin es 0
ANDWF
Realiza la operacin AND entre W y un registro designado por el programador. El destino de esta operacin lo elije el
programador.
Ejemplo:
ANDWF
TEMP,F
Si antes de la instruccin W vale B'11100011' y TEMP vale B'00111010' Despus de la instruccin TEMP vale B'00100010' y
W vale B'11100011'
Afecta a: Z Se pone a 1 si la operacin es 0
BCF
Pone a 0 el bit de un registro. El bit debe ser indicado por el programador.
Ejemplo:
BCF
TEMP,2
Antes de la instruccin TEMP vale B'11111111'. Despus de la instruccin TEMP vale B'11111011'
Para recordar, Bit Clear es borrar File es archivo o registro
No afecta ningn bit del registro Status.
BSF
Pone a 1 el bit de un registro. El bit debe ser indicado por el programador.
Ejemplo:
BSF
TEMP,0
Antes de la instruccin TEMP vale B'01110110'. Despus de la instruccin TEMP vale B'01110111'
Para recordar, Bit Set es poner a 1 File Archivo o registro
No afecta a ningn Bit del registro Status.
BTFSC
Salta un lnea si el bit de un registro es cero. El bit debe ser indicado por el programador.
Ejemplo:
BTFSC
BCF
BSF
TEMP,5
PORTA,0
PORTB,0
Caso 1:
TEMP vale B'00011110'. El CP analizar solo el Bit 5 del registro TEMP, como es 0, salta la instruccin BCF PORTA,0 y
ejecuta la siguiente lnea que es BSF PORTB,0 y continua haciendo la instruccin.
Caso 2:
TEMP vale B'00111000'. El CP analizar solo el Bit 5 del registro TEMP, como es 1 no salta la instruccin y har la instruccin
BCF PORTA,0 y luego continua con la instruccin BSF PORTB,0
Para recordar Bit Test es chequear File Skip es salto Clear
BTFSS
Salta una lnea si el bit de un registro es 1. EL bit debe ser indicado por el programador.
Ejemplo:
BTFSS
ADDWF
ANDWF
TEMP,3
PORTC
NODO
Caso 1:
TEMP vale B'01101100'. El CP analizar solo el Bit 3 del registro TEMP, como es 1, salta la instruccin ADD PORTC y
CALL
ESC_PORTB
GOTO
INICIO
Para recordar GO TO es ir a.
CLRF
Borra el contenido de un registro seleccionado por el programador. La forma en que lo hace, pone en 0 los 8 bit del registro.
Este registro, puede ser cualquiera de la pocicin de la RAM.
Ejemplo:
CLRF
PORTB
Antes de la instruccin PORTB vale B'11000111'. Despus de la instruccin PORTB vale B'00000000'
Para recordar CLeaR es limpio File es archivo o registro.
Afecta a:
Z Se pone a 1
CLRW
Borra al registro W. La forma en que lo hace, pone en 0 los 8 bit del registro.
Ejemplo:
CLRW
CLRWDT
TO (neg) Se pone a 1
PD (neg) Se pone a 1
NOTA: El WDT o el contador perro guardin, sirve para destrabar al PIC. Cada vez que se desborda, o sea, cada vez que pasa
de H'FF' a H'00', produce un reset, y como es un reset, se dirige a la posicin 0h de la memoria de programa.
La forma de trabajar con l, es ir poniendo en lugares estratgicos la instruccin ya explicada, de esta manera evitamos el
desborde del contador. Si el CP se traba en algn bucle o algo similar, al no limpiar el contador, el WDT desbordar y llevar al
CP a la posicin 0h de la memoria de programa.
Muchas veces se evita de usar esta herramienta por no tener que calcular por todo el programa dnde y cundo limpiar al WDT.
Es recomendable su uso.
COMF
Realiza el complemento de un registro.
Cdigo:
COMF
TEMP,F
Si TEMP tena guardado B'00111101' luego de ejecutar la instruccin TEMP vale B'11000010'. Notese, que aqu tambin
podemos elegir el destino y esto nos deja guardarlo en el registro W si as lo requerimos.
Para recordar COMlement es complemento File es registro.
Afecta a:
Z Se pone a 1 si la operacin da 0
DECF
Decrementa en una unidad, o lo que es lo mismo, resta 1 el contenido de un registro
Cdigo:
DECF
DECENA,W
Si antes de la instruccin DECENA vale .255, despus de la instruccin W vale .254 y DECENA vale .255 Si por el contrario,
hubieramos elegido el destino F, despus de la instruccin DECENA vale .254
Z se pone a 1 si la operacin es 0
DECFSZ
Decrementa en uno, o lo que es lo mismo, resta en 1 el contenido de un registro y cuando este vale 0, el CP salta una
instruccin
Cdigo:
LOOP
DECFSZ
GOTO
BCF
TEMP
LOOP
PORTB,0
El CP descontar en 1 el registro TEMP y evala el valor, si no es cero, ejecuta lnea siguiente que es GOTO LOOP, el cual se
dirige de nuevo a la lnea LOOP DECFSZ TEMP el cual volver a descontar en 1 y evala el valor, si es cero salta la lnea
GOTO LOOP y ejecuta la instruccin BCF PORTB. Esta ltima lnea, el programador pondr la instruccin que necesite
ejecutar.
Este pequeo programa que acabamos de ver, es un temporizador o un retardo que tardar en salir del bucle dependiendo de la
frecuencia de reloj y el valor cargado en TEMP.
NOTA: Esta instruccin, tambin hay que elegirle el destino. En el caso que no se exprese, como en este caso, el MPLAB
dar por sentado que el resultado se guardar en el registro F y no en W.
Para recordar DECrement es decremento File es registro Skip es salto Zero que es cero.
INCF
Incrementa en 1, o suma 1, el contenido de un registro elegido por el programador.
Cdigo:
INCF
INDF,F
Si antes de la instruccin INDF vale H'29', despus de la instruccin INDF vale H'2A'. Notese que tambin podemos elgeir el
destino. Si hubieramos elegido W, despus de la instruccin W vale H'2A' y INDF vale H'29'.
Para recordar INCrement es incremento File es registro.
Afecta a: Z se pone a 1 si el resultado es 0
INCFSZ
Incrementa en 1, o suma en 1, el contenido de un registro elegido por el programador y cuando este es 0, el CP salta una
instruccin.
Cdigo:
VOLVER
INCFSZ
GOTO
INCF
CONTADOR
VOLVER
PORTA
El CP incrementar en 1 el registro CONTADOR y evala el valor, si no es cero, ejecuta lnea siguiente que es GOTO
VOLVER, el cual se dirige de nuevo a la lnea VOLVER INCFSZ CONTADOR el cual volver a incrementar en 1 y evalua
el valor, si es cero salta la lnea GOTO VOLVER y ejecuta la instruccin INCF PORTA. Esta ltima lnea, el programador
pondr la instruccin que necesite ejecutar.
Este pequeo programa que acabamos de ver, es un temporizador o un retardo que tardar en salir del bucle dependiendo de la
frecuencia de reloj y el valor cargado en CONTADOR. Normalmente, se utiliza el retardo con DECFSZ pero este tambin es
vlido.
NOTA: Esta instruccin, tambin hay que elegirle el destino. En el caso que no se exprese, como en este caso, el MPLAB
dar por sentado que el resultado se guardar en el registro F y no en W.
Para recordar INCrement es incremento File es registro Skip es salto Zero es cero.
IORLW
Realiza la operacin OR entre W y un literal elegido por el programador. El resultado se guarda en W. La operacin es W OR
L.
Si antes de la instuccin W vale B'01110100' y el literal elegido es B'00011111', despus de la instruccin W vale B'01111111'.
Para recordar Inclusive es inclusivo OR es la operacin binaria OR Literal es literal W es el registro trabajo.
Afecta a:
Z se pone a 1 si la operacin da 0
IORWF
Realiza la operacin lgica OR entre el registro W y un registro elegido por el programador. La operacin es W OR F.
Cdigo:
IORWF
PORTC,F
Si antes de la instruccin W vale B'01111111' y PORC vale B'00001111' despus de la instruccin PORTC vale B'01111111' y
W vale B'01111111'. Ntese que podemos elegir el destino y la otra opcin, como ya se dieron cuenta por las instrucciones
pasadas, puede ser W.
Para recordar Inclusive es inclusivo OR es la operacin binaria OR W es el registro trabajo y File es registro.
Afecta a: Z se pone a 1 si el resultado es 0
MOVLW
Carga al registro W con un literal elegido por el programador para luego hacer una operacin matemtica o moverlo a otro
registro como veremos ms adelante. Sin duda alguna, una de las instrucciones ms usadas en la programacin ASM.
Cdigo:
MOVLW
.255
MOVF
RETARDO,W
Si antes de la instruccin W vale H'2A' y RETARDO vale H'FF', despus de la instruccin W vale H'FF'. Notese que aqu
podemos elegir el destino, y tenemos la posibilidad de elegir el destino al propio registro RETARDO. Al principio parece
innecesario, pero se puede tomar como una verificacin, ya que se ve afectado el registro STATUS bit Z.
Para recordar MOVe es mover y File es registro.
Afecta a: Z Se pone a 1 si la operacin es 0
MOVWF
Mueve el contenido del registro W a un registro cualquiera elegido por el programador. Sin duda alguna, esta instruccin, es
otra muy usada en la programacin ASM
Cdigo:
MOVWF
ADCON0
Si antes de la instruccin W vale B'10000001' y ADCON0 vale 0x0, despus de la instruccin ADCON0 vale 0x81.
Para recordar MOVe es mover W es el registro W y File es registro.
No afecta ningn bit del registro STATUS.
NOP
No realiza ninguna operacin. Solo consume un ciclo de instruccin.
Cdigo:
NOP
RETFIE
RETLW
'L'
La diferencia con RETLW es que RETURN regresa sin cambiar a W. Este se utiliza para terminar una rutina y no se necesite
ningn dato. Por ejemplo en la rutina CALL LCD_DATO no nos sirve que vuelva con ningn valor ya que es una rutina para
enviar datos a un LCD, asi que esta rutina tendr implementada RETURN
Cdigo:
RETURN