Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OBJETIVO
Internalizar el funcionamiento del microcontrolador PIC.
1. Sintaxis de las instrucciones
2. Acumulador (W)
3. Funciones relacionado a los Registros
MARCO TERICO
Donde:
OPCODE, corresponde a la instruccin en s. Puede corresponder a una instruccin
aritmtica, lgica, de sistema, etc.
1/12
Profesor: Alberto Takaoka
LENGUAJE ENSAMBLADOR
SET INSTRUCCIONES
MNEMNICO
DESCRIPCIN CDIGO OP BANDERAS NCIC NOTAS
OPERANDOS
DECFSZ f,d f - 1 d (si es 0 salta) 00 1011 dfff ffff Ninguna 1(2) 1,2,3
INCFSZ f,d f + 1 d (si es 0 salta) 00 1111 dfff ffff Ninguna 1(2) 1,2,3
RLF f,d Rota f izq por carry d 00 1101 dfff ffff C 1 1,2
RRF f,d Rota f dcha por carry d 00 1100 dfff ffff C 1 1,2
NOTA:
w, acumulador
f, direccin del Registro que contiene el dato
d, Registro donde quedar el resultado de la operacin
0, en el acumulador
1, en el Registro donde estaba el dato
2/12
Profesor: Alberto Takaoka
Instrucciones orientadas a bit
MNEMNICO
DESCRIPCIN CDIGO OP BANDERAS NCIC NOTAS
OPERANDOS
BCF f,b Pone a 0 bit b de registro f 01 00bb bfff ffff Ninguna 1 1,2
BSF f,b Pone a 1 bit b de registro f 01 01bb bfff ffff Ninguna 1 1,2
BTFSC f,b Salto si bit b de reg. f es 0 01 10bb bfff ffff Ninguna 1(2) 3
BTFSS f,b Salto si bit b de reg. f es 1 01 11bb bfff ffff Ninguna 1(2) 3
NOTA:
f, direccin del Registro que contiene el dato a modificar
b, el bit a modificar
MNEMNICO
DESCRIPCIN CDIGO OP BANDERAS NCIC NOTAS
OPERANDOS
NOTA:
w, acumulador
k, valor del dato
3/12
Profesor: Alberto Takaoka
EJERCICIOS RESUELTOS
DETERMINACIN DE LAS INSTRUCCIONES
En cada uno de los ejercicios indique la tabla en la que encontrar la instruccin y escriba la
instruccin.
1. Guardar el dato 0x05 en el acumulador.
Solucin
Lo que se desea guardar en acumulador(w) es el literal(k) 0x05.
Por lo tanto se debe buscar la orden en la tabla orientada a literales y control.
MNEMNICO
DESCRIPCIN
OPERANDOS
MOVLW k kw
La instruccin se escribe:
movlw 0x05
MNEMNICO
DESCRIPCIN
OPERANDOS
MOVF f,d fd
En este caso f = 0x86 porque es la direccin del registro cuyo contenido se desea guardar
en el acumulador(w) y d =0 dado que se desea que el contenido del registro quede en el
acumulador (w).
En definitiva, la instruccin se debe escribir:
movf 0x86,0
MNEMNICO
DESCRIPCIN
OPERANDOS
BSF f,b
4/12
Profesor: Alberto Takaoka
En este caso f = 0x03 porque es la direccin del registro en el que se modificara un bit y
b=5 ya que es el bit que se cambiar a 1.
La instruccin se debe escribir:
bsf 0x06,5
5/12
Profesor: Alberto Takaoka
EJERCICIOS PROPUESTOS
DETERMINACIN DE LAS INSTRUCCIONES
En cada uno de los ejercicios determine el objeto a operar (Registro, bit, literal o control),
la tabla en que buscara la instruccin, identifique la instruccin y sus parmetros.
1. Sumar el valor 0XE5 al valor que est en el acumulador y dejar el resultado en el
registro 0XE5.
2. Copiar el valor del acumulador al registro 0x0C.
3. Restar al valor 0x0C lo que contiene el acumulador y dejar el resultado en el
acumulador.
4. Poner en cero el bit 3 del registro 0x04.
5. Aumentar en 1 el valor del registro 0x75 y dejar el resultado en el mismo registro
0x75.
6. Poner en reposo el microcontrolador.
7. Poner en cero todos los bits del registro 0x06.
8. Intercambiar los nibles del registro 0x0D y dejar el resultado en el acumulador.
9. Si el bit 4 del registro 0x10 es cero, saltar la siguiente instruccin.
10. Al regresar de la subrutina, cargar el valor 0xAF en el acumulador.
6/12
Profesor: Alberto Takaoka
FUNCIONAMIENTO DE LA INSTRUCCIONES
El PIC solo puede procesar uno o dos datos por instruccin, en el caso de procesar dos
datos, uno siempre debe estar en el registro de trabajo o acumulador W y el otro debe
provenir de la propia instruccin o de un registro.
Cada uno de los registros de la memoria de datos tiene un largo de 8 bits, los cuales pueden
ser 0 o 1. Su direccin corresponde a la que tenga en la memoria de datos.
7 6 5 4 3 2 1 0 Posicin del bit
0 0 1 1 1 0 1 0 Contenido del registro 0x3A
NOTA
No se puede realizar operaciones directas entre:
Dos datos literales entre si, ejemplo 1.
Datos que estn en registros, ejemplo 2.
Datos literales y que est en un registro, ejemplo 3.
En todos estos casos es necesario traspasar uno de los datos al acumulador(W).
EJECICIOS RESUELTOS
SEGN EL FUNCIONAMIENTO DEL MICROCONTROLADOR PIC
Utilizando las instrucciones del ensamblador proporcione las instrucciones necesarias para
dar solucin a los problemas propuestos.
1. Entre los datos 0x18 y 0xE1 realizar la operacin AND el resultado dejarlo en el
acumulador(W).
Solucin
Observacin: En este ejemplo se requiere operar con dos datos de tipo literal. No es
posible, uno de ellos debe quedar en el acumulador.
7/12
Profesor: Alberto Takaoka
Como el orden de los datos para la operacin AND no importa se guardar en el
acumulador (W) el nmero 0xE1.
movlw 0xE1
Segn el requerimiento buscaremos en las tablas de instrucciones las
correspondientes a las orientadas a literales. La instruccin que se necesita es:
MNEMNICO
DESCRIPCIN
OPERANDOS
ANDLW k w AND k w
2. Realizar operacin AND entre un dato que est almacenado en el registro 0x0c y otro
dato que est guardado en el registro 0x85. El resultado dejarlo en el acumulador(w)
MNEMNICO Solucin
DESCRIPCIN
OPERANDOS Observacin: El requerimiento es
operar con datos que estn en registros. No es
MOVF f,d f d posible, uno de ellos debe quedar en el
acumulador.
Como la operacin AND es conmutativa se copiar en el acumulador(w) el contenido
del registro 0x0C.La instruccin es:
MNEMNICO
DESCRIPCIN
OPERANDOS
movf 0x0C,0
Ahora se puede realizar la operacin AND. La instruccin es:
andwf 0x85,0
3. Haga la operacin AND entre un dato que est en el registro 0x1B y el nmero 0xFA. El
resultado dejarlo en el registro 0x1B.
Solucin
Observacin: El requerimiento es operar con un dato literal,0xFA, y uno que estn en
un registro, 0x1B. No es posible, uno de ellos debe quedar en el
acumulador.
Aunque el operador AND es conmutativa, conviene dejar en el acumulador(w) el
literal,0xFA, ya que el resultado debe quedar en el registro 0x1B. La instruccin a
utilizar para esto es:
MNEMNICO
DESCRIPCIN
OPERANDOS
8/12
Profesor: Alberto Takaoka
MOVLW k kw
movlw 0XFA
9/12
Profesor: Alberto Takaoka
Ahora se puede realizar la operacin AND, con la instruccin:
MNEMNICO
DESCRIPCIN
OPERANDOS
andwf 0x1B,1
En los siguientes ejercicios indique los valores que tienen el acumulador (w) y los registros
involucrados, despus que se ejecute cada una de las instrucciones.
4. Se dan las siguientes instrucciones: movlw 0x0B, movwf 0x1C. Inicialmente el
acumulador(w) y el registro 0x0C tienen el valor 0.
Solucin
Observacin: Los objetos involucrados son el acumulador, w, el literal 0x0B y el
registro cuya direccin es 0x1C.
REGISTROS
INSTRUCCIN w 0x1C
0 0
movlw 0x0B 0x0B 0
movwf 0x1C 0x0B 0x0B
REGISTROS
INSTRUCCIN w 0x12
0xAD 0XC3
Subwf 0x12,1 0xAD 0x16
6. En el registro 0x05 se ingres el valor 0x47 y en el registro 0x06 el valor 0x39. Luego se
ejecutan las siguientes ordenes: movf 0x06,0; iorwf 0x05,0; movwf 0x0D. Inicialmente el
acumulador, w, y el registro con direccin 0x0D tienen el valor 0.
Solucin
Observacin: Los objetos involucrados son el acumulador, w, con valor 0 y los
registros con direcciones 0x05, 0x06 y 0x0D. Sus valores iniciales
respectivamente son 0x47,0x39 y 0.
10/12
Profesor: Alberto Takaoka
REGISTROS
INSTRUCCIN w 0x05 0x06 0x06
0 0x47 0x39 0
movf 0x06,0 0x39 0x47 0x39 0
iorwf 0x05,0 0x7F 0x47 0x39 0
movwf 0x0D 0x7F 0x47 0x39 0x7F
La instruccin iorwf 0x05,0 realiza una operacin OR entre el contenido de w y el del
registro 0x05, dejando el resultado en acumulador, w.
Como en el acumulador esta almacenado 0x39 y en el registro 0x05el valor 0x47, la operacin
OR se realiza entre estos valores.
001110012 0x39
OR
010001112 0x47
011111112 0x7F
7. Inicialmente en el acumulador
11/12
Profesor: Alberto Takaoka
SOLUCIN EJERCICIOS
DETERMINACIN DE LAS INSTRUCCIONES
1. La solucin es
12/12
Profesor: Alberto Takaoka