TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Moyin en 10 de Enero de 2007, 03:51:20

Título: Interrupciones en MKB
Publicado por: Moyin en 10 de Enero de 2007, 03:51:20
Un buen año para todos mis buenos compañeros de este tan exelente foro......Después de una larga auscencia regreso a buscar mediante su ayuda aclarar una serie de dudas, siguiendo terquenado al MKB me he topado con las interrupciones, he leido creo que toda la teoría acerca de este tema pero al revisal el HELP del MKB solo veo unos pocos ejemplos que no me dejan claro algunos puntos, trate de programar de acuerdo al orden del ensamblador y no hago nada con el programa, no me queda calro el por que del:

sub procedure interrupt
if INTCON.TMR0IF = 1 then attente = attente+1
TMR0 = 96
INTCON.TMR0IF = 0
 etc....
relicé un ejemplo del foro y lo quise cambiar para hacerlo como contador de impulsos externos a través del TOCK1 pero no consigo nada, espero pueadan ayudarme he aqui el programa:

program TMRO2
' Este programa produce el encendido del led en RBO cada interrupciòn del TMRO
'al recibir imnpulsos externos a travès del TOCKI(RA4)
dim conta as byte
sub procedure interrupt

  if INTCON.T0IF = 1 then 'Checa bandera de interrupciòn del TMRO
   conta = conta + 1      'Incrementamos conta por cada interrupciòn

    INTCON = $20          'Activamos la interrupciòn del TMRO (TOIE=1)

  if conta=1 then         'Verifica que halla desbordamiento del TMRO
  conta=0                 'Resetea contador
  portb.0=1               'Pone "1" en RB0 si se ha producido la interrupción
 
    else
  portb.0=0               'Si no permanece en "0"
    end if
  end if
 end sub

  main:
  option_reg=%01110000   'Divisor a 2, y asignadoa a TMRO(PSA),Incremento
                         'flanco ascendente TOSE=0, Como contador TOCS=1
  intcon=%10100000       ' Habilitamos las interrupciones GIE=1 y el TOIE=1

  trisa=255
  trisb=0                'Puerto B como salida
  portb=0                'Limpiamos el puerto B
  porta=0

  end.

Sinceramente estoy solo suponiendo pero no encuentro ninguna guia que me oriente, espero puedan ayudarme...Gracias....................Saludos :lol:


Título: Re: Interrupciones en MKB
Publicado por: Mario en 10 de Enero de 2007, 06:08:26
¿qué micro es este? ¿el 16F84?

Deberías de borrar el registro conta al inicio del programa

main:
conta=0

sub procedure interrupt
if INTCON.TMR0IF = 1 then attente = attente+1
TMR0 = 96
INTCON.TMR0IF = 0

La bandera de interrupción se borra durante el llamado a la rutina de interrupción, creo que lo haces en esta linea:
    INTCON = $20          'Activamos la interrupciòn del TMRO (TOIE=1)

Es noche (1:09AM) y me voy a dormir, luego lo miro con mas calma.
Título: Re: Interrupciones en MKB
Publicado por: navaismo en 10 de Enero de 2007, 10:50:58
Habra algun inconveniente que el RA4 sea colector abierto. ¿Tendra que llevar la resitencia PULL?.
Título: Re: Interrupciones en MKB
Publicado por: Mario en 10 de Enero de 2007, 13:48:35
Eso pudiera ser, lo mas seguro es que eso sea.