Publicado el 19 de Julio del 2017
1.718 visualizaciones desde el 19 de Julio del 2017
25,7 KB
12 paginas
Creado hace 22a (01/08/2002)
Las Instrucciones
A continuación vamos a presentar el conjunto de instrucciones básico de
los Microcontroladores Picmicro.
En general la instrucciones de los microcontroladores pueden clasificarse
como:
CISC:
Complex Instruction Set Computer
Juego de Instrucciones Complejo, mas de 80 instrucciones
RISC
Reduced Instruction Set Computer)
Juego de Instrucciones Reducido, unas 35 instrucciones. Los
microcontroladores PICmicro son de este tipo.
SISC
Specific Instruction Set Computer
Juego de Instrucciones Especifico.
Para una mejor presentación las instrucciones se pueden clasificar
según la función que desempeñan en un programa, por ejemplo para:
- Mover
- Cambiar el contenido de los registros
- Controlar el flujo del programa
- Controlar el microcontrolador
- Realizar operaciones lógicas
- Realizar operaciones aritméticas.
Las instrucciones realizan operaciones y movimientos entre el
“acumulador” o “registro de trabajo” y los registros de la memoria RAM del
microcontrolador.
este numero puede escribirse en decimal, hexadecimal o binario
MOVLW
Carga un numero en el acumulador W.
El numero que se va a cargar en al acumulador esta representado por k,
El acumulador esta representado con la letra W (Work)
Instrucciones para mover
k
f
equ 0x6
equ 10
0x25
portb
Contador
f,d
d’255’
0xFF
b’11111111’
; decimal
; hexadecimal
; binario
Ejemplo:
MOVLW
MOVLW
MOVLW
; carga el acumulador con 0x25
; el registro portb contiene 0x25
; el registro Contador contiene 0x25
MOVWF
Mueve una copia del acumulador W al registro f.
Ejemplo:
portb
Contador
MOVLW
MOVWF
MOVWF
confuso. Mueve del registro f al registro f. No pasa nada. El dato se queda en el
mismo lugar. No hay porque preocuparse el formato de la instrucción es así.
Como veremos más adelante, en otras instrucciones, el formato de destino d=1
es mas claro. Se puede decir que en general con esta instrucción d=1 no se
utiliza. Siga adelante, entenderá mejor en un momento.
MOVF
Mueve una copia del registro f al destino d.
El destino puede ser:
Si d=0 el destino es el acumulador.
Mueve una copia del registro f al Acumulador W
Si d=1 el destino es el registro f. En este caso el formato es un poco
Contador,W
MOVF
Instrucciones para Cambiar el contenido de los registros
; mueve una copia del contenido del
; Contador al acumulador
W
f equ 1
Contador
equ 10
CLRF
El contenido del registro f se pone en ceros: 0x00
f
Ejemplo:
equ 0
; el registro portb se pone en 0x00
f,d
portb
equ 0x6
portb
Ejemplo:
CLRF
CLRW
El contenido del acumulador se pone en ceros 0x00
COMF
Complementa el contenido del registro f
Los 1 unos los pone en 0, los 0 los pone en 1.
El resultado de esta operación lo coloca en el destino d.
Si d=0 el resultado lo coloca en el acumulador
Si d=1 el resultado se coloca en el mismo registro f
Ejemplo:
W
f equ 1
Contador
equ 10
equ 0
; Contador contiene b’00001111’
; el acumulador contiene b’11110000’
b’00001111’
Contador
Contador,f
b’00001111’
Contador
Contador,W
MOVLW
MOVWF
COMF
MOVLW
MOVWF
COMF
DECF
Decrementa el registro f
El resultado de esta operación lo coloca en el destino d.
Si d=0 el resultado lo coloca en el acumulador
Si d=1 el resultado se coloca en el mismo registro f
Si el contenido del registro se encuentra en 0xFF y se ejecuta un
; Contador contiene b’00001111’
; Contador contiene b’11110000’
f,d
decremento el resultado es 0x00 .
Ejemplo:
equ 0
W
f equ 1
Contador
equ 10
d’10’
Contador
Contador,f
d’10’
Contador
Contador,W
; Contador contiene d’10’
; El acumulador contiene d’9’
MOVLW
MOVWF
DECF
MOVLW
MOVWF
DECF
INCF
Incrementa el registro f
El resultado de esta operación lo coloca en el destino d.
Si d=0 el resultado lo coloca en el acumulador
Si d=1 el resultado se coloca en el mismo registro f
Si el contenido del registro se encuentra en 0xFF y se ejecuta un
; Contador contiene d’10’
; Contador contiene d’9’
f,d
Incremento el resultado es 0x00 .
Ejemplo:
equ 0
W
f equ 1
Contador
equ 10
; Contador contiene d’10’
; El acumulador contiene d’11’
; Contador contiene d’10’
; Contador contiene d’11’
d’10’
Contador
Contador,f
d’10’
Contador
Contador,W
MOVLW
MOVWF
INCF
MOVLW
MOVWF
INCF
BCF
Pone en cero el bit b del file f .
Los bits del registro f se numeran de 0 a 7.
f,b
Ejemplo:
Contador
equ 10
b’11111111’
Contador
Contador,0
Contador,7
MOVLW
MOVWF
BCF
BCF
BSF
Pone en uno el bit b del file f .
Ejemplo:
Contador
equ 10
f,b
; Contador b’11111111’
; Contador b’11111110’
; Contador b’01111110’
f,d
b’00000000’
Contador
Contador,0
Contador,7
; Contador b’00000000’
; Contador b’00000001’
; Contador b’10000001’
MOVLW
MOVWF
BSF
BSF
RLF
Rota el contenido del registro f una posición a la izquierda.
El bit se rota a través de la bandera “carry” . La bandera carry esta en el
bit 0 del registro STATUS, que se localiza en la posición 0x03 de la memoria del
microcontrolador. Cada vez que se ejecuta la instrucción los bits se rotan una
posición a la izquierda, el bit menos significativo es ocupado por el contenido de
la bandera carry y el bit más significativo pasa a ocupar el lugar de la bandera
carry.
El resultado de la operación se coloca en el destino d
Ejemplo:
W
f equ 1
STATUS
C
Contador
equ 0x03
equ 0
equ 10
equ 0
BCF
STATUS,0
; carry a 0
Contador,f
; Contador b’11111111’
b’11111111’
Contador
MOVLW
MOVWF
RLF
RRF
Rota el contenido del registro f una posición a la derecha
El bit se rota a través de la bandera “carry” . Cada vez que se ejecuta la
instrucción los bits se rotan una posición a la derecha, el bit más significativo es
ocupado por el contenido de la bandera carry y el bit menos significativo pasa a
ocupar el lugar de la bandera carry.
; Contador b’11111110’
f,d
El resultado de la operación se coloca en el destino d
Ejemplo:
W
f equ 1
STATUS
C
Contador
equ 0x03
equ 0
equ 10
equ 0
f,d
; carry a 0
Contador,f
STATUS,0
; Contador b’11111111’
; Contador b’01111111’
b’11111111’
Contador
BCF
MOVLW
MOVWF
RRF
SWAPF
Intercambia el nible más significativo y el nible menos significativo.
El resultado de la operación se coloca en el destino d.
Ejemplo:
W
f equ 1
Contador
equ 10
equ 0
; Contador b’11110000’
; Contador b’00001111’
b’11110000’
Contador
Contador
MOVLW
MOVWF
SWAPF
Instrucciones para controlar el flujo del programa.
GOTO
Salta a la etiqueta k
Ejemplo:
Contador
equ 10
k
b’00000000’
Contador
Programa1
; Contador b’00000000’
; El programa continua en Programa1
MOVLW
MOVWF
GOTO
---------
---------
---------
; Contador b’00000001’
; Contador b’10000001’
; Contador b’00000001’
; Contador b’10000001’
; ejecuta la subrutina CargaContador
; aquí sigue después de subrutina
k
Contador,0
Contador,7
Programa1
BSF
BSF
CALL
Salta a una subrutina en la etiqueta k
Ejemplo:
Contador
equ 10
Contador1 equ 11
BSF
BSF
CALL
-------
-------
-------
-------
CargaContador
Contador,0
Contador,7
CargaContador
MOVLW
MOVWF
Return
RETURN
b’00000000’
Contador
; Contador b’00000000’
Regresa de una subrutina
RETLW
Regresa de una subrutina. Con el numero k en el acumulador.
k
RETFIE
Regresa de una interrupción.
f,b
BTFSC
Prueba el bit b del registro f .
Salta la siguiente instrucción si bit b es 0.
equ 11
equ 0
Entrada, Switch
ChecaElSwitch
; Checa que Switch este en 0
; El Switch esta en 1, regresa
; El Switch ya esta en 0
f,b
BTFSS
Prueba el bit b del registro f .
Salta la siguiente instrucción si bit b es 1.
Ejemplo:
ChecaElSwitch
BTFSC
GOTO
-------
-------
-------
Entrada
Switch
ChecaElSwitch
BTFSS
GOTO
-------
-------
-------
Entrada
Switch
Ejemplo:
equ 11
equ 0
Entrada, Switch
ChecaElSwitch
; Checa que Switch este en 1
; El Switch esta en 0, regresa
; El Switch ya esta en 1
f,d
DECFSZ
Decrementa el registro f
Salta la siguiente instrucción si el resultado es 0
El resultado de la operación se coloca en el de
Comentarios de: Las Instrucciones básicas de los Microcontroladores Picmicro (0)
No hay comentarios