TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: godoygodoy 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!
-
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
-
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!...
-
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
-
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!!!
-
godoygodoy
Amigo podrias colocar una condicion aqui:
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
-
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!
-
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 :-)
-
pana RALF2 eso no funciona asi! de todas maneras gracias...