Programacion
El PIC usa un juego de instrucciones tipo RISC, cuyo número puede variar desde 35 para PICs de gama baja a 70 para los de gama alta. Las instrucciones se clasifican entre las que realizan operaciones entre el acumulador y una constante, entre el acumulador y una posición de memoria, instrucciones de condicionamiento y de salto/retorno,implementación de interrupciones y una para pasar a modo de bajo consumo llamada sleep. Microchip proporciona un entorno de desarrollo freeware llamado MPLAB que incluye un simulador software y un ensamblador.
Antes de continuar es necesario definir algunos terminos que se usaran para explicar las instrucciones:
f: cualquier registro del microcontrolador
W: registro de trabajo
b: posicion de unbit en el registro ‘f’
d: destino, puede ser ‘f’ (d=1) o ‘W’ (d=0)
etiqueta: grupo de caracteres que marcan el inicio de una parte del programa
[]: opcional
: posicion de un bit dentro de un registro
Instrucciones orientadas a registros
ADDWF: Suma W y f
Suma el contenido del registro ‘W’ y el registro ‘f’. Si “d” es 0, el resultado se almacena en el registro W. Si ‘d’ es 1 elresutado se almacena en el registro ‘f’.
Sintaxis: [etiqueta] ADDWF f,d
Operación: (W) + (f) –> (destino)
Flags afectados: C, DC, Z
Ejemplo: ADDWF REG,1
Antes de la instrucción: W=0×03, REG=0×04
Después de la instrucción: W=0×03, REG=0×07
ANDWF: W AND f
Realiza la operación lógica AND entre el registro W y el registro “f”. Si “d” es 0 el resultado se almacena en el registroW. Si “d” es 1, el resultado se almacena en el registro “f”.
Sintaxis: [etiqueta] ANDWF f,d
Operación: (W) AND (f) –> (destino)
Flags afectados: Z
Ejemplo: ANDWF REG,1
Antes de la instrucción: W=0×17, REG= 0xC2
Después de la instrucción: W=0×17, REG= 0×02
CLRF: Borra un registro
Borra el contenido del registro ‘f’ y se activa el flag Z.
Sintaxis: [etiqueta] CLRF fFlags afectados: Z
Ejemplo: CLRF REG
Antes de la instrucción: REG=0×54
Después de la instrucción: REG=0×00, Z=1
CLRW: Borra el registro de trabajo W
Borra el contenido del registro ‘W’ y se activa el flag Z. Esta instruccion no tiene operandos.
Sintaxis: [etiqueta] CLRW
Flags afectados: Z
Ejemplo: CLRW
Antes de la instrucción: W=0×54
Después de la instrucción: W=0×00,Z=1
COMF: Complementa el registro f
El contenido del registro ‘f’ se complementa. Si d=0 el resultado se almacena en el registro W. Si d=1 el resultado se almacena en el registro ‘f’.
Sintaxis: [etiqueta] COMF f,d
Flags afectados: Z
Ejemplo: COMF REG,0
Antes de la instruccion: REG=0×13
Después de la instrucción: REG=0×13, W=0xEC
DECF: Decrementa f en 1
De decrementa enuno el contenido del registro ‘f’. Si d=0, el resultado se almacena en W. Si d=1, el resultado se almacena en ‘f’.
Sintaxis: [etiqueta] DECF f,d
Flags afectados: Z
Ejemplo: DEC CONT, 1
Antes de la instrucción: CONT=0×01, Z=0
Después de la instrucción: CONT=0×00, Z=1
DECFSZ: Decrementa en 1 y salta si el resultado es 0
El contenido del registro ‘f’ se decrementa. Si ‘d=0, elresultado se coloca en el registro W. Si d=1, el resultado se coloca en el registro ‘f’. Si el resultado es 0, se salta la siguiente instrucción y se continúa con la ejecución.
Sintaxis: [etiqueta] DECFSZ f,d
Flags afectados: Ninguno
INCF: Incrementa el registro f
Incrementa en uno el contenido del registro ‘f’. Si d=0, el resultado se almacena en W. Si d=1, el resultado se almacena en‘f’.
Sintaxis: [label] INCF f,d
Flags afectados: Z
Ejemplo: INCF CONT,1
Antes de la instrucción: CONT=0xFF, Z=0
Después de la instrucción: CONT=0×00, Z=1
INCFSZ: Incrementa en 1 y salta si el resultado es 0
El contenido del registro ‘f’ se incrementa. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado se coloca en el registro ‘f’. Si el resultado es 0, se...
Regístrate para leer el documento completo.