viernes, 6 de septiembre de 2013

Instrucciones de resta


La resta se realiza sumando, en binario puro sin signo.
Al realizar la resta de 8 bits con signo el resultado no puede exceder de +127 ni de (-128).

El flag carry indica si es positivo (C se pone a "1") o negativo (C se pone a "0").

Pueden ocurrir tres casos:


  • Si el el resultado es positivo distinto de cero, C = 1 y Z = 0.
  • Si el resultado es cero, C = 1 y Z = 1.
  • Si el resultado es negativo, C = 0 y Z = 0.
Para las instrucciones de resta podemos emplear:

sublw k
subwf f,d


            ;***************INSTRUCCIONES DE RESTA**************

;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

RESTA EQU H'0C'

;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'00000000'
            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
            MOVLW H'04'     ;CARGAMOS AL REGISTRO W CON EL DATO A3
            MOVWF RESTA
            MOVLW H'01'
            SUBWF RESTA,W   ;RESTAMOS AL RESGISTRO RESTA LO QUE CONTIENE EL REGISTRO W 
            MOVWF PORTB     ;EL VALOR DEL REGISTRO W SE MUEVE AL PUERTO B Y ARROJA EL RESULTADO EN ESTE CASO EL DATO F2
            SLEEP           ;EL PROGRAMA ENTRA EN MODO BAJO CONSUMO DEL CUAL NO PODRA SALIR

            END





Uso de registros de propósito general (Variables) en Mplab X

  A continuación se da un ejemplo para el uso de variables empleando los registros de propósito general, con los cuales se podrán efectuar diversos tipos de operaciones teniendo mas orden en nuestra programación.

Se podrá simular en Mplab X para ver los cambios que se presentan en las variables empleadas.



         ;***************Variable**************

;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


MIAUTO EQU H'0C'
RANGER EQU H'0D'
TORTUGA EQU H'0E'

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

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

INICIO

PRINCIPAL
            MOVLW H'11'     ;CARGAMOS A W CON EL DATO AA EN HEXADECIMAL
            MOVWF MIAUTO    ;CARGAMOS AL REGISTRO MIAUTO CON LO QUE CONTIENE W
            MOVLW H'15'
            MOVWF RANGER
            MOVLW H'34'
            MOVWF TORTUGA

            SLEEP           ;EL PROGRAMA ENTRA EN MODO BAJO CONSUMO DEL CUAL NO PODRA SALIR

            END