Você está na página 1de 13

rea de Ingeniera

PIC 16F87X

Instrucciones Aritmticas y Lgicas


Incrementos y Decrementos
Rotaciones

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Instrucciones Aritmticas

ADDWF f,d
ADDLW k
SUBWF f,d
SUBLW k

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Cmo saber si dos valores son


iguales o no

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Partes de un programa en
Directiva ORG:
ASM ORG <exp>
Sirve para indicar la direccin de memoria en la cual ser colocada el cdigo generado a continuacin. Ejemplo
ORG 0x04
nop
Indica que el siguiente nop se colocar en la direccin 0x04 de la direccin de programa.

DIRECTIVA EQU: <identificador> EQU <expresin>


Permite asignar el valor de expresin al identificador. El general el identificador es un nombre que le es mas familiar al
programador.

DIRECTIVA END: END


Es de uso obligatorio y siempre se coloca al final del programa sirve para marcar el final del programa. El MPLAB solo
reconoce las lneas que estn escritas previas a la aparicin de la directiva END.

DIRECTIVA LIST
Sirve para indicarle al MPLAB cual es el formato del archivo *.list dentro de los parmetros esta el tipo de procesador que se
va a emplear. Ejemplo:
list p=16F877

IMC@
DIRECTIVA INCLUDE: include <file> Diseo y Programacin de Controladores
Sirve para incluir en el ensamblado el archivo indicado por el parametro file.
include <p16f877.inc>
rea de Ingeniera

Resta
Para restar sumamos usando el complemento A2 del sustraendo
0000 1001 (9)
1111 1100 (-4)
------------------
0000 0101 en esta suma se produce un carry. Exp (9 4 = 5)

0000 1001 (9)


1111 0110 (-10)
------------------
1111 1111 en esta suma no se produce un carry. Exp (9 10 = -1) -
1? -1? como -1?

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Resta
Cuando el sustraendo es mayor que el
minuendo entonces no se produce carry.
La instruccin subwf f,d produce F W y la
instruccin sublw k produce K W.
S W es mayor que K o F entonces no se
producir un carry en la resta.

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Cmo saber si un dato es mayor


que otro

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Instrucciones Lgicas
ANDWF f,d
ANDLW k
COMF f,d
IORWF f,d
IORLW k
XORWF f,d
XORLW k

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

AND y OR
Con la operacin AND podemos poner a cero los bits que
deseemos.
Ej. El registro W contiene el dato 0xFA, si quisera poner a
cero los 4 bits menos significativos entonces ejecuto un
andlw 0xF0 (11110000). S quisiera poner a cero el bit 4
solamente entonces ejecuto un 0xEF (11101111). A esto
se le llama Masking.
La OR puede usarse para poner a uno bits. Ej: s W =
0x20, para poner a uno el bit cero pudiera ejecutar un iorlw
0x01 (0000 0001)

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

SWAP Entre W y Un Registro

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Incrementos y Decrementos
INCF f,d
DECF f,d
INCFSZ f,d
DECFSZ f,d

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Delay

IMC@
Diseo y Programacin de Controladores
rea de Ingeniera

Rotaciones
RLF f,d
RRF f,d

IMC@
Diseo y Programacin de Controladores

Você também pode gostar