Autor Tema: un ejemplo de interrupcion  (Leído 3445 veces)

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

Desconectado godoygodoy

  • PIC10
  • *
  • Mensajes: 5
un ejemplo de interrupcion
« en: 09 de Julio de 2013, 23:06:34 »
buenas noches chicos del foro, soy nuevo en esto de programacion en mikrobasic, disculpenme si es muy basico lo que voy a comentar: sera que es posible que me den un ejemplo de un programa en donde se este realizando una secuencia en el microcontrolador y cuando yo pulse un boton se interumpa y atienda otra intruccion.
de antemano gracias!

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: un ejemplo de interrupcion
« Respuesta #1 en: 22 de Julio de 2013, 00:26:47 »
Hola amigo que tal debes de dar más detalles de lo que quieres realizar por ejemplo dices que un programa y al apretar un botón o shiwch  o algo parecido haga otra rutina
Pero mi pregunta es quieres que esa rutina se quede ahí para siempre o quieres que atienda dicha rutina y al termino de esta misma se regrese al lugar de donde fue llamada y siga en la rutina anterior antes de ser llamada por le pulsador
saludos

Desconectado godoygodoy

  • PIC10
  • *
  • Mensajes: 5
Re: un ejemplo de interrupcion
« Respuesta #2 en: 23 de Julio de 2013, 09:49:33 »
hola rocklee89, gracias por responder mi prgunta!, en realidad quiero saber cuales son los comandos en mikrobasic para realiza esta accion, por ejemplo estoy haciendo un cronometro de 30min (con while y for) y se refleja en una LCD y quisiera saber que comando puedo hacer en mikrobasic para hacer una pausa del conteo al accionar un pulsador y cuando accione nuevamente el pulsado continue el conteo.
de antemano gracias!...

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: un ejemplo de interrupcion
« Respuesta #3 en: 23 de Julio de 2013, 10:43:44 »
Hola Godoy,
porque nos no pone el codigo que tenga hecho y asi los miramos?
en el foro hay muchas informacion de eso quiere hacer es cuestion de leer y buscar, no espere que te lo hagan.
lee por aqui http://www.todopic.com.ar/foros/index.php?topic=36533.0

Desconectado godoygodoy

  • PIC10
  • *
  • Mensajes: 5
Re: un ejemplo de interrupcion
« Respuesta #4 en: 30 de Julio de 2013, 09:15:37 »
este es el programa que estoy haciendo, es un cronometro de 30min que me va a dar una alarma cada cierto tiempo, lo que quiero es hacer un boton de pausa, es decir, que cuando presione el pulsador haga una pausa y si lo vuelvo a presionar continue el conteo...

program Cronometro
dim seg, min as char[3]
dim a, b as byte
main:
     TRISA.0 = 1
     TRISA.1 = 0
     TRISA.2 = 0
     TRISA.3 = 0
     TRISA.4 = 0
     TRISB = %00000000
     Lcd_config(portb,4,5,6,7,portb,0,1,2)
     Lcd_cmd(Lcd_cursor_off)
     Lcd_out(1,1,"Cronometro 30min")
 uno:
     PORTA.1 = 0
     if PORTA.0 = 0 then
     goto menu
     else
     goto uno
     end if
menu:
      PORTA.1 = 1
     delay_ms(5)
     PORTA.1 = 0
     lcd_out(1,1,"Time  0min   seg")
     b = 0
        while b < 30
           for a = 0 to 59
               ByteToStr(a,seg)
               Lcd_Out(1,13,seg)
               Delay_ms(1000)   '1000 msegundos
           next a
           if a = 59 then
              b = b + 1
              bytetostr(b,min)
              Lcd_out(1,7,min)
              if b = 1 then
                  PORTA.1 = 1
                  delay_ms(5)
                  PORTA.1 = 0
               end if
              if b = 5 then
                  PORTA.1 = 1
                  delay_ms(5)
                  PORTA.1 = 0
               end if
               if b = 10 then
                  PORTA.1 = 1
                  delay_ms(5)
                  PORTA.1 = 0
               end if
               if b = 15 then
                  PORTA.1 = 1
                  delay_ms(5)
                  PORTA.1 = 0
               end if
               if b = 25 then
                  PORTA.1 = 1
                  delay_ms(5)
                  PORTA.1 = 0
               end if
               if b = 30 then
              lcd_cmd(lcd_clear)
              lcd_out(1,1,"FIN!")
                  PORTA.1 = 1
                  delay_ms(20000)
                  PORTA.1 = 0
               end if
            end if
        wend
end.
saludos espero me puedan ayudar!!!

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2060
Re: un ejemplo de interrupcion
« Respuesta #5 en: 30 de Julio de 2013, 18:19:06 »
godoygodoy
Amigo podrias colocar una condicion aqui:
Citar
for a = 0 to 59
               ByteToStr(a,seg)
               Lcd_Out(1,13,seg)
               Delay_ms(1000)   '1000 msegundos
           next a

De forma mientras un pin del micro este en 0 o 1, se quede enclavado alli, para asi evitar que aumente el segundero  :mrgreen:
Por ejemplo: While(porta.1)
                    wend
No estoy muy claro en la sintaxis del mikrobasic, pero mas o menos la idea es detener al micro en un bucle infinito mientras no cambie la condicion de un pin  :mrgreen:

Saludos

Desconectado godoygodoy

  • PIC10
  • *
  • Mensajes: 5
Re: un ejemplo de interrupcion
« Respuesta #6 en: 01 de Agosto de 2013, 20:46:00 »
Hola RALF2, gracias por dar tu idea, te comento que hice lo que sujeriste y no funciona, es decir que una ves que comienza el conteo de 0 a 59 no se interrumpe mas, yo creo que tengo que haser alguna subrutina de interrupcion, pero estoy aprendiendo con unas guias de internet y no aparce ningun ejemplo de este tipo.
Saludos!

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2060
Re: un ejemplo de interrupcion
« Respuesta #7 en: 01 de Agosto de 2013, 21:31:07 »
Y si colocas donde te dije:

aqui:
         if porta.1=1 then
         goto aqui
                 :mrgreen:
Y como indicas si utilizas interrupciones seria mejor y te quedaria mas organizado el programa   :-)

Desconectado godoygodoy

  • PIC10
  • *
  • Mensajes: 5
Re: un ejemplo de interrupcion
« Respuesta #8 en: 23 de Agosto de 2013, 10:09:39 »
pana RALF2 eso no funciona asi! de todas maneras gracias...