Autor Tema: Comenzando con Mikrobasic  (Leído 193966 veces)

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

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Comenzando con Mikrobasic
« Respuesta #135 en: 11 de Octubre de 2006, 12:19:00 »
Hi Moyin, ya  entiendo  lo que quieres hacer.

Bueno el select case sirve para evitar usar tantos IF's, el select lee los valores de una variable o de un puerto, solo se ejecutan los case's si la variable o el puerto cumple con el "case" que has elegido.

Es como una sentencia switch en C (para pc).

Un ejemplo para una variable seria:

"la variable puede tomar valores 1 y 2 por programa"
Código: [Seleccionar]
select case A
  case 1
     portb.0=1
  case 2
     portb.=0
end select

Lo que hace es ver el estado o el valor de la variable A si es 1 prende el RB0, si es 2 lo apaga cualquier otro valor no hace nada.

ahora como en tu caso leamos un puerto:

el puerto A de entrada (todo)
Código: [Seleccionar]
select case PORTA
 case 0  'o todos los puertos apagados 00000 lo k es cada valor para cada RA0-RA4
  gosub nada
 case 1  'solo RB0 encendido 00001
  gosub prende1B
 case 2 ' solo RB1 encendido 00010
   gosub x
 case 3 ' Rb0 y Rb1 00011
..............

y asi te la llevas para cada que quieras leer algo puedes usar 1 o 0, es decir puedes leer el  estado alto o el estado bajo eso tu lo implementas. Es mas versatil usar un select case mas que ifs aunque no siempre se puede.

Un ejemplo rapido de tu proyecto seria enciendes el programa y ningun swtich esta activado lo que hace avanzar tu banda, si llega a tope se activa un switch y va de regreso. seria algo asi.

Código: C#
  1.  
  2. sub procedure Avanza()
  3.  portb.X=1
  4.  portb.X=0
  5. end sub
  6.  
  7. sub procedure Regresa()
  8.  delay_ms(1000)
  9.  portb.X=0
  10.  portb.X=1
  11. end sub
  12.  
  13. sub procedure detente()
  14.  Deley_ms(1000)
  15.  portb.X=0
  16.  portb.X=0
  17. end sub
  18.  
  19.  
  20. TRISA=31
  21.  
  22. main:
  23.  select case PORTA
  24.   case 0  "'ningun switch activado"
  25.      Avanza()
  26.   case 1  "'switch activado - tope de carrera"
  27.      Regresa()
  28.   case 2  "'switch activado- inicio"
  29.     detente()
  30. end select
  31.  
  32. goto main
  33.  

Bueno espero te sirva de algo y te des una idea
« Última modificación: 13 de Octubre de 2006, 00:41:32 por navaismo »
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Comenzando con Mikrobasic
« Respuesta #136 en: 12 de Octubre de 2006, 23:56:08 »
Nuevamente agradezco tu ayuda, estoy leyendo tu respuesta y creo que estoy entendiendo, en la primera oportunidad implemento el programa y checo su funcionamiento, si hay algun detalle me atreveré nuevamente a recurrir a la valiosa ayuda qu ustedes proporcionan :P.....mil Gracias
Sonrie Cristo te ama

Desconectado joebar

  • PIC10
  • *
  • Mensajes: 25
Re: Comenzando con Mikrobasic
« Respuesta #137 en: 25 de Octubre de 2006, 19:41:57 »
Hola a todos, soys los culpables de que muchos de nosotros nos enganchemos a esto del Mikrobasic, estoy ya haciendo mis pinitos, pero necesitaría conseguir la relación completa de instrucciones y comandos con su aplicación y a ser posible en Español, ¿alguien sabe donde la puedo conseguir?, muchas gracias por vuestra ayuda, espero algún día poder ayudar como muchos de vosotros lo haceis...

Saludos. ;)

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Comenzando con Mikrobasic
« Respuesta #138 en: 26 de Octubre de 2006, 00:04:56 »
Hola Pues la lista completa y en español creo que es dificil tal vez buscando en la red.

