Numero Multiplo

#1
Hola tengo un problema con el siguiente codigo , la idea es que el puerto b este como entrada si pongo ahi un numero multiplo de 3 en el puerto c rc0 enciende si no lo es entonces se apaga, ya he verificado varias veces y en la simulacion no me esta funcionando me sale el led intermitente cuando pongo 0 o cualquier numero


si por favor me pueden colaborar

gracias


Codigo


LIST P = 16F877A ;indica tipo de micro
INCLUDE "P16F877A.INC"


LIST

NUM1 EQU 20H
temp EQU 21H

BSF STATUS,RP0 ; se pasa al banco 1
MOVLW B'11111111'
MOVWF TRISB ; puerto b como entrada
MOVLW B'00000000'
MOVWF TRISC ;puerto c como salida
BCF STATUS,RP0 ; se pasa al banco 0
CLRF PORTC
leer

CLRF NUM1
CLRF PORTC


INICIO
movlw PORTB ; copiio lo del puerto b a w
movwf NUM1 ; copio lo del w al num1

resta movlw b'00000011'
subwf NUM1,1 ; resto num1 - 3
btfsc STATUS,Z ; si es 0 salta
goto resultmul
btfsc STATUS,C
goto resta
goto resulnomult
resultmul


bsf PORTC,0
goto INICIO


resulnomult

bcf PORTC,0
goto INICIO


END
 

Vick

Moderador
#3
Primer error que encontré en tu código, checalo:

movlw PORTB ; copiio lo del puerto b a w <--- con esto no estas leyendo el PortB
 
#4
Primer error que encontré en tu código, checalo:

movlw PORTB ; copiio lo del puerto b a w <--- con esto no estas leyendo el PortB

muchas gracias definitivamente ese era el error

se corrige poniendo movf portb,0 se carga el puerto b a w

pdta; si no es mucho pedir me podrian decir esa instruccion para que serviria o si no es valida movlw PORTB, o esta solo sirve por eje para cargar un valor a w movlw b 00001111
 

Vick

Moderador
#5
se corrige poniendo movf portb,0 se carga el puerto b a w
Exacto así se lee un puerto de entrada
si no es mucho pedir me podrian decir esa instruccion para que serviria o si no es valida movlw PORTB, o esta solo sirve por eje para cargar un valor a w movlw b 00001111
La instrucción movlw carga la literal que pongas en W, si colocas el nombre de un registro, lo que estas cargando en W es su dirección, en el caso de PORTB cargará 0x06 en W, la instrucción movlw PORTB es valida siempre y cuando necesites precisamente hacer eso.
 
Arriba