Você está na página 1de 2

include p16f84a.

inc PORTA PORTB RESUL DENOM NUMER FLAG equ equ equ equ equ equ 0x10 org goto 0x05 0x06 0x0D 0x0E 0x0F 0x00 inicio

;Usada para resultado ;Usada como denominador ;Usada como Numerador ;Usada para leer bit de suma/resta

; al inicio del programa inicio bsf STATUS,RP0 movlw b'00000' movwf PORTA movlw b'11111111' movwf TRISB bcf STATUS,RP0 movlw b'00000000' movwf PORTB movlw b'00000000' movwf PORTA ;Puerto A como salidas ;Puerto B como entradas

;Programa principal main call call btfsc goto carga sumaresta FLAG,4 suma ;Salta a subrutina CARGA ;Salta a subrutina SUMARESTA ;verificas si: 0 = resta ;si 1 = suma ;Hace la operacin de resta ;El resultado lo carga en puerto A ;Hace la operacin de suma ;El resultado lo carga en puerto A

movf DENOM,w subwf NUMER,w movwf PORTA goto main suma movf DENOM,w addwf NUMER,w movwf PORTA goto main

;Subrutina para cargar valores en variables carga movf PORTB,w andlw 0xF0 movwf NUMER ;Carga los dos nmeros del puerto B ;Separa los 4 bit mas significativos ;los carga en DENOM=denominador

movf PORTB,w andlw 0x0F movwf DENOM return

;Separa los 4 bits menos significativos ;los carga en NUMER=numerador

;Subrutina para leer el pin del micro para seleccionar suma o resta sumaresta clrf PORTA ;limpias el puerto A bsf STATUS,RP0 movlw b'10000' ;Pones en UNO el bit 4 para hacerlo movwf PORTA ;entrada bcf STATUS,RP0 movf PORTA,w ;El valor que lee del puerto A lo carga movwf FLAG ;en una variable llamada FLAG bsf STATUS,RP0 movlw b'00000' ;Pones en CERO el bit 4 para hacerlo movwf PORTA ;salida nuevamente return end

Você também pode gostar