La ayuda de MKB es muy cristalina, es decir, se entiende muy bien. y todos traen ejemplos. Dejame darte un "mal consejo" si eres principiante metete un poco con PBP ya que este no es tan "complejo" -no porque MKB lo sea- si no mas bien porque viene mas completo y no tiene tantos errores o bugs. Pero aun asi no dudes en ponernos las dudas de MKB al fin todos estamos aprendiendo.

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado resorte

  • PIC10
  • *
  • Mensajes: 2
Re: Comenzando con Mikrobasic
« Respuesta #139 en: 20 de Enero de 2007, 10:03:33 »
saludos al foro
programa xxx
dim luces as a byte [4]
dis i as byte
luces
  • = %00000011

luces
  • = %00000011

luces
  • = %00000011

luces
  • = %00000011


main:
trisa0
trisb.0=1
trisb.1=1
porta= %00000000

miro:
if (portb.1 =1) then
delay_ms(1000)
if (portb. 1=1) then
p: i = 0
end if
for i=0 to 3
porta=luces
delay_ms (10)
next i
end if
goto p
end.


las entradas no las interpreta
¿donde puedo tener el fallo?
un saludo y gracias de antemano


Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Comenzando con Mikrobasic
« Respuesta #140 en: 20 de Enero de 2007, 22:30:31 »
Vamos a comenzar con que se supone que hace tu programa no nada mas es poner y ya. Luego esta raro, si vas a usar IFS anidados te sugiero uses la sentencia ELSE si no tendran que ser IFs separados.  El TRISA debe llevar un igual: TRISA=0 y la variable luces porque la defines 4 veces de la misma manera. no veo los subindices en las definiciones.

"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado resorte

  • PIC10
  • *
  • Mensajes: 2
Re: Comenzando con Mikrobasic
« Respuesta #141 en: 21 de Enero de 2007, 06:27:32 »
Gracias por contestar.
No se que paso cuando lo copie del programa al cuadro de responder mensaje se perdieron cosas.
ya lo tengo solucionado ya sabes al que no investiga le crece la barriga.
la aplicacion no son luces , es para el control de giro de un motor paso a paso .
con el rb0 y el rb1 le digo el sentido de giro .
quisiera depurarlo un poco mas a ver si podemos hacerlo.
he estado mirando por el foro los programas que mandais estoy dandole bueltas.
si pusieramos un rb2 y rb3 para cambiar el delay mas o menos para regular la velocidad me haria falta que esta se quedara grabada en un area de memoria ¿ como se podria hacer esto?
aqui va el programa si alguien quiere el circuito me lo pidan.
program PASO A PASO
dim IR as byte [4]       'DIRECCION GIRO  DERCHA
dim TRAS as byte  [4]    'DIRECCION GIRO  IZQUIERDA
dim i as byte             'BYTE DERECHA
dim e as byte             'BYTE IZQUIERDA
IR[0] = %00000011         'SECUENCIA DERECHA
IR[1] = %00000110
IR[2] = %00001100
IR[3] = %00001001
TRAS[0] = %00001001       'SECUENCIA IZQUIERDA
TRAS[1] = %00001100
TRAS[2] = %00000110
TRAS[3] = %00000011
main:
     TRISA=0       'PUERTO A SALIDAS
     TRISB=3       'PUERTO B ENTRADAS 0,1,2

P:
       if PORTB.0= 0 then     'SI ENTRADA 0 ES OK
       GOTO c                 'VE A C:
       end if                 'TERMINA IF

     if PORTB.1= 0 then        ' SI ENTRADA 1 ES OK
     goto d                    'VETE A D:
     end if                    'TERMINA IF
     GOTO P                    'REPITE P:
c:    i=0
     for i=0 to 3              'VE DE 0 A 3
          PORTA= IR         'ENVIA A LA SALIDA A SECUENCIA IR
          Vdelay_ms (12)       'CON UN RETARDO DE 12 MS
     next i
     goto p                     'RETORNA A P:
d:     e=0
     for e=0 to 3
          PORTA= TRAS [e]
          Vdelay_ms (12)
     next e
      goto P
end.
y el motor gira!!!!!!!
« Última modificación: 21 de Enero de 2007, 06:32:34 por resorte »

