TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Eyedol en 27 de Abril de 2007, 00:23:49

Título: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 27 de Abril de 2007, 00:23:49
Saludos amigos tengo un problema sencillo pero que ya no hallo que hacer. e modificado varios registros pero no logro hacer funcionar una interrupcion sencilla por el por el rb0 de un PIC16F88. Este programa esta en MELABS y funciona perfecto con un pic16f84a:
' On Interrupt - Interrupts in BASIC
'  Turn LED on.  Interrupt on PORTB.0 (INTE) turns LED off.
'  Program waits .5 seconds and turns LED back on.

led     var     PORTB.7


        OPTION_REG = $7f        ' Enable PORTB pullups

        On Interrupt Goto myint ' Define interrupt handler
        INTCON = $90            ' Enable INTE interrupt

loop:   High led                ' Turn LED on
        Goto loop               ' Do it forever


' Interrupt handler
        Disable                 ' No interrupts past this point
myint:  Low led                 ' If we get here, turn LED off
        Pause   500             ' Wait .5 seconds
        INTCON.1 = 0            ' Clear interrupt flag
        Resume                  ' Return to main program
        Enable

Ya he hecho varias modificaciones en varios registros por ejemplo el ANSEL = 0 ' A/D OFF -- Port pins all digital y el CMCON = 7 ' Comparators OFF y no se que mas hacer pero no funciona con el PIC16F88
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 27 de Abril de 2007, 11:19:17
Por favor alguien me de alguna respuesta sobre este tema de verda necesito saber cual es el problema con el pic16f88 o mejor dicho que hay que cambiarle para hacerle funcionar las interrupciones...
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: LordLafebre en 27 de Abril de 2007, 12:06:59
Hola:

No te apures, cuando alguien pueda te responderá, presionando a los compañeros no gana nadie.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: dogflu66 en 27 de Abril de 2007, 20:00:03
Mi basic se parece mucho al tuyo.
Aqui te dejo el ejemplo traducido al mio.
Segun el simulador funciona.

Código: [Seleccionar]
'On Interrupt - Interrupts in BASIC
'Turn LED on.  Interrupt on PORTB.0 (INTE) turns LED off.
'Program waits .5 seconds and turns LED back on.
Symbol led = PORTB.7  'reasigno nombre al portb.7
ANSEL = %00000000  'los pin I/O digitales, % en bin
CMCON = 0x07  'comparador a off, 0x en hex
OSCCON = 0x7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
TRISB.7 = 0  'declaro portb.7 como salida
TRISB.0 = 1  'declaro portb.0 como entrada, 0-1 activa interrupcion
OPTION_REG = 0x7f  'Enable PORTB pullups
INTCON = 0x90  'Enable INTE interrupt
loop:
High led  'Turn LED on
Goto loop  'Do it forever
End                                               
'Interrupt handler
On Interrupt  'Define interrupt handler, desactiva interrupciones
Low led  'If we get here, turn LED off
WaitMs 500  'Wait .5 seconds
INTCON.1 = 0  'Clear interrupt flag
Resume  'Return to main program, activa interrupciones
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 28 de Abril de 2007, 01:47:49
Amigo dog use el codigo asi y aun no funciona... use tus cambios a los registros no he montado ese circuito me he puesto a pensar si sera el proteus que no estara funcionando bien. justamente he cambiado todos esos registros y aun no funciona ese f88 no se que mas podria ser... POR CIERTO QUE BASIC ES ESE? TUBE QUE CAMBIAR PARA QUE SE COMPILARA...

led var portb.7
ANSEL = %00000000  'los pin I/O digitales, % en bin
CMCON = $07  'comparador a off, 0x en hex
OSCCON = $7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
TRISB.7 = 0  'declaro portb.7 como salida
TRISB.0 = 1  'declaro portb.0 como entrada, 0-1 activa interrupcion
OPTION_REG = $7f  'Enable PORTB pullups
INTCON = $90  'Enable INTE interrupt

On Interrupt Goto myint ' Define interrupt handler
        INTCON = $90            ' Enable INTE interrupt

