uControl
Abril 29, 2017, 12:31:48 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Problemas con las interrupciones.  (Leído 670 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Fulguitron
PIC12F
**
Desconectado Desconectado

Mensajes: 103


« : Junio 04, 2015, 02:58:35 »

Pues ya estamos otra vez aquí, sigo con mis interrupciones que ahora ya es necesario aprender si quiero avanzar con mis programas (bueno y porque ya me toca). En este caso quiero que al apretar un botón se muestre un led parpadeando durante un segundo. Sin la interrupción el programa va OK, pero con la interrupción me salen estos fallos.

Error[118]   E:\BINWATCH\PRUEBAS\UNSEGUNDO_PIC16F628_INT.ASM 20 : Overwriting previous address contents (0005)
Error[118]   E:\BINWATCH\PRUEBAS\UNSEGUNDO_PIC16F628_INT.ASM 20 : Overwriting previous address contents (0005)
Message[302] E:\BINWATCH\PRUEBAS\UNSEGUNDO_PIC16F628_INT.ASM 21 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\BINWATCH\PRUEBAS\UNSEGUNDO_PIC16F628_INT.ASM 23 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[305] E:\BINWATCH\PRUEBAS\UNSEGUNDO_PIC16F628_INT.ASM 75 : Using default destination of 1 (file).
Message[305] E:\BINWATCH\PRUEBAS\UNSEGUNDO_PIC16F628_INT.ASM 79 : Using default destination of 1 (file).
Halting build on first failure as requested.

Supongo que el problema es que uso el mismo TMR0 para dos cosas, pero no se como usar otro (si se puede) una ayudita??? como siempre el código completo

Código:
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _DATA_CP_OFF & _LVP_OFF & _MCLRE_OFF
LIST    P=16F628A
INCLUDE  <P16F628A.INC>

CBLOCK  0x20
contador
pulsador
ENDC

#DEFINE Salida PORTB,3 ; Puerto donde se conecta los diodos LED.
#DEFINE Un_segundo_carga -d'39'
; ZONA DE CÓDIGOS ********************************************************************

ORG 0x05 ; El programa comienza en la dirección 0.
goto Inicio
org 4
goto Boton_int

Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
clrf TRISB
movlw b'00000111'
movwf OPTION_REG
movwf CMCON
bcf STATUS,RP0 ; Acceso al Banco 0.
clrf PORTB
movlw b'10100000'
movwf INTCON

Memoria
movlw d'10'
movwf contador
movlw d'2'
movwf pulsador

Probar
movf pulsador,W
sublw d'2'
btfss STATUS,Z ; revisa si activar_display_1 ha llegado al límite superior, si no es asó salta una línea y sigue el conteo.
goto Principal
movf pulsador,W
sublw d'3'
btfss STATUS,Z ; revisa si activar_display_1 ha llegado al límite superior, si no es asó salta una línea y sigue el conteo.
goto Un_segundo

Principal
movlw d'100'
movwf contador
bsf Salida
call Un_segundo
movlw d'100'
movwf contador
bcf Salida
call Un_segundo
goto Inicio

Un_segundo
movlw Un_segundo_carga
movwf TMR0
bcf INTCON,T0IF

Timer0_Rebosamiento
btfss INTCON,T0IF
goto Timer0_Rebosamiento
decfsz contador,1
goto Un_segundo
RETURN

Boton_int
btfsc Salida
goto Principal_int
goto Un_segundo_int

Principal_int
incf pulsador
bcf INTCON,T0IF
retfie
Un_segundo_int
decf pulsador
bcf INTCON,T0IF
retfie

END
En línea

Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.

http://hobbiesygadgets.blogspot.com.es/
HJ
Moderador
dsPIC
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5670



« Respuesta #1 : Junio 04, 2015, 08:28:03 »

Hola Fulguitron, le estas errando con el tema de las "ORG", cambia donde pusiste "ORG  0x05" por  "ORG 0"

El tema es que  con "ORG oxo5" le estas diciendo al ensamblador que la instrucción "goto inicio" se escriba en ese lugar, luego con  "ORG 4" le dices que a partir de la posición de memoria 4 comience a escribir las siguientes instrucciones, por tanto en la posición 4 va ha escribir "goto boton_int" y en la siguiente posición de memoria, es decir en la "5" va ha intentar escribir "bsf  STATUS,RP0" sobrescribiendo el "goto inicio" que habías puesto antes....

Saludos
HJ
En línea

"si te lo dicen se te olvida, si lo lees lo aprendes; pero si lo haces realmente lo entiendes"
"Cuando llegue la inspiración, que me encuentre trabajando" [Pablo Picasso]
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.035 segundos con 25 consultas. (Pretty URLs adds 0.005s, 2q)
loggkey