Desconectado Carli

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 109
Re: Comenzando con Mikrobasic
« Respuesta #142 en: 29 de Enero de 2007, 16:30:41 »
Hola, me esto iniciando en MKB y me da verguenza preguntar esto, pero tengo que hacerlo por que no encuentro la forma de hacerlo.

Copiando uno de los ejemplos de Paola, pude tomar lecturas analogicas. Ahora quiero tomar lecturas digitales en tren de pulsos es para tomar unas RPM y no se como hacerlo si me dan una mano se lo agradeceria mucho.

Carlos.
Nueve de Julio - Buenos Aires - Argentina

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5102
    • uControl
Re: Comenzando con Mikrobasic
« Respuesta #143 en: 30 de Enero de 2007, 11:14:54 »
Hola Carlos!
Este articulo del amigo Diego, a pesar de estar pensado para C, te puede ser MUY util.

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Carli

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 109
Re: Comenzando con Mikrobasic
« Respuesta #144 en: 05 de Febrero de 2007, 11:37:40 »
Hola compañeros, quiero hacer un tacometro y no se como leer el tren de pusos, ni como sacar el "W" para visulisarlo en el lcd estoy utilizando un pic 16f876a.

Estuve leyendo lo que escribio Red Pic pero es en C y como recien estoy empezando no me doy cuenta de pasarlo a MKB.

Por favor a ver si me dan una mano.

Saludos. Y espero su respuesta.
Nueve de Julio - Buenos Aires - Argentina

Desconectado Carli

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 109
Re: Comenzando con Mikrobasic
« Respuesta #145 en: 05 de Febrero de 2007, 11:57:55 »
He usado este codigo que estaba en la ayuda, pero faltan datos y no se como ni donde ponerlos.

sub procedure interrupt
  if TestBit(INTCON, TMR1IF) = 1 then
    counter = counter + 1
    TMR0 = 96
    ClearBit(INTCON, TMR1F)
   ' ClearBit is realised as an inline function,
   ' and may be called from within an interrupt
  else
    if TestBit(INTCON, RBIF) = 1 then
      counter = counter + 1
      TMR0 = 96
      ClearBit(INTCON,RBIF)
    end if
  end if
end sub

Gracias.
Nueve de Julio - Buenos Aires - Argentina

Desconectado Dani27v

  • PIC12
  • **
  • Mensajes: 73
Re: Comenzando con Mikrobasic
« Respuesta #146 en: 11 de Febrero de 2007, 08:21:45 »

 Hola, estaria tambien interesado como Carli,en la respuesta de su pregunta, alguien podria poner un ejemplo de una temporización? Me gustaria poder tener una subrutina para incluir en programas futuros temporizaciones, un saludo y gracias de antemano.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Comenzando con Mikrobasic
« Respuesta #147 en: 11 de Febrero de 2007, 18:30:08 »
Bueno como le comente a Carli no estoy muy ducho con lo de los timer, por ahi Mario dejo un link de Rentron donde ponen un ejemplo en PBP y el cual puede ser adaptable.

Con respecto a la temporizacion es simplemente una Pausa la cual puedes hacer tu con delay_ms() dentro de un for y segun la exactitud que requieres mas grande el for y menor el delay y lo vas ajustando.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Dani27v

  • PIC12
  • **
  • Mensajes: 73
Re: Comenzando con Mikrobasic
« Respuesta #148 en: 12 de Febrero de 2007, 10:26:09 »


  Muchas gracias por tu respuesta, entonces puedo utilizar el delay_ms sin "limte" , bueno es un decir, me refiero q si quiero hacer una temporización de una hora ,por ejemplo, prodia hacerlo igual con el delay_ms, repitiendolo tantas veces como sea necesario,lo probare a ver q tal, asi es mucho mas sencillo, gracias nuevamente por tu respuesta, un saludo.

Desconectado Carli

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 109
Re: Comenzando con Mikrobasic
« Respuesta #149 en: 12 de Febrero de 2007, 11:08:52 »
Gracias, Navisimo.

Buscare el link.

Carlos.
Nueve de Julio - Buenos Aires - Argentina