loop:   High led                ' Turn LED on
        Goto loop               ' Do it forever


' Interrupt handler
        Disable                 ' No interrupts past this point
myint:  Low led                 ' If we get here, turn LED off
        Pause   500             ' Wait .5 seconds
        INTCON.1 = 0            ' Clear interrupt flag
        Resume                  ' Return to main program
        Enable
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: dogflu66 en 28 de Abril de 2007, 04:32:30
 device 16f88 'dispositivo
 xtal 8 'clock

led var portb.7
ANSEL = %00000000  'los pin I/O digitales, % en bin
CMCON = $07  'comparador a off, 0x en hex
OSCCON = $7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
TRISB.7 = 0  'declaro portb.7 como salida
TRISB.0 = 1  'declaro portb.0 como entrada, 0-1 activa interrupcion
OPTION_REG = $7f  'Enable PORTB pullups
INTCON = $90  'Enable INTE interrupt

On Interrupt Goto myint ' Define interrupt handler
        INTCON = $90            ' Enable INTE interrupt

loop:   High led                ' Turn LED on
        Goto loop               ' Do it forever


' Interrupt handler
        Disable                 ' No interrupts past this point
myint:  Low led                 ' If we get here, turn LED off
        Pause   500             ' Wait .5 seconds
        INTCON.1 = 0            ' Clear interrupt flag
        Resume                  ' Return to main program
        Enable
-----------------------------------------------------------------------

Prueba añadiendo las dos lineas del principio a ver si puede ser eso.
de todas formas te dejo mi .hex para que lo simules en el proteus a ver que pasa.

Yo utilizo el Pic Basic del Simulator IDE.
Este enlace esta lleno de ejemplos para el PIC16F88.
http://www.todopic.com.ar/foros/index.php?topic=14917.0
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 28 de Abril de 2007, 11:52:20
Amigo tu .HEX Funciona muy bien pero los mios no ni siquiera con las dos lineas extras. Debo comentarte que yo compilo con Pic Basic Pro PBP. De editor utilizo microcode estudio. Este editor compila directamente colocandole el microcontrolador correspondiente. Pero en la opcion de selecion del micro no esta el Pic16f88. POR esta Razon compilo en La terminal de windows con el pbp directamente de esta forma el archivo .bas: c:\>PBP -P16F88 EJEMPLO.BAS    . Al compilar todo sale bien y cuando simulo en proteus con este archivo no hace absolutamente nada. (deberia apagar el led .5 seg cuando pulso el boton y nada). La pregunta es no se como agregar el 16f88 al editor como lo hago? yo lo agregue al pbp bajando la libreria de melabs para el f88.  La version de mi pbp es 2.43.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: dogflu66 en 28 de Abril de 2007, 13:41:28
Pues en eso ya no te puedo ayudar... a ver si alguien te puede echar una ultima manita.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Mario en 28 de Abril de 2007, 20:02:28
Directo desde microengineering labs:

Previous Release: 2.45
Adds support for PIC12F508, 509, 683, PIC16F505, 684, 688, 716, 737, 747, 767, 777, 87, 88, PIC18F2331, 2431, 2515, 2525, 2585, 2610, 2620, 2680, 4331, 4431, 4515, 4525, 4585, 4610, 4620, 4680, 6410, 6490, 8410 and 8490.
Allows spaces in path/filename.
Improves compatility with MPLAB® 6.
Updates USB routines to version 1.25.
Removes dependence on some Microchip PIC18Xxxxx macros.
Fixes subtract bit from byte and word to word result.
Fixes PIC16F648A BANK2 RAM setting.
Fixes some PIC18Xxxxx bank selections.


Por eso no te dá la opción de compilar el 16F88, porque no la tiene; por eso no te funciona porque no programa nada.

De todas formas lo puedes programar en ensamblador.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: dogflu66 en 29 de Abril de 2007, 07:01:53
En el caso que sigas teniendo problemas, adjunta el .hex y lo simulo en el PSI y asi salimos de dudas.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Mario en 29 de Abril de 2007, 11:40:34
En el caso que sigas teniendo problemas, adjunta el .hex y lo simulo en el PSI y asi salimos de dudas.

