Autor Tema: Problema con PICkit 3 instrucción BTFSS  (Leído 1486 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alisoprog

  • PIC10
  • *
  • Mensajes: 1
Problema con PICkit 3 instrucción BTFSS
« en: 10 de Abril de 2019, 12:46:30 »
Hello world!
Es la primera vez que publico algo en un foro de cualquier tipo :D

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

Código: ASM
  1. LIST p=P18F45K20
  2. INCLUDE "P18F45K20.INC"
  3. CONFIG FOSC=INTIO67
  4. CONTADOR equ 0X02;VARIABLE CONTAJE
  5. BUCLE1 equ 0x04
  6. BUCLE2 equ 0x06
  7. ORG 0X00
  8. goto inicio
  9. ORG 0X20
  10.  
  11. inicio
  12. bcf ANSELH,4,ACCESS
  13. bsf TRISB,0,ACCESS
  14. CLRF TRISD
  15. CLRF PORTD
  16. CLRF CONTADOR
  17.  
  18. LAZO
  19. BTFSS PORTB,0,ACCESS;INSTRUCCION QUE FALLA!!!!
  20. BRA LAZO
  21. CALL TEMPORIZADOR
  22.  
  23. BTFSS PORTB,0,ACCESS
  24. BRA LAZO
  25.  
  26. INCF CONTADOR,1;INCREMENTA CONTADOR
  27. MOVF CONTADOR,0,ACCESS;PASA CONTADOR A WREG
  28. MOVWF PORTD,ACCESS; Y WREG A LEDS
  29.  
  30. OFF
  31. BTFSC PORTB, 0,ACCESS
  32. BRA LAZO
  33. BRA OFF
  34.  
  35. TEMPORIZADOR;SI B1=15 -> B2=25   5000=4*B2*(5+B1*3)
  36. MOVLW D'25' ;cargo 25 en wreg
  37. MOVWF BUCLE2,ACCESS; Y CARGO WREG EN BUCLE2
  38.  
  39.  
  40. BUC1;BUCLE EXTERIOR SIN CONTAR INTERIOR TIENE 5 CM-
  41. MOVLW D'15'
  42. MOVWF BUCLE1,ACCESS;
  43.  
  44. DECREMENTA1; BUCLE INTERIOR 3 CM
  45. DECFSZ BUCLE1,1;DECREMENTA BUCLE1 SALTA SI 0
  46. BRA DECREMENTA1
  47.  
  48. DECFSZ BUCLE2,1;DECREMENTA BUCLE2 SALTA SI 0
  49. BRA BUC1
  50. RETURN
  51.  
  52.  
  53. 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
« Última modificación: 10 de Abril de 2019, 12:55:33 por alisoprog »