Está en la página 1de 2

C:\Documents and Settings\ING. ELECTRONICA\Escritorio\Manejo Puertos.

asm

List P = 18F452 ; Define el tipo de Procesador


#include<p18F452.inc> ; Libreria para definir los SFRS

AA EQU 0x0A ; Variable de Datos en la Ram


BB EQU 0x0B ; Variable de Datos en la Ram
OPER EQU 0x0C ; Variable de Datos en la Ram

org 0x00 ; Define la posicion en la Memoria ROM

rcall CONF_PUERTOS
rcall BORRAR_BASURA

RUTINA

rcall LEER_DATOS

movff PORTC,OPER

;76543210
movlw b'11000000'
andwf OPER,F

;76543210
movlw b'00000000'
cpfseq OPER
bra RESTAR
bra SUMAR

;---------------------------------------------------------
CONF_PUERTOS
; Esta rutina se emplea para configurar los puertos
; Puerto B es para la entrada de Datos
; Puerto C <7:6> Es para la seleccion de la operacion a realizar
; Puerto D es para sacar al exterior el resultado de la operacion

setf TRISB

;76543210
movlw b'11000000'
movwf TRISC

clrf TRISD

return
;---------------------------------------------------------
BORRAR_BASURA
; Esta rutina se emplea para inicializar las variables en cero

clrf AA
clrf BB
clrf OPER

return
1
C:\Documents and Settings\ING. ELECTRONICA\Escritorio\Manejo Puertos.asm

;---------------------------------------------------------
LEER_DATOS
; Esta rutina se emplea para separa los nibbles y organizarlos

movf PORTB,W
movwf AA
movwf BB

;76543210
movlw b'00001111'
andwf BB,F

swapf AA,F
;76543210
movlw b'00001111'
andwf AA,F

return
;---------------------------------------------------------
SUMAR
; Esta rutina realiza la suma

movf BB,W
addwf AA,W
movwf PORTD

bra RUTINA
;---------------------------------------------------------
RESTAR
; Esta rutina realiza la resta

movf BB,W
subwf AA,W
movwf PORTD

bra RUTINA

;---------------------------------------------------------

end

También podría gustarte