Es que no le generará el .HEX porque la versión 2.43 no tiene soporte para ese micro.

Aquí está el .HEX de ese programa:
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 29 de Abril de 2007, 13:48:21
Amigos eso significa que en pic basic que es el unico donde se programar no soporta los pic16f88? y como haria yo agregue una libreria que descargue de melabs que era del pic16f88 y asi fue que pude compilarlo varias veces incluso he hecho varios programas para el f88 compilando desde el simbolo del sistema y sin problemas ahora que cuando quise hacer lo de las interrupciones pele b... si no hay ninguna otra forma TENDRE QUE CAMBIARME A OTRO LENGUAJE???? Dog el que tu tienes el basic ese donde se consigue?
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: dogflu66 en 29 de Abril de 2007, 14:21:24
Pues como bien dice Mario el .Hex que subio funciona OK.

Puedes bajar una version que funciona por tiempo limitado de su pagina.

http://www.oshonsoft.com/downloads.html
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: navaismo en 29 de Abril de 2007, 14:29:57
Bueno PBP si soporta ese PIC yo lo he usado con la version 2.47 y si lo soporta, mientras puede probar el hex que subio Mario o bajar el programa que funciona temporalmente que subio Carlos.


Saludos
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 29 de Abril de 2007, 15:19:01
Amigos el HEX  que me dio DOG Funciona Pero el de mario no me funciona para nada... Consegui la version 2.47 de pbp y aun asi no funciona nada... SOLO ME HA FUNCIONADO CON EL DE DOG Y CREO QUE EL NO COMPILO CON PBP. Navaismo tu puedes simular a ver como te va con ese programa esta sencillo no tiene nada es solo para probar las interrupciones con el f88.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: navaismo en 29 de Abril de 2007, 18:27:58
He probado tu codigo y no hizo nada, con el hex que puso Mario el led se queda siempre encendido, y con el hex que puso Carlos el LED se enciende y cuando pasas de 0 a 1 logico se apaga y despues se vuelve a encender. Esto ultimo es lo que quieres hacer??.

Saludos
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: dogflu66 en 29 de Abril de 2007, 18:58:00
He probado de nuevo el codigo de Mario en el PSI, por si me confundi en algo, y sigue funcionando perfectamente.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: navaismo en 29 de Abril de 2007, 19:36:28
No pues no se que sea si la version o que, pero usando ISIS del proteus. Solo tu ejemplo -Carlos-  funciona, el ded Mario se queda simepre encendido el LED. no asi con tu codigo.

Por otro lado ya me canse de buscar en el Data del F84 el registro INTCON porque pagina viene??? o es que este no es como todos los demas que viene como configurar sus bits individuales como el option reg el osccon etc.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: navaismo en 29 de Abril de 2007, 19:55:15
encontre este programa en la web y funciona bien para el f88 lo raro es que cuando cambio los pines ya sea por el RB7 no cualquier otro o funciona en el ISIS.

Código: FreeBasic
  1. @ DEVICE INTRC_OSC, LVP_OFF, WDT_OFF, MCLR_OFF
  2.  
  3. DEFINE OSC 8
  4.  
  5. OSCCON = %01110000 ' INTRC = 8MHz
  6.  
  7. OPTION_REG.6=1 'Trigger on rising edge
  8. INTCON = %10010000 'Enable INTE
  9. INTCON.1 = 0 'Clear RB0/INT External Interrupt Flag bit
  10.  
  11. On Interrupt Goto UpdateCounter
  12.  
  13. PORTB=0
  14. Pause 500 ' Wait for startup
  15. LOW PORTB.3
  16.  
  17. loop:
  18.  
  19. HIGH PORTB.4
  20. Pause 2000 ' Wait 5 second
  21.  
  22. LOW PORTB.4
  23. Pause 2000 ' Wait 5 second
  24. Goto loop ' Do it forever
  25.  
  26. Disable
  27. UpdateCounter:
  28. LOW PORTB.4
  29. HIGH PORTB.3
  30. pause 2000
  31. LOW PORTB.3
  32.  
  33. INTCON.1=0 're-enable interrupts
  34.  
  35. resume
  36. ENABLE
  37. GOTO loop
  38.  
  39. END
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 29 de Abril de 2007, 20:05:44
Igualmente lo probe en proteus isis y no hace nada navaismo me pasa exactamente lo mismo que a ti. Probe el programa con el pic16f84a y funciona mas no con el 88 en el data sheet esta lo del registro intcon y su explicacion. aqui esta adjunto...
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Mario en 29 de Abril de 2007, 20:15:35
Solo copié y pegué el archivo que puso EYEDOL y lo compilé, debería funcionar.

