Hello world!
Es la primera vez que publico algo en un foro de cualquier tipo
Soy estudiante de ingeniería y la electrónica digital y micros son mi debilidad
En prácticas de laboratorio he tenido problemas con un código, y si que tengo un Arduino en casa pero no he invertido en un micro jaja así que alguien pudiera ayudarme con el siguiente código, se lo agradecería mucho, ya que no puedo ponerme en casa con calma a probarlo
El código es el siguiente donde especifico el modelo de pic
LIST p=P18F45K20
INCLUDE "P18F45K20.INC"
CONFIG FOSC=INTIO67
CONTADOR equ 0X02;VARIABLE CONTAJE
BUCLE1 equ 0x04
BUCLE2 equ 0x06
ORG 0X00
goto inicio
ORG 0X20
inicio
bcf ANSELH,4,ACCESS
bsf TRISB,0,ACCESS
CLRF TRISD
CLRF PORTD
CLRF CONTADOR
LAZO
BTFSS PORTB,0,ACCESS;INSTRUCCION QUE FALLA!!!!
BRA LAZO
CALL TEMPORIZADOR
BTFSS PORTB,0,ACCESS
BRA LAZO
INCF CONTADOR,1;INCREMENTA CONTADOR
MOVF CONTADOR,0,ACCESS;PASA CONTADOR A WREG
MOVWF PORTD,ACCESS; Y WREG A LEDS
OFF
BTFSC PORTB, 0,ACCESS
BRA LAZO
BRA OFF
TEMPORIZADOR;SI B1=15 -> B2=25 5000=4*B2*(5+B1*3)
MOVLW D'25' ;cargo 25 en wreg
MOVWF BUCLE2,ACCESS; Y CARGO WREG EN BUCLE2
BUC1;BUCLE EXTERIOR SIN CONTAR INTERIOR TIENE 5 CM-
MOVLW D'15'
MOVWF BUCLE1,ACCESS;
DECREMENTA1; BUCLE INTERIOR 3 CM
DECFSZ BUCLE1,1;DECREMENTA BUCLE1 SALTA SI 0
BRA DECREMENTA1
DECFSZ BUCLE2,1;DECREMENTA BUCLE2 SALTA SI 0
BRA BUC1
RETURN
END
El tema es que en la instrucción que comento que falla, el test lógico da resultados contrarios.
Me explico, RB0, que en mi placa es un pulsador, está sin pulsar (he comprobado con otros códigos que pulsando leo 1 y sin pulsar 0) y el primer BTFSS da un salto como resultado
Insisto en que es curioso porque he realizado ejercicios más complejos con timers, interrupciones... Y no he tenido ningún problema de este tipo
de hecho, simulando con MPSIM, funciona correctamente
No sé si no estoy viendo algo muy evidente pero no entiendo que pasa!
Muchas gracias a todos y un placer entrar en este foro