domingo, 28 de julio de 2013

Resumen de Set de Instrucciones



w: Es el registro de trabajo y almacena datos de forma momentánea
f: Es la dirección de un registro, si es llamada apunta al contenido de ese registro
d: Es el destino donde se guarda el resultado de una operación, si es 1 se guarda en el registro f, y si es 0 en w.
b: Alguno de los 8 bits del registro f
k: Constante de 8 bit, puede tomar valores entre 0 y 255

OPERACIONES ORIENTADAS A REGISTROS
Nemotécnicos
Operación
Estados afectados
ADDWF
f,d
ANDWF
f,d
CLRF
f
CLRW
COMF
f,d
DECF
f,d
DECFSZ
f,d
INCF
f,d
INCFSZ
f,d
IORWF
f,d
MOVF
f,d
MOVWF
f
NOP
RLF
f,d
RRF
f,d
SUBWF
f,d
SWAPF
f,d
XORWF
f,d
Sumar W y f
AND entre W y f
Limpiar f
Limpiar W
Complementar f
Decrementar f
Decrementar f, saltar si cero
Incrementar f
Incrementar f, saltar si cero
OR entre W y f
Mover f
Mover W a F
No Operación
Rotar a la izquierda
a través del carry
Rotar a la derecha
a través del carry
Restar W de f
Intercambiar nibbles de f
OR exclusiva entre W y f
C,DC,Z
Z
Z
Z
Z
Z

Z

Z
Z


C
C
C,DC,Z

Z


OPERACIONES ORIENTADAS A BITS
Nemotécnicos
Operación
Estados afectados
BCF
f,b
BSF
f,b
BTFSC
f,b
BTFSS
f,b
Limpiar bit b de f
Activar bit b de f
Probar bit b de f,
saltar si cero
Probar bit b de f,
saltar si uno



OPERACIONES ORIENTADAS A LITERALES Y DE CONTROL
Nemotécnicos
Operación
Estados afectados
ADDLW
k
ANDLW
k
CALL
k
CLRWDT
GOTO
K
IORLW
K
MOVLW
K
RETFIE
RETLW
K
RETURN
SLEEP
SUBLW
K
XORLW
K
Sumar literal k a W
AND entre k y W
Llamar subrutina
Limpiar WDT
Salta a dirección k
OR entre k y W
Cargar W con literal k
Retornar de interrupción
Retornar y cargar W con k
Retornar de subrutina
Ir al modo de bajo consumo
Restarle k a W
OR exclusiva entre k y W
C,DC,Z
Z

-TO,-TD

Z




-TO,-TD
C,DC,Z
Z

sábado, 27 de julio de 2013

Instrucciones Aritméticas

Y continuemos con las instrucciones aritméticas.


Instrucciones de Carga

En el siguiente vídeo se habla muy bien sobre como funcionan las instrucciones de carga y bits.

Ejercicio 03 Función Sleep

;***************FUNCION SLEEP**************
;BAJO CONSUMO DE CORRIENTE

;ZONA DE DATOS*********************************************************************
    __CONFIG _CP_OFF& _WDT_OFF& _PWRTE_ON& _XT_OSC ;CONFIGURACION PALABRA DE CONTROL

            LIST P=16F84A   ;MICROCONTROLADOR UTILIZADO
            INCLUDE <P16F84A.INC>   ;ETIQUETAS DEL MICROCONTROLADOR ESPECIFICADO



;ZONA DE CODIGOS*********************************************************************

            ORG 0           ;INCIO DE PROGRAMA EN LA DIRECCION 0 DE MEMORIA DE PROGRAMA

INICIO
            BSF STATUS,RP0  ;FIJA A 1 EL BIT 5 DEL REGISTRO STATUS PARA ACCESAR AL BANCO 1
            CLRF TRISB      ;LIMPIA LAS LINES DEL PTO B PARA CONFIGURARLO COMO SALIDA
            MOVLW B'00011111'
            MOVWF TRISA     ;CARGAMOS EL CONTENIDO DEL REGISTRO DE TRABAJO W A TRIS A PARA CONFIGURARLO COMO ENTRADA
            BCF STATUS,RP0  ;FIJA A 0 EL BIT 5 DEL REGISTRO STATUS PARA REGRESAR AL BANCO 0
PRINCIPAL
            MOVF PORTA,W     ;EL VALOR QUE CONTIENE EL PUERTO A SE MUEVE AL REGISTRO DE TRABAJO W
            MOVWF PORTB     ;EL VALOR DEL REGISTRO W SE MUEVE AL PUERTO B
            SLEEP           ;EL PROGRAMA ENTRA EN MODO BAJO CONSUMO DEL CUAL NO PODRA SALIR
            END             ;FIN DEL PROGRAMA

Ejercicio 02 Puertos de Entrada y Salida

;***************02PUERTOS_IN_OUT**************
;LOS DATOS INSTRODUCIDOS POR EL PUERTO A DEBERAN SALIR POR EL PUERTO B


;ZONA DE DATOS*********************************************************************
    __CONFIG _CP_OFF& _WDT_OFF& _PWRTE_ON& _XT_OSC ;CONFIGURACION PALABRA DE CONTROL

            LIST P=16F84A   ;MICROCONTROLADOR UTILIZADO
            INCLUDE <P16F84A.INC>   ;ETIQUETAS DEL MICROCONTROLADOR ESPECIFICADO



;ZONA DE CODIGOS*********************************************************************

            ORG 0           ;INCIO DE PROGRAMA EN LA DIRECCION 0 DE MEMORIA DE PROGRAMA

INICIO
            BSF STATUS,RP0  ;FIJA A 1 EL BIT 5 DEL REGISTRO STATUS PARA ACCESAR AL BANCO 1
            CLRF TRISB      ;LIMPIA LAS LINES DEL PTO B PARA CONFIGURARLO COMO SALIDA
            MOVLW B'00011111'
            MOVWF TRISA     ;CARGAMOS EL CONTENIDO DEL REGISTRO DE TRABAJO W A TRIS A PARA CONFIGURARLO COMO ENTRADA
            BCF STATUS,RP0  ;FIJA A 0 EL BIT 5 DEL REGISTRO STATUS PARA REGRESAR AL BANCO 0
PRINCIPAL
            MOVF PORTA,W     ;EL VALOR QUE CONTIENE EL PUERTO A SE MUEVE AL REGISTRO DE TRABAJO W
            MOVWF PORTB     ;EL VALOR DEL REGISTRO W SE MUEVE AL PUERTO B
            GOTO PRINCIPAL  ;SE CREA UN BUCLE CERRADO E INFINITO
            END             ;FIN DEL PROGRAMA

Ejemplo 01 Constante



;***************01CONSTANTE**************
;CREAR UNA CONSTANTE Y ASIGNAR UN VALOR ENTRE 0 - 255


;ZONA DE DATOS*********************************************************************
    __CONFIG _CP_OFF& _WDT_OFF& _PWRTE_ON& _XT_OSC ;CONFIGURACION PALABRA DE CONTROL

            LIST P=16F84A   ;MICROCONTROLADOR UTILIZADO
            INCLUDE <P16F84A.INC>   ;ETIQUETAS DEL MICROCONTROLADOR ESPECIFICADO

CONSTANTE   EQU H'01'        ;SE CARGA LA VARIABLE CONSTANTE CON EL VALOR 01 HEXADECIMAL

;ZONA DE CODIGOS*********************************************************************

            ORG 0           ;INCIO DE PROGRAMA EN LA DIRECCION 0 DE MEMORIA DE PROGRAMA

INICIO
            BSF STATUS,RP0  ;FIJA A 1 EL BIT 5 DEL REGISTRO STATUS PARA ACCESAR AL BANCO 1
            CLRF TRISB      ;LIMPIA LAS LINES DEL PTO B PARA CONFIGURARLO COMO SALIDA
            BCF STATUS,RP0  ;FIJA A 0 EL BIT 5 DEL REGISTRO STATUS PARA REGRESAR AL BANCO 0
            MOVLW CONSTANTE ;CARGA EL REGISTRO DE TRABAJO W CON EL VALOR DE CONSTANTE EL CUAL ES H'01'
PRINCIPAL
            MOVWF PORTB     ;EL VALOR QUE CONTIENE EL REGISTRO DE TRABAJO W SE MUEVE AL PTO B
            GOTO PRINCIPAL  ;SE CREA UN BUCLE CERRADO E INFINITO
            END             ;FIN DEL PROGRAMA