Una duda.....
En el código que puso Navaismo está la línea
OSCCON = %01110000 ' INTRC = 8MHz

¿No debería ser
OSCCON = %01110010 ' INTRC = 8MHz?

Lo comento porque en el 16F688 (este es el 16F88) debes decirle al µicro que trabajarás con el oscilador interno y activar ese oscilador (bit 0 del OSCCON si no recuerdo mal).
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 29 de Abril de 2007, 20:28:53
Mario orita no estoy en mi casa para probar y si creo que tienes razon pero lo he probado de ambas maneras con el osc interno y externo.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: navaismo en 29 de Abril de 2007, 20:33:02
Con respecto a lo que  dice Mario los 2 ultimos bits es para decir de donde se usa el clock del sistema, en mi caso usao FOSC y si lo ponen como Mario se usa del INTRC,  el importante a mi parecer es el bit 3 el OSTS que es donde se dice que sea el interno, lo demas es la frecuencia si es estable o no y su velocidad. Pero habria que probarlo tal cual MArio dice.

Por otro lado esto ya me esta generando dolr de cabeza, el Hex de dogflu si me sirve, el de Mairo no, el programa que encontre lo compilo y funciona bien pero si le cambio los pines ya no sirve.

Gracias por dato del intcon ahora entiendo porque es asi.

Insisto esta muy raro.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 29 de Abril de 2007, 20:37:26
Creo que tendre que motarlo nava... para salir de dudas orita no estoy en mi casa cuando llegue lo tratare de hacer si no me domina el sueño. Eso para saber si es algun problema con el isis o algo por hay.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Mario en 30 de Abril de 2007, 01:10:31
Código: [Seleccionar]
OSCCON = 0x7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz

OSCCON= 0111 1110

Ponlo así, así es como lo tiene dogflu (no me había fijado bien).
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: dogflu66 en 30 de Abril de 2007, 04:42:05
Aparte de que los simuladores tienen sus temas propios con la realidad.
Pienso que podria ser un problema de fuses, ya que yo programo los fuses en el PSI, donde me sale una tabla con todos
y marco uno por uno a mano, y estos suelen tener prioridad sobre los que se definen en el programa, incluso el clock lo tengo definido en el PSI, a un que esta tambien en el codigo fuente, pero es posible que la configuracion que hago en el PSI me modifique la del codigo fuente...
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: jansuini en 30 de Abril de 2007, 15:30:55
Hola :

Un coentario sobre las interrupciones en pbp: si tenemos necesidad de atender una interrupción ,el pbp lo hace cuando termina de ejecutar la instrucción en curso.
Ejemplo :si estamos ejecutando una instruccin pause 5000 y en el momento que comenzó esta pausa se genera la interrupción (por cualquier tipo de interrupción) ,recién el pbp va a ejecutar la rutina de interrupción cuando termine la instrucción pause.-
En cambio ,por lo que simule en picsimuladoride ,este atiendo las interrupciones cuando se generan.-
Espero me hayan entendido
Jorge
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Mario en 30 de Abril de 2007, 17:18:05
Hola :

