Documente Academic
Documente Profesional
Documente Cultură
no se hace
lmarte
Miembro activo
Mensajes: 73
Registrado: Lun Ene 19, 2004 3:46 pm
Arriba
[CODE]
;***************************************************************
org 0x00
goto inicio
;***************************************************************
; programacion de interrupcion
org 0x04 ; vector de interrupcion
btfss INTCON, T0IF ;checar si es interrupcion de timer0
retfie ; si no lo es regresar
; aqui va el codigo de la interrupcion
;...
;...
retfie ; fin de la interrupcion
inicio
; ACTIVACION DEL TIMER0 COMO INTERRUPCION
bsf STATUS, RP0
movlw 0xD6
movwf OPTION_REG
bcf STATUS, RP0
bsf INTCON, T0IE
bsf INTCON,GIE
; aqui va el codigo del programa
;...
;...
end
javierv
Miembro activo
Mensajes: 25
Registrado: Mié Feb 18, 2004 8:17 am
Programa HEX
:020000040000FA
:040000003120412842
:080008008312031320202820BD
:080010008B0170308B00090028
:100040000B1D08008312031306138617880A08285D
:100050008B1C0800831603130111811083120313F4
:10006000080083120313F0308B0086018801831689
:1000700003130730810007308600880183120313C1
:08008000080006178613422850
:00000001FF
Saludos.
En una pantalla LCD va a aparecer por defecto "HOLA" , cuando presiono el Boton A debería quitarse "HOLA" y entonces aparecer
"COMO ESTAS" indefinidamente, luego, cuando presiono el Boton EXIT, entonces debera aparecer nuevamente "HOLA"..... Bien la duda
es, puedo hacer esto con interrupciones?
if(input(PIN_B0)==1)
{
output_high(PIN_B1); encendia un led
}
Mensajes: 3
Registrado: Dom Jul 05, 2009 4:52 pm
Las interrupciones son un conjunto de excepciones asincrónicas que permite el microprocesador para alterar la ejecución secuencial normal
de instrucciones; estas se manejan a través de vectores que contienen la dirección física de la memoria donde se encuentra la rutina de
servicio a la excepción solicitada.
es decir hacemos un programa que acepta interrupciones por lo que cada vez que se da una interrupcion el programa se interrumpe el micro
guarda la direccion donde se interrumpio el programa y otras cosas en la pila (depende de que microcontrolador estemos usando) luego se va
al vector de interrupcion donde esta la direccion de la rutina de servicio (que es la rutina que queremos que haga cuando se da la
interrupcion) luego de realizarla saca lo que guardo en la pila y retorna a la direccion donde se dio la interrupcion y continua.
La diferencia entre las interrupciones enmascarables y las noenmascarables es que las enmascarables se pueden evitar, es decir si no
queremos que se den las enmascaramos poniendo a uno o a cero una bandera (depende del micro) y aunque se de la condicion no se da la
interrupcion. En cambio las noenmascarables no se puede evitar que se den ejemplo los RESET no se pueden evitar.
En cuanto a la interrupcion NMI e IRQ tendrias que especificar a que micro te refieres.
Espero que esto te ayude, si algo no te queda claro avisame ya que es un tema que recien acabo de pasar por lo que lo recuerdo muy bien
Hola , yo también soy nuevo en el foro. He leído y releído vuestras respuestas ya que las necesito para solucionar un problema, pero aún no
lo he conseguido. Se trata de hacer saltar al pic 16f877 a cualquier interrupción (estoy mosca porque esto se supone que es algo básico
).
Es la primera vez que trabajo con estos pics, y me parecen bastante potentes y sencillos de manejar, pero aquí hay algo que se me escapa.
Estoy usando las directivas de código relocalizable (CODE, IDATA, UDATA), aunque he usado las mismas estructuras de programa Imarte
o Javierv para el uso de interrupciones viendo que no hay ninguna diferencia entre poner un ORG o un CODE 0x... cuando quieres que un
bloque empiece desde una direccion concreta. Es decir, estas directivas no creo que me estén planteando problemas, ya que estoy depurando
con ICD2 otros programas que he hecho (sin interrupciones) y van bien.
La interrupción que quiero activar es la de RB0 (es decir, INTE dentro de INTCON). Por cierto Imarte, ¿Qué quieres decir con?:
precisamente a mí me está dando problemas, ya que intento poner a 0 el bit INTF para que vuelva a interrumpir, pero siempre está a 1, y en
el 877 no hace falta seleccionar el banco de memoria que contiene a INTCON ya que está reflejado en los 4 bancos.
Os dejo el codiguito que me trae de cabeza, ya estoy empezando a desconfiar en la placa que he hecho, incluso en el icd2