Un coentario sobre las interrupciones en pbp: si tenemos necesidad de atender una interrupción ,el pbp lo hace cuando termina de ejecutar la instrucción en curso.
Ejemplo :si estamos ejecutando una instruccin pause 5000 y en el momento que comenzó esta pausa se genera la interrupción (por cualquier tipo de interrupción) ,recién el pbp va a ejecutar la rutina de interrupción cuando termine la instrucción pause.-
En cambio ,por lo que simule en picsimuladoride ,este atiendo las interrupciones cuando se generan.-
Espero me hayan entendido
Jorge

Eso es cierto, habrá que preguntar a EYEDOL si es crítica la interrupción; si lo es, que lo haga en ensamblador.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 30 de Abril de 2007, 21:40:03
amigos tengo un pic16f84a que funciona con ese programa y un pic16f88 que no me muero por saber que pasa que estoy configurando mal en los registros hasta ahora e pensado que es el compilador porque de verdad no consigo que es ni en los datasheet....
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Mario en 01 de Mayo de 2007, 03:14:17
Con respecto a lo que jansuini comenta, quizá podrias utilizar este código:
http://www.microengineeringlabs.com/resources/samples/pbp/asmint.bas

Es lo que necesitas pero utilizando la interrupción en ensamblador.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: dogflu66 en 01 de Mayo de 2007, 14:39:01
Código: [Seleccionar]
'PROGRAMA PARA PRACTICAR CON INTERRUPCIONES EXTERIORES DEL PIN RB0
'On Interrupt - Interrupts in BASIC
'Turn LED on.  Interrupt on PORTB.0 (INTE) turns LED off.
'Program waits .5 seconds and turns LED back on.
'-------------------------------------------------------------------
'Define SIMULATION_WAITMS_VALUE = 1  'ignora los Waitms
'-------------------------------------------------------------------
Symbol led = PORTB.7  'reasigno nombre al portb.7
ANSEL = %00000000  'los pin I/O digitales
CMCON = 0x07  'comparador a off
OSCCON = 0x7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
TRISB.7 = 0  'declaro portb.7 como salida
TRISB.0 = 1  'declaro portb.0 como entrada
OPTION_REG = 0x7f  'Enable PORTB pullups
INTCON = 0x90  'Enable INTE interrupt
'-------------------------------------------------------------------
main:
High led  'Turn LED on
Goto main  'Do it forever
End                                               
'Interrupt handler
On Interrupt  'Define interrupt handler, disable interrupt
Low led  'If we get here, turn LED off
WaitMs 500  'Wait 0.5 Seconds
INTCON.1 = 0  'Clear interrupt flag
Resume  'Return to main program, enable interrupt

Nada amigos, el programa funciona perfectamente en la EBasic, no me funciono al principio por un error en los fuses.
Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: electronando en 04 de Mayo de 2007, 00:48:55
colegas del foro si usan interupcion por soft estan perdiendo mucho mejor por hardware y aca les dejo una plantilla
si son tercos y les gusta el on interrupt no usen pause en los dos sitios pues el pbp se loquea pues para las pauses usa un regiastro interno que si no guardadn su ubicacion anterior me refiero a el pc y esa nota regresa y cae en un limbo bueno aca les dejo para que acoplen a su circuito es para un 16f84 ustedes acoplenlo a su pic funciona igual de las mil maravillas
   
    W_GUARDA   Var   Byte    SYSTEM 'SALVO LA LOCACION DEL REG W
   S_GUARDA   Var   Byte    SYSTEM 'SALVO LA LOCACION DEL REG W
   P_GUARDA   Var   Byte    SYSTEM 'SALVO LA LOCACION DEL REG W
   R0_GUARDA   VAR BYTE   
   R1_GUARDA   VAR BYTE   
   
   
   

    Define    OSC      4 'FRECUENCIA DEL CRISTAL

   Define   INTHAND INTERRUPCIONCITA   'RUTINA PARA INTERRUPCION EN ASM
   I VAR BYTE
   TRISA=0
    TRISB=%00000001
    PORTB=0
    PORTA=0
   



Goto SALTOINTERRUPCION   ' Jump over the interrupt handler


Asm
INTERRUPCIONCITA
   
   
   Movwf   W_GUARDA
   Swapf   STATUS,w
   Clrf   STATUS
   Movwf   S_GUARDA
   Movf   PCLATH,w
   Movwf   P_GUARDA
   
ENDASM   
'ESTE PEQUEÑIN ES MI PROGRAMA DE INTERRUPCION
R0_GUARDA=R0   'R0 Y R1 ES UN REGISTRO INTERNO , QUE ENCONTRE EN UN ARCHIVO DE
                    'EXTENSION .RAM PARA LOS DE 14 BITS ,PBPPIC14.RAM     
R1_GUARDA=R1
   
   
   PORTB=255
   pause 1000
   PORTB=0
   PAUSE 1000
   PORTB=255
   pause 1000
   PORTB=0

R0=R0_GUARDA
R1=R1_GUARDA

   
   INTCON.1=0  'PONGO EL FLAG DE INTER EXTERN A CERO
          'SI PONGO UNN REGISTRO COMO PAUSE EN LA INTERRUPCION
          'AL REGRESAR SE ME CUELGA TODO POR TANTO NO PONER PAUSE EN
          'LA INTERRUPCION
   
ASM
     
    Movf   P_GUARDA,w   ; Restore PCLATH register
   Movwf   PCLATH
   Swapf   S_GUARDA,w   ; Restore STATUS register         
   Movwf   STATUS
   Swapf   W_GUARDA,f
   Swapf   W_GUARDA,w   ; Restore W register
   Retfie   ; Context restore and exit interrupt maco
Endasm

' ** THE MAIN PROGRAM STARTS HERE **

SALTOINTERRUPCION:
   INTCON.7=0   'PONE A CERO LAS INTERRUPCIONES
    OPTION_REG =%10000111
    INTCON.4=1
    INTCON.7=1 'HABILITO INTERRUPCIONES GENERALES
   
'ACA EMPIEZO EL PROGRAMA PRINCIPAL
'EMPEZARA A PARPADEAR EL PUERTOA.0

   
INICIO:   
    PORTA.0=1            
   PAUSE 500            
    PORTA.0=0         
   PAUSE 500      
   Goto INICIO            


Título: Re: RB0/INT Pic16f88 y pbp "interrupcion"
Publicado por: Eyedol en 06 de Octubre de 2007, 19:04:23
Saludos a todos los que ayudaron con este tema que habia quedado abandonado por no haber conseguido solucion.... Pues bien yo mismo la consegui... para refrecar el problema consistia en que las interrupciones con un PIC16f88 simulado en Proteus isis 6.9 no funcionaba y se pensaba que el problema era el codigo. el cual era el siguiente:

led var portb.7
ANSEL = %00000000  'los pin I/O digitales, % en bin
CMCON = $07  'comparador a off, 0x en hex
OSCCON = $7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
TRISB.7 = 0  'declaro portb.7 como salida
TRISB.0 = 1  'declaro portb.0 como entrada, 0-1 activa interrupcion
OPTION_REG = $7f  'Enable PORTB pullups
INTCON = $90  'Enable INTE interrupt

On Interrupt Goto myint ' Define interrupt handler
        INTCON = $90            ' Enable INTE interrupt

loop:   High led                ' Turn LED on
        Goto loop               ' Do it forever


' Interrupt handler
        Disable                 ' No interrupts past this point
myint:  Low led                 ' If we get here, turn LED off
        Pause   500             ' Wait .5 seconds
        INTCON.1 = 0            ' Clear interrupt flag
        Resume                  ' Return to main program
        Enable

Pues este codigo funciona perfectamente ya lo comprobe la NUEVA version 7 de PROTEUS ISIS no presenta fallas con este codigo asi que era un problema con mi vieja version ya que simplemente utilice el codigo y el mismo montaje y funciona sin error alguno. 

Espero que perdonen el haber abandonado el tema es que no hallaba solucion y recien fue que la encontre... Espero que los que sufran este mismo problema ya encuentren solucion con todo lo que aqui se hablo.  :lol: :lol: :-/ :-/ :-/