TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: KARINA83 en 25 de Julio de 2008, 16:39:39

Título: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 25 de Julio de 2008, 16:39:39
http://www.todopic.com.ar/foros/index.php?topic=21817.0
pero se podra hacer al reves?              si presiono  rb0 una vez prende una vez
                                                                           rb1  2                       una
                                                                           br2  3                        una
                                                                           br3  4                        una
dejen ver como seria con pbp
bye :-/ :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: doppel en 26 de Julio de 2008, 01:45:36
Hola Karina83

podrias explicarlo un poco mejor y con gusto te ayudaremos, por que si no entiendo mal quieres presionar 1, 2, 3 y 4 veces un pulsador? y encender una vez que cosa?

saludos

Hernán
Título: Re: interesante (proyecto con pic y led)
Publicado por: RALF2 en 26 de Julio de 2008, 12:12:59
Que tal karina!
Si te estas iniciando en los microcontroladores pic, te recomiendo:
1:Te recomiendo que te leas un buen libro de asembler para que comprendas como opera el pic.
2:leete el manual de arriba a abajo del pic basic pro si vas a trabajar con el.
3: lee, lee, lee, lee, y sigue leyendo sobre pic. Para ello en el foro hay bastante informacion.
4: Empieza por algo simple primero, nunca por algo complicado porque sino te vas a hacer un lio.

No olvides sigue leyendo  :mrgreen:

Saludos
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 26 de Julio de 2008, 13:06:01
hola doppel y ralf  si entiendo el codigo de el amigo juanchiripiorcas y mi pregunta es: como seria el codigo de juan pero al reves.
lo que juan hace con su programa es lo siguiente:
 
tiene conectados cuatro pulsadores ( buttons) en RB0,RB1,RB2 , RB3 y RB4 con un led
cuando activa 1 vez RB0------------------RB4 enciende el led (destella ) 1 vez durante 300ms
cuando activa 1 vez RB1------------------RB4 enciende el led (destella)  2 veces durante 300ms
cuando activa 1 vez RB2------------------RB4 enciende el led (destella)  3 veces durante 300ms
cuando activa 1 vez RB3------------------RB4 enciende el led (destella)  4 veces durante 300ms
ya lo simule con proteus y si funciona bien

pero mi pregunta es como seria el codigo que lo haga lo contrario asi:

tiene conectados cuatro pulsadores ( buttons) en RB0,RB1,RB2 , RB3 y RB4 con un led
cuando activa 1    vez RB0------------------RB4 enciende el led (destella ) 1 vez durante 300ms
cuando activa 2 veces RB1------------------RB4 enciende el led (destella)  1 vez durante 300ms
cuando activa 3 veces RB2------------------RB4 enciende el led (destella)  1 vez durante 300ms
cuando activa 4 veces RB3------------------RB4 enciende el led (destella)  1 vez durante 300ms

(diganme si se entiende por que a veces soy un poco? tonta para explicar mis ideas) :D
lo estoy tratando de hacer por medio de la memoria pero no me funciona  bien  :8} :z)
dejen  le sigo un rato haber si puedo
gracias
saludos y besos :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: ASTROCAR en 26 de Julio de 2008, 13:18:17
karina, buenos dias como ya te comento el amigo ralf2 trata en lo posible de ir leyendo sobre el compilador que te quieres familiarizar y luego empieza con ejemplos simples y que lo domines y luego vas dando grado de dificulpa a tus proyecto asi crecemos todos yo ando loco leyendo sobre las glcd pero asi es que uno aprende uy a parende cada dia mas


saludos y aca esta,os para colaborarte.
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 26 de Julio de 2008, 13:54:36
hola doppel y ralf  si entiendo el codigo de el amigo juanchiripiorcas y mi pregunta es: como seria el codigo de juan pero al reves.
lo que juan hace con su programa es lo siguiente:
 
tiene conectados cuatro pulsadores ( buttons) en RB0,RB1,RB2 , RB3 y RB4 con un led
cuando activa 1 vez RB0------------------RB4 enciende el led (destella ) 1 vez durante 300ms
cuando activa 1 vez RB1------------------RB4 enciende el led (destella)  2 veces durante 300ms
cuando activa 1 vez RB2------------------RB4 enciende el led (destella)  3 veces durante 300ms
cuando activa 1 vez RB3------------------RB4 enciende el led (destella)  4 veces durante 300ms
ya lo simule con proteus y si funciona bien

pero mi pregunta es como seria el codigo que lo haga lo contrario asi:

tiene conectados cuatro pulsadores ( buttons) en RB0,RB1,RB2 , RB3 y RB4 con un led
cuando activa 1    vez RB0------------------RB4 enciende el led (destella ) 1 vez durante 300ms
cuando activa 2 veces RB1------------------RB4 enciende el led (destella)  1 vez durante 300ms
cuando activa 3 veces RB2------------------RB4 enciende el led (destella)  1 vez durante 300ms
cuando activa 4 veces RB3------------------RB4 enciende el led (destella)  1 vez durante 300ms

(diganme si se entiende por que a veces soy un poco? tonta para explicar mis ideas) :D
lo estoy tratando de hacer por medio de la memoria pero no me funciona  bien  :8} :z)
dejen  le sigo un rato haber si puedo
gracias
saludos y besos :g)

Anda hija mía que te enrollas muy feo :D :D  con calma :-) :-) lo que pretendes por supuesto que es posible no tiene mayor complicación. 8)
Así que déjanos ver tu código y con mucho gusto te ayudamos. :-/ :-/



Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 26 de Julio de 2008, 14:30:22
Hola Karina, leí tu mensaje y entendí lo que querías (aunque me costó eh  :D ), pero no respondí porque no tenía mucho tiempo, y de verdad que lo ví así como que quieres hacer eso sólo por curiosidad, lo cual es muy bueno.
Como te mencionó Sandra, claro que es posible. Lo único que tendrías que hacer sería evaluar que se presionó el botón por primera vez, luego si se presionó evalúas si se vuelve a presionar tantas veces como dependa del pulsador en cuestión...

Un ejemplo con RB1, que si se presiona dos veces activa RB4, sería con if anidados, algo así:

Código: FreeBasic
  1. if (PORTB.1==0) then          'si entra a este if es porque se presionó una vez.
  2.       pause 500                     'un retardo mientras el pulsador vuelve a su estado normal y luego lo vuelves a presionar.    
  3.       if(PORTB.1==0) then     'si entra a este if es porque se presionó por segunda vez.
  4.            high PORTB.4            'entonces enciende el led
  5.            pause 300                'esperas 300ms
  6.            low PORTB.4             'y lo apagas (Estoy suponiendo que el led está conectado con cátodo a tierra, o sea enciende con 1 lógico).
  7.       endif
  8.       else
  9.            goto inicio                'si no entra al if es porque no se presionó por segunda vez, entonces vuelve al principio para seguir evaluando.
  10. endif

Bueno esta sería más o menos la lógica, tendrías tú que seguir con el resto del programa para hacerlo con los otros tres pulsadores.
Esperamos tus avances!
Un cordial saludo, nos leemos!  :mrgreen:

P.D.: EDITO para corregir los "if(condicion)" que había colocado por "if(condicion)then...endif"... es que se me pegaron las llaves de tanto estar trabajando en C :D
Sandra gracias por recordármelo...  :lol:
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 26 de Julio de 2008, 14:40:59
Karina, acabo de ver que si quieres hacerlo más elegante, puedes usar la instrucción "Button"... mira el manual de pbp para que veas cómo es la sintaxis.
Un cordial saludo!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 26 de Julio de 2008, 15:46:07
Bueno aunque es una forma de darle solución otra forma seria  que cada ves que se presione el botón sumes 1 algo así  if portb.0=1 then suma=suma+1
                                   If  suma=4  then 
                                   gosub parpadeo
Aclaro esto es solo la idea ase falta desarrollarlo  así es como yo lo atacaría  otra forma de que quede mas elegante es utilizando el selec case  así evitas anidar los if then
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 26 de Julio de 2008, 15:57:25
Excelente idea Sandra!  :-/
Pero igual habría que colocar un retardo verdad? Digo por el efecto rebote...
Ok saludos, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: doppel en 27 de Julio de 2008, 02:39:17
Hola a todos!!
Acabo de entender la idea!! ahora tengo una preguntita!! si hacemos eso que dicen que presionamos una vez y enciende 1 vez el led por 300ms y presionamos 2 veces y enciende el led por 300ms  digo yo como nos damos cuenta que anda bien el programa!? :shock: ya que siempre presionemos una dos o 4 veces encenderá el led no hay forma alguna de identificar por este medio si está funcionando correctamente el programa que hemos escrito, me explico? mas allá de que es totalmente posible hacer lo que piden en la realidad sería muy dificil saber si anda bien   :mrgreen:

saludos

Hernán

PD: mi humilde consejo es que leas el manual y vayas hojeando en la parte de basic del foro hay mucha información que te puede ser de utilidad, y a medida que avances tu sola podrás proponerte diferentes retos para programar y con mucho gusto te ayudaremos, que para eso está el foro.-
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 27 de Julio de 2008, 11:12:47
Efectivamente   aria falta  un retardo para evitar el rebote de lo contrario no tendríamos control sobré cuantas veces se incrementa la variable suma ,sin el retardo podría incrementar aleatoria mente  de 1 asta el valor máximo que permita el tipo de variable que utilicemos.
Y si realmente así como lo pretende realizar es difícil checar el funcionamiento del programa.
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 27 de Julio de 2008, 22:49:12
 hola a todas y todos
 :z)  este funiona pero hay que pulsar rapido(esta loco el programa verdad?)



;RB0 una pulsada = 1 destello
        if PORTB.0 = 1 then     
         high 6
         pause 300
         low 6
         endif
         ;RB1 3pulsadas = 1 destello
         if PORTB.1 = 1 then     
         high 5
         pause 500
         low 5
         if PORTB.1 = 1 then     
         high 5
         pause 500
         low 5
         
         if PORTB.1 = 1 then
         high 5
         pause 500
         low 5
         high 6
         pause 300 
         low 6
         endif
         endif 
         endif


es que soy nuevita......jajaja  para usar  lo que me recomienda sandrita
(y si, en verdad  no le veo un fin practico  pero para fines didacticos seria de mucha utilidad en especial para mi jajaja)
 recivan un caluroso abrazo y nos leemos bye. :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 28 de Julio de 2008, 02:54:43
ayyyyyy sandrita deveras que eres canijilla  son casi las 00:30 y ya medio entedi tus señales ahorita ya puedo con 1 y 2 pulsaciones

S A N D R I T A ...... misssssss RESPETOS  jefa ,tenias quer  ser vieja(mujer) ajua... voy por 3 pulsaciones ( a ver si puedo)
y que quede bien claro es solo curisidad.
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 28 de Julio de 2008, 11:27:33
Acabo de entender la idea!! ahora tengo una preguntita!! si hacemos eso que dicen que presionamos una vez y enciende 1 vez el led por 300ms y presionamos 2 veces y enciende el led por 300ms  digo yo como nos damos cuenta que anda bien el programa!? :shock: ya que siempre presionemos una dos o 4 veces encenderá el led no hay forma alguna de identificar por este medio si está funcionando correctamente el programa que hemos escrito, me explico? mas allá de que es totalmente posible hacer lo que piden en la realidad sería muy dificil saber si anda bien   :mrgreen:

Maestro doppel, sí se puede saber si funciona bien o no. Porque si te das cuenta, aunque hay un único led, hay cuatro pulsadores distintos.
Pulsador 1Debe presionarse 1 vez      Led enciende por 300ms
Pulsador 2Debe presionarse 2 veces  Led enciende por 300ms
Pulsador 3Debe presionarse 3 veces  Led enciende por 300ms
Pulsador 4Debe presionarse 4 veces  Led enciende por 300ms

Karina sandra es una experta... de hecho haciéndolo de la forma que ella menciona ni siquiera tendrás problemas en que tienes que pulsar rápido o lentamente... claro que siempre, para envitar los rebotes, deberías introducir un retardo, tal como ella menciona.
Y te felicito por tu curiosidad y entrepidez. Sigue así, que te divertirás en grande programando!  :D
Ey, y déjanos ver ese código funcionando!
Saludos, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 28 de Julio de 2008, 13:13:55
Hola realmente la forma que te comento no tiene complicación  mas que hay que dedicarse un rato no es mas que una variable que suma de a 1 cada ves que presionas un botón.
Por lo que veo  toda vía no comprendes  lo que es una variable (me paso igual  me tarde en entender a las muy malditas.)
Es súper básico que comiences a manejar este concepto te  recomiendo que te leas un tutorial de programación genérica así es como yo a prendí.
Así como pones tu ejemplo tiene inconsistencias graves  la razón de porque tienes que pulsar muy rápido tiene que ver con ello.
Aquí unos tips
1 .Como es que  visualizas led encendido y led a pagado
High portb.0
Delayms  300
Low portb.0 ‘ esta rutina esta mal
2. no le indicas a tu rutina que hacer cuando sueltas el botón únicamente le dices que hacer
Cuando lo presionas.
3. por ningún lado miro que sierres tu  rutina así entre otros errores únicamente se ejecuta una ves deberías tener algo así

Main:    ‘lectura de puertos

If portb.0=1 then
Bla
Bla
Bla

Goto main ’ súper súper importante
 Así que  mi pequeña salta montes a estudiar  y recuerda la fuerza esta con tigo :P :P
 Y de experta nada mi mayor virtud es la terquedad  soy muy cabeza dura pero mi terquedad lo es mas :-/ :-/
 
 
Título: Re: interesante (proyecto con pic y led)
Publicado por: doppel en 28 de Julio de 2008, 15:58:48
Hola Karina!!

te dejo un ejemplo de lo que tendrias que hacer con algunas variantes como ser que cada vez que se cumple la condicion el led enciende 5 veces con una frecuencia de 300ms como vos querias.-
Yo programo en Protón pero como veo que tu lo haces en PBP no tendrás mayores complicaciones por que solo hay detalles muy pequeñitos entre uno y otro compilador y mas allá de esto te servirá para ver el funcionamiento del programa y poder modificarlo o adecuarlo a lo que quieras.-
El programa va comentado si tienes dudas consulta  :-)
Código: FreeBasic
  1. '****************************************************************
  2. '*  Name    : 4 pulsadores y 1 led                              *
  3. '*  Date    : 28 de julio de 2008                               *
  4. '*  Notes   :  Doppel 2008 - ejemplo para todopic               *
  5. '*          :  www.todopic.net                                  *
  6. '****************************************************************
  7. Device 16F84A          'pic a usar
  8. XTAL 4                  'frecuencia del cristal que usaremos
  9.  
  10.  '**********************definicion de variables*******************
  11. Dim x As Byte  'variable del for
  12. Dim a As Byte  'variables de los contadores
  13. Dim b As Byte
  14. Dim c As Byte
  15. Dim buffer_boton As Byte  ' buffer usado por el boton
  16. Dim buffer_boton1 As Byte  ' buffer usado por el boton1
  17. Dim buffer_boton2 As Byte   ' buffer usado por el boton2
  18. Dim buffer_boton3 As Byte   ' buffer usado por el boton3
  19.  
  20. '************** defino alias a los diferentes puertos/pines***************
  21. Symbol boton = PORTB.0     'defino boton en el puerto PORTB.0
  22. Symbol boton1 = PORTB.1
  23. Symbol boton2 = PORTB.2       'le pongo alias a los puertos desde B0 hasta B3
  24. Symbol boton3 = PORTB.3
  25.  
  26. Symbol led = PORTB.7      'defino LED en el puerto PORTB.7
  27.  
  28. '**********************definicion de puertos************************
  29. TRISB = %00001111         'defino entrada de botones y todas salidas
  30. PORTB = 0                 ' pongo el puerto a "0"
  31.  
  32. '*********************pongo las variables a "0"**********************
  33. x=0        'inicio todas las variables en "0"
  34. a=0
  35. b=0
  36. c=0
  37. '*************************comienzo del programa********************
  38. inicio:
  39.         DelayMS 10
  40.         Button  boton,0,40,5,buffer_boton,1,titilar   ' si se presiona boton salta a titilar
  41.         Button  boton1,0,40,5,buffer_boton1,1,dos   ' si se presiona boton salta a "dos"
  42.         Button  boton2,0,40,5,buffer_boton2,1,tres   ' si se presiona boton salta a "tres"
  43.         Button  boton3,0,40,5,buffer_boton3,1,cuatro  ' si se presiona boton salta a "cuatro"
  44.         GoTo inicio                                      
  45.        
  46. dos:
  47.       If a=1 Then       'es a = 1 si es verdad me voy a titilar
  48.         GoTo titilar
  49.         Else a=a+1     'sino sumo 1 y vuelvo a inicio esperando que presionen un boton
  50.        EndIf            
  51.     GoTo inicio
  52. tres:
  53.       If b=2 Then
  54.         GoTo titilar
  55.         Else b=b+1
  56.       EndIf            
  57.     GoTo inicio
  58. cuatro:          
  59.         If c=3 Then
  60.           GoTo titilar
  61.           Else c=c+1
  62.         EndIf                
  63.       GoTo  inicio          
  64.  
  65. titilar:
  66.       For x=1 To 5          'enciendo 5 veces el led a 300ms
  67.             High led
  68.             DelayMS 300
  69.             Low led
  70.             DelayMS 300
  71.       Next
  72.          a=0         ' reseteo las variables esperando la proxima pulsacion
  73.          b=0
  74.          c=0
  75.       GoTo inicio   'vuelvo a inicio
  76.                    
  77. End      'fin del programa

te adjunto una imagen del circuito de pruebas en proteus

la mayor diferencia es que uso la instruccion BUTTON que es propia de proton y es muy práctica ya que te elimina los rebotes y ademas tiene otras propiedades esto lo puedes sustituir por un simple IF e ir preguntando cuantas veces fue presionado.-
Espero que el ejemplo sea de utilidad

saludos

Hernán
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 28 de Julio de 2008, 16:36:05
Exactamente la ida era esa esta es la manera correcta de desarrollar el problema estúdialo muy bien.
Te bas a enredar un poco  al seguir el hilo del programa,  te recomiendo que imprimas el magnifico ejemplo que te han puesto   y con un   marcador sigue el flujo del programa y en cada instrucción pregúntate porque de este punto salta a tal punto porque regresa  aquí tienes un  muy buen ejemplo dedícale tiempo y cuando lo entiendas ya tendrás buenas bases para que entiendas otros. con este ejemplo vas a entender
Que son las  variables
Que son las subrutinas
Que es un bucle
Y sobre todo como se estructura un algoritmo
A  se me olvidaba la instrucción button también la encuentras en el pbp

Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 28 de Julio de 2008, 23:05:34
mira que son unos barbaros el ejemplo? (no eso no es ejemplo es un PROYECTO TERMINADO) funciona a la perfeccion ya le puse los otros RB hasta 8 pulsaciones y oki doki, perfecto,excelente,preciso,magnifico etc etc.
estoy estudiando el ejemplo? y hasta el momento solo quiero saber que dice en esta linea?
Button  boton1,0,40,5,buffer_boton1,1,dos
button=insruccion
boton=portb.0
0=?
40=?
5=?
buffer_boton1=variable
1=?
dos= va a runina? dos?
si me despejan esas dudas se los agradecere toda la vida
sandrita y doppel diganme donde viven  para hir a hacerles sus labores domesticas por puro agradecimiento jajajajajajaja
voy a seguir estudiandolo y si tengo mas dudas( ni modo ya me adoptaron como su pequeña saltamontes) se las platico.
abrazos y besos :-/ :-/ :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 28 de Julio de 2008, 23:34:04
Qué tal Karina!
Esto que dice el manual del PBP te puede ayudar:

(http://img213.imageshack.us/img213/4989/pantallazovz8.png)

De manera que los elementos son:
0:   El estado lógico del pin cuando el botón es presionado.
40: El delay (evita los rebotes).
5:   Tasa de repetición.
buffer_buton1: La variable que usa la instrucción para la cuenta de cuántas veces ha sido presionado. Debes ponerla a 0 antes de la instrucción y no usarla en el resto del programa.
1:   La variable incrementará cuando el botón esté accionado o presionado.
dos: La rutina a la que saltará si se cumple el button.

Espero que esto te ayude. Cualquier duda ya sabes donde decirla  :lol:
Saludos a todos, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 29 de Julio de 2008, 13:58:40
Así es mi pequeña saltamontes hay que leer el manual del pbp  en  la red hay un manual traducido al español  ya sabes san google.
No se si dentro de tus materias estudies programación pero si no es así antes de leer el manual del pbp como ya te dique es mejor que comiences con un tutorial de programación genérica aunque al Pb. le puedes entrar directamente es mejor hacerlo con bases.

Dale a un hombre un pescado y comerá una ves, enseña a un hombre a pescar y comerá toda la vida
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 29 de Julio de 2008, 16:25:00
Dale a un hombre un pescado y comerá una ves, enseña a un hombre a pescar y comerá toda la vida
Venga sandra, ese proverbio chino me encanta!  :-/  Parece simple pero encierra una gran verdad y mucha sabiduría!!  :P
Ojalá más personas entendieran el significado que encierra ese proverbio  :(
Saludos, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 29 de Julio de 2008, 16:58:35
Si de repente me pongo mística  :-/ :-/  om  ommmmm  ommmm  :mrgreen:
Pero así es  si  mi paisana esta dispuesta a aprender yo estoy dispuesta a enseñar pero no regalo nada por que en  ves de hacerle un bien le ago un daño 8)

llega un momento en que un maestro elige un discípulo para transferir sus conocimientos y a través del discípulo continuara viviendo el maestro  :D :D :D de que peli es no me acuerdo :P :P
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 29 de Julio de 2008, 17:29:55
Si de repente me pongo mística  :-/ :-/  om  ommmmm  ommmm  :mrgreen:
:D  :D  :D

Bueno pues buena decisión esa que has tomado Sandrita, de transmitir conocimientos y no regalar nada.
Pues los maestros del foro como que también vieron esa película, porque están quedando inmortalizados de tanto que nos enseñan!  :-/
Es excelente en verdad.

Y pues yo creo que sí, tu paisana tiene muchas ganas de aprender! Así que ya tienes a tu discípula  :lol:
Saludos, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 30 de Julio de 2008, 14:28:15
buenos dias a todas y todos ustedes(aaaay como que me acorde de alguien de guanajuato "chiquillas y chiquillos"jajajajaja)
Sandrita,doppel,firepic son unos malvados anoche tuve pesadillas  con los buttons,if__then,var y has un pic16f628 me queria tragar pero gracias muchisisisisimas gracias no saben el montos de cosas que he aprendido en estos dias gracias a mis shen shei .
bueno pasando a otra cosa (por que ya se me quieren salir mis lagrimitas).
por lo que he visto quiere decir que el cidigo de juanchiripiorcas esta mal hecho?
veanlo:


'****************************************************************
'*  Name    : destellos.BAS                                                       *
'*  Author  : [set under view...options]                                *
'*  Notice  : Copyright (c) 2008 [set under view...options]     *
'*          : All Rights Reserved                               *
'*  Date    : 20/07/2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************


                     ;E=ENTRADA     S=SALIDA
TRISB = %00011111   ;COFIGURO EL PORTB RB0=E,RB1=E,RB2=E,RB3=E,RB4=E,RB5=S,RB6=S,RB7=S

         ;enciende un vez
        if PORTB.0 = 1 then     ;AQUI ACTIVO A RB0 CON ALTO
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        ENDIF

      ;enciende 2 veces
        if PORTB.1 = 1 then     ;AQUI ACTIVO A RB1 CON ALTO
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        ENDIF

       ;encinde 3 veces
        if PORTB.2 = 1 then     ;AQUI ACTIVO A RB2 CON ALTO
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        ENDIF

        ;enciende 4 veces   
        if PORTB.3 = 1 then     ;AQUI ACTIVO A RB3 CON ALTO
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        ENDIF

    ;enciende 5 veces   
        if PORTB.4 = 1 then     ;AQUI ACTIVO A RB4 CON ALTO
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        High 5                   ;PONE ALTO RB5 (ENCIENDE LED)
        pause 300                ;DURANTE 300MS
        low 5                    ;PONE BAJO A RB5(APAGA LED)
        pause 300                ;DURANTE 300MS
        ENDIF






a continuacion le pongo el que yo modifique de doppel  y de adecua a este
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 30 de Julio de 2008, 14:38:00
amigo doppel espero no te enoje  la modificacion a tu codigo y espero me corrijan lo que este mal.




'****************************************************************
'*  Name    : destellador.BAS                                      *
'*  Author  : Doppel 2008 - ejemplo para todopic                    *
'*  Notice  : Doppel 2008 - ejemplo para todopic *
'*          : www.todopic.net                               *
'*  Date    : 30/07/2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :   modificado karina83                                                *
'*          :                                                   *
'****************************************************************
'**********************definicion de variables*******************
 x var Byte  'variable del for
 a var Byte  'variables de los contadores
 
 
buffer_boton var Byte  ' buffer usado por el boton
buffer_boton1 var Byte  ' buffer usado por el boton1
buffer_boton2 var Byte   ' buffer usado por el boton2
buffer_boton3 var Byte   ' buffer usado por el boton3
buffer_boton4 var Byte   ' buffer usado por el boton4
buffer_boton5 var Byte   ' buffer usado por el boton5
buffer_boton6 var Byte   ' buffer usado por el boton6

 
'************** defino alias a los diferentes puertos/pines***************
Symbol boton = PORTB.0     'defino boton en el puerto PORTB.0
Symbol boton1 = PORTB.1
Symbol boton2 = PORTB.2       'le pongo alias a los puertos desde B0 hasta B3
Symbol boton3 = PORTB.3
Symbol boton4 = PORTB.4
Symbol boton5 = PORTB.5
Symbol boton6 = PORTB.6

 
Symbol led = PORTB.7      'defino LED en el puerto PORTB.7
 
'**********************definicion de puertos************************
TRISB = %01111111         'defino entrada de botones y todas salidas
PORTB = 0                 ' pongo el puerto a "0"
 
'*********************pongo las variables a "0"**********************
x=0        'inicio todas las variables en "0"
a=0


'*************************comienzo del programa********************
inicio:
       pause 10
     
       Button  boton,0,40,5,buffer_boton,1,uno   ' si se presiona boton salta a titilar
       Button  boton1,0,40,5,buffer_boton1,1,dos   ' si se presiona boton salta a "dos"
       Button  boton2,0,40,5,buffer_boton2,1,tres   ' si se presiona boton salta a "tres"
       Button  boton3,0,40,5,buffer_boton3,1,cuatro  ' si se presiona boton salta a "cuatro"
       Button  boton4,0,40,5,buffer_boton4,1,cinco  ' si se presiona boton salta a "cinco"
       Button  boton5,0,40,5,buffer_boton5,1,seis  ' si se presiona boton salta a "seis"
       Button  boton6,0,40,5,buffer_boton6,1,siete  ' si se presiona boton salta a "siete"
       GoTo inicio
       
       
uno:
     For x=1 To 1          'enciendo 1 veces el led a 300ms
           High led
           pause 500
           Low led
           pause 300
     Next
        a=0         ' reseteo las variables esperando la proxima pulsacion
        GoTo inicio   'vuelvo a inicio     
dos:
     For x=1 To 2          'enciendo 2 veces el led a 300ms
           High led
           pause 500
           Low led
           pause 300
     Next
        a=0         ' reseteo las variables esperando la proxima pulsacion
        GoTo inicio   'vuelvo a inicio         
       
tres:
     For x=1 To 3          'enciendo 3 veces el led a 300ms
           High led
           pause 500
           Low led
           pause 300
     Next
        a=0         ' reseteo las variables esperando la proxima pulsacion
        GoTo inicio   'vuelvo a inicio       
cuatro:
     For x=1 To 4          'enciendo 4 veces el led a 300ms
           High led
           pause 500
           Low led
           pause 300
     Next
        a=0         ' reseteo las variables esperando la proxima pulsacion
        GoTo inicio   'vuelvo a inicio       
cinco:
     For x=1 To 5          'enciendo 5 veces el led a 300ms
           High led
           pause 500
           Low led
           pause 300
     Next
        a=0         ' reseteo las variables esperando la proxima pulsacion
        GoTo inicio   'vuelvo a inicio       
seis:
     For x=1 To 6          'enciendo 6 veces el led a 300ms
           High led
           pause 500
           Low led
           pause 300
     Next
        a=0         ' reseteo las variables esperando la proxima pulsacion
        GoTo inicio   'vuelvo a inicio       
siete:
     For x=1 To 7          'enciendo 7 veces el led a 300ms
           High led
           pause 500
           Low led
           pause 300
     Next
        a=0         ' reseteo las variables esperando la proxima pulsacion
        GoTo inicio   'vuelvo a inicio       
 end



espero  aprovacion o desaprovacion de mis shen shei s.
abrazos y besos  :g)   
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 30 de Julio de 2008, 18:04:51
Perdon la intrusion ahora solo depuralo quita el uso de LOw y HIGH por 1 y 0 declarando el puerto como salida
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 31 de Julio de 2008, 11:04:19
Te ha quedado fino karina, felicitaciones!  :-/
Lo único que yo le arreglaría serían los for... hay muchos que hacen lo mismo, la única diferencia es el número de repeticiones.
Entonces yo declararía una variable que defina el número de repeticiones, y en las etiquetas uno, dos, tres, cuatro, etc... darle el valor correspondiente. Luego el for quedaría así:
Código: FreeBasic
  1. nVeces Var BYTE                 'esto lo declaras al inicio
  2. '
  3. '
  4. '
  5.      For x=1 To nVeces          'enciendo n veces el led a 300ms
  6.            High led
  7.            pause 300
  8.            Low led
  9.            pause 300
  10.      Next

De esa forma optimizas un poco más el código, aparte de lo que te mencionó Navaismo. Si no me he explicado bien avisas y trato de colocar el ejemplo de forma más clara.
Ok Kari, sigue adelante, te deseo mucho éxito en tu aprendizaje!  :lol:
Saludos, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 31 de Julio de 2008, 17:46:30
Así es mi pequeña flor de  loto :mrgreen:,  poco  a poco iras tomando el detalle fino que es  optimizar código es ilógico y consume mucha memoria el repetir n veces una tarea, si el micro a de hacer muchos veces determinada líneas de código lo que procede es crear una subrutina (gosub) que llamaremos las n veces que sea necesario además que es mas fácil hacer cambios, haber que pasa si te pido que cambies el delay a 1000  tendrás que cambiar 7 veces  el maldito delay  y que tal si en lugar de 7 fueran 100 asta con copi and paste estaría cansado no,en cambio si lo tratas como sub rutina solo cambias una ves.
También como ya te mencionaron es momento de ir cogiendo buenos modales de programación a parte de que en algunos casos también optimizas código   cambia el
High por  portb.0=1, low por  portb.0=0   claro setiando correctamente como entrada o salida el registro tris esto tiene su razón de ser por que al utilizar el high y el low obligas al compilador an que cada ves que se encuentra con estas instrucciones genere código para asegurarse que el tris corresponde con la instrucción que va a ejecutar.
Te reto a que  remplaces la instrucción button  por  if then  independiente mente de que si  optimizas o no te quedara mas claro que estas asiendo.
En la medida de lo posible reduce al máximo la instrucción goto   en esto de la programación no es bien vista, independiente mente de que existe un gran debate en el uso del mismo, las niñas bien no usamos muchos goto, es una mala palabra. :P
Y pues si no quiero a adelantar las golondrinas pero existe la posibilidad de que deje de estar entre ustedes :? :? :( así que  en lo posible intentare ayudar en lo que pueda  para retribuir de alguna manera todo lo que me andado. haaaaa me invade la nostalgia al recordar la primera ves que entre por aquí buscaba de forma desesperada algún otro modo de programar que no fuera asm por que nunca le entendí ni p… m……
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 31 de Julio de 2008, 20:35:00
nooooooooooooo mi madrina no me puede abandonar noooooooo



Y pues si no quiero a adelantar las golondrinas pero existe la posibilidad de que deje de estar entre ustedes :? :? :( así que  en lo posible intentare ayudar en lo que pueda  para retribuir de alguna manera todo lo que me andado. haaaaa me invade la nostalgia al recordar la primera ves que entre por aquí buscaba de forma desesperada algún otro modo de programar que no fuera asm por que nunca le entendí ni p… m……

Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 31 de Julio de 2008, 23:52:11

Y pues si no quiero a adelantar las golondrinas pero existe la posibilidad de que deje de estar entre ustedes :? :? :( así que  en lo posible intentare ayudar en lo que pueda  para retribuir de alguna manera todo lo que me andado. haaaaa me invade la nostalgia al recordar la primera ves que entre por aquí buscaba de forma desesperada algún otro modo de programar que no fuera asm

Guao Sandra, qué tristeza causa el que digas esas palabras...   :8}
Es un honor tenerte por acá! Saludos!  :P

Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 01 de Agosto de 2008, 13:15:59
Pues así es esto queridos amigos estoy analizando una desinteresada y amorosa propuesta matrimoniosa (desinteresada y amorosa aja si como no :x) aunque dicha propuesta resuelve mis muy numerosos problemas   también es cierto que la propuesta contiene una larga lista de condiciones :?.  como ven soy amada y aceptada incondicional mente como soy aja :x

Pero bueno eso es harina de otro costal código quiero ver código :-/ :-/ :-/ :-/
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 01 de Agosto de 2008, 21:07:46
f
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 01 de Agosto de 2008, 21:57:52
ummmmm no asi no se vale no le pidas permiso y sigue aqui en el foro luego te digo el truco  :D
pues bien a ver que le parece madrina:




'****************************************************************
'*  Name    : 7 pulsadores y 1 led                              *
'*  Date    : 28 de julio de 2008                               *
'*  Notes   :  Doppel 2008 - ejemplo para todopic               *
'*          :  www.todopic.net                                  *
'* modificacion: KARINA83  (CON CARIÑO PARA SANDRA)             *                     
'****************************************************************
       
 
'**********************definicion de variables*******************
 x var Byte  'variable del for
nveces var byte
'************** defino alias a los diferentes puertos/pines***************
Symbol boton1 = PORTB.0     'defino boton en el puerto PORTB.0
Symbol boton2 = PORTB.1
Symbol boton3 = PORTB.2       'le pongo alias a los puertos desde B0 hasta B3
Symbol boton4 = PORTB.3
Symbol boton5 = PORTB.4
Symbol boton6 = PORTB.5
Symbol boton7 = PORTB.6
Symbol led = PORTB.7      'defino LED en el puerto PORTB.7

'**********************definicion de puertos************************
TRISB = %01111111         'defino entrada de botones y todas salidas
PORTB = 0                 ' pongo el puerto a "0"
 
'*********************pongo las variables a "0"**********************
x=0        'inicio todas las variables en "0"


'*************************comienzo del programa********************
inicio:
     if boton1 = 1  then  uno
     if boton2 = 1  then  dos
     if boton3 = 1  then  tres
     if boton4 = 1  then  cuatro
     if boton5 = 1  then  cinco
     if boton6 = 1  then  seis
     if boton7 = 1  then  siete
      GoTo inicio                       ;1 GOTO
     
uno:     
      if boton1=1  then    ;1 destello
      nveces = 1
      gosub destellos
       ENDIF
       
     
dos:   
      if boton2=1  then    ;2 destellos
       nveces = 2
       gosub destellos
        ENDIF
       
tres:
      if boton3=1  then      ;3 destellos
      nveces = 3             
      gosub destellos
        ENDIF
cuatro:
      if boton4=1  then     ;4 destellos
      nveces = 4
      gosub destellos
        ENDIF
cinco:
      if boton5=1  then    ;5 destellos
      nveces = 5
      gosub destellos
        ENDIF
seis:
      if boton6=1  then    ;6 destellos
      nveces = 6
      gosub destellos
        ENDIF
siete:
      if boton7=1  then    ;7 destellos
      nveces = 7
      gosub destellos
        ENDIF                               
       
destellos:
     For x=1 To nveces         'enciendo nveces el led a 300ms
           led = 1
           pause 500
           led = 0
           pause 500
     Next
         X=0
       
                 
        GoTo inicio   'vuelvo a inicio    ;2 GOTO  Y SOLO 2 !!!!!
                 
End      'fin del programa





y solo 2 GOTO  estoy aprendiendo buenos modales?
y funciona
(y ya me prepare mis orejitas para los jalones :D :shock:)
y lo que tu decidas que sea para bien SANDRITA :8}
besos ,abrazos y agradecimientos bye. :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 03 de Agosto de 2008, 15:08:00
Bueno vamos por partes como diría el destripador el primer  goto lo puedes  cambiar por
La sentencia while wend, tan bien es un bucle  aunque puedes hacer maravillas con el , es una lastima que en el Basic para pic no este el do while wend pero bueno esa ya es otra historia.
El ultimo goto  elimínalo no tiene razón de ser, espero que me explique porque.
Cuando entras a la subrutina repites la condición que origino que llegara ahí esto esta mal almenos que quieras tener el dedo pegado al botton para que funcione. :D :D :D
Lo correcto es
If  portb.0= 1 then   gosub  parpadea 1 ves


Parpadea 1 vez:
Parpadeo=1
Gosub parpadeo

Aunque esto toda vía se puede simplificar no te complico mas.

Ahora  tal vez no me explique bien alo que yo me refería a que  cambiaras el button por el if es que crearas una rutina anti rrebote algo así

If portb.0= 1 then
Suma=suma+1
Delayms 10
While portb.0=1  ‘tiene que esperar a que deje de mandar rebotes o   sueltes el botón..
Delayms 10
Wend
endif

Con esto de que el foro se cae no da tiempo de mirar bien el ultimo goto cámbialo por retur  que es lo correcto regreso de subrutina

Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 03 de Agosto de 2008, 16:54:17
Haber aunque te desviaste de lo que originalmente estabas asiendo la corrección que pongo a continuación es bastante didáctica  aunque no e podido probarla mi grabador
Sufrió quemaduras de 3 grado y poner tantos botones en el proteus me da flojera
Debe de funcionar  si no funciona prometo que me caso




'**********************definicion de variables*******************
Device 16F84A
XTAL 4
 x var Byte  'variable del for
nveces var Byte
'************** defino alias a los diferentes puertos/pines***************
Symbol boton1 = PORTB.0     'defino boton en el puerto PORTB.0
Symbol boton2 = PORTB.1
Symbol boton3 = PORTB.2       'le pongo alias a los puertos desde B0 hasta B3
Symbol boton4 = PORTB.3
Symbol boton5 = PORTB.4
Symbol boton6 = PORTB.5
Symbol boton7 = PORTB.6
Symbol led = PORTB.7      'defino LED en el puerto PORTB.7

'**********************definicion de puertos************************
TRISB = %01111111         'defino entrada de botones y todas salidas
PORTB = 0                 ' pongo el puerto a "0"
 
'*********************pongo las variables a "0"**********************
x=0        'inicio todas las variables en "0"


'*************************comienzo del programa********************
While  1=1
     If boton1 = 1  Then 
     nveces=1
     GoSub destellos
     EndIf
     If boton2 = 1  Then 
     nveces=2
     GoSub destellos
     EndIf
     If boton3 = 1  Then
     nveces=3
     GoSub destellos
     EndIf
     If boton4 = 1  Then
     nveces=4
     GoSub destellos
     EndIf
     If boton5 = 1  Then 
     nveces=5
     GoSub destellos
     EndIf
     If boton6 = 1  Then 
     nveces=6
     GoSub destellos
     EndIf
     If boton7 = 1  Then
     nveces=7
     GoSub destellos
     EndIf
 Wend                      ;1 GOTO
     
'uno:     
      'if boton1=1  then    ;1 destello
      'nveces = 1
      'gosub destellos
       'ENDIF
       
     
'dos:   
      'if boton2=1  then    ;2 destellos
       'nveces = 2
       'gosub destellos
        'ENDIF
       
'tres:
      'if boton3=1  then      ;3 destellos
      'nveces = 3             
      'gosub destellos
        'ENDIF
'cuatro:
      'if boton4=1  then     ;4 destellos
      'nveces = 4
      'gosub destellos
       ' ENDIF
'cinco:
      'if boton5=1  then    ;5 destellos
      'nveces = 5
      'gosub destellos
        'ENDIF
'seis:
      'if boton6=1  then    ;6 destellos
      'nveces = 6
      'gosub destellos
        'ENDIF
'siete:
      'if boton7=1  then    ;7 destellos
      'nveces = 7
      'gosub destellos
        'ENDIF                               
       
destellos:
     For x=1 To nveces         'enciendo nveces el led a 300ms
           led = 1
           pause 500
           led = 0
           pause 500
     Next
         X=0
       
                 
        Return
                 
End      'fin del programa

Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 04 de Agosto de 2008, 14:07:27
haaaaaaaaa si funciona perfectamente :8} pero................
NO NOS DEJEEESSSSSS por fa si?
no importa que me jales las orejotas  :D
MADRINA no te vallasssssss
MUCHACHAS Y MUCHACHOS  de este foro necesito su ayuda para que sandra no nos deje
que se quede , que se quede,que se quede.  :-/  :-/  :-/
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 04 de Agosto de 2008, 14:36:47
Chin  :shock: no contaba con que funcionara   :lol: :lol: :lol: por que no lo pude probar  :mrgreen:

Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 04 de Agosto de 2008, 15:28:47
buenas tardes madrinita como puedo decirle al programa que:
si portb.1=0 , portb.2=0 y portb.0=1 ; nveces sea =  15 (por decir algo)
es que se me esta ocurriendo que nveces se pueda programar mediante dipswichts con 2 RB´s (se podria  nveces = 1 a 32 ?)
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 04 de Agosto de 2008, 15:36:38
Bueno estuve de un viajecito y por eso no había vuelto... me alegra ver todos sus post! Karina, felicitaciones! Estás progresando muchísimo!
Y como siempre Sandrita, excelente trabajo! Qué alegría sigas lado a lado con el foro!  :-/  :-/  :-/

Me veo tentado a dar un comentario sobre lo que pregunta Karina, pero creo que ella prefiere tu ayuda sandrita... así que, Karina, te dejo en las mejores manos.  :)

Pero seguiré el hilo a ver qué tal se desarrolla todo... ok un cordial saludo!  :P
Nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 04 de Agosto de 2008, 15:59:08
Anda  hijo mió no nos dejes solas que mira que yo no me las se todas  :?dos cabezas piensan mejor que una y tres  aun mejor asin que a participar que este  hilo no es exclusivo de  nadie. :-/ :-/
Hay   esta niña me mete en cada lió  :shock: déjame pensar conectando neuronas haaaa ya  ta
La mejor solución es que conectes los  dipswichts   a un puerto de 8 bits por ejemplo el portb
Así le puedes dar un valor desde 0 hasta 255 milisegundos.
Aquí si ya estas entrando a lo bueno
Te  pongo el tip

Portb=nveces ‘ aquí le estas diciendo que lea el portb y lo que tenga lo ponga en  nveces si el dip esta a             
                       Todos a uno nveces  tendrá 255
De la otra forma no es factible aunque con el if también se pueden ase cositas estudia esto
If portb.0 =0 and portb.1=1 then
Bla
Bla
Endif

If portb.0=0 or portb.1=1 then
Bla
Bla
endif

nota:   Tendrás que probar pero creo que lo correcto es nveces =portb además que tendrás que tener cuidado por que una cosa es que lea los dip al arranque del programa y otra muy distinta que quieras poder cambiar el valor de los dip durante la ejecución del programa


Otra nota  esta niña me trae mareada :lol: :lol:  también si no quieres ocupar todo el puerto con los dip puedes leer únicamente la parte baja del puerto conectando los dip de rb0 a rb3 y lo lees así
Nveces=portb.lowbyte ‘ con esto le dices que te lea la parte baja


Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 04 de Agosto de 2008, 18:52:40
Gracias Sandrita, pues entonces por acá estaré en lo que pueda ayudar... aunque no creo que sea mucho en comparación con vos que ya tienes más experticia con esto de los micros... pero estoy para servir...
A ver qué responde Kari de lo que le has explicado excelentemente.
Saludos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 04 de Agosto de 2008, 20:28:31
perdon por dirigirme solamente a mi madrina SANDRITA perdon,perdon.
quien quiera dar su opinion es totalmente bienvenida (asi tengo mas tela de donde cortar).
adelante TODAS Y TODOS enpapenme TODOS con sus conocimientos por favoooooorrrrrrr.
gracias :g)



**********************definicion de variables*******************
 x var Byte  'variable del for
 nveces var byte
 
buffer_boton1 var Byte  ' buffer usado por el boton



 
'************** defino alias a los diferentes puertos/pines***************
Symbol boton1 = PORTB.0     'boton1 es mi unico pulsador
symbol RB1 = PORTB.1       
symbol RB2 = PORTB.2      'BR1,RB2 Y RB3 son mis 3 dip sw
symbol RB3 = PORTB.3
 
Symbol led = PORTB.7      'defino LED en el puerto PORTB.7
 
'**********************definicion de puertos************************
TRISB = %00001111         'defino entrada de botones y todas salidas
PORTB = 0                 ' pongo el puerto a "0"
 
'*********************pongo las variables a "0"**********************
x=0        'inicio todas las variables en "0"


'*************************comienzo del programa********************

       
inicio:
       pause 10
     
       Button  boton1,1,40,5,buffer_boton1,1,sw   
       GoTo inicio
sw:
    WHILE 1=1
     if  RB1=0 and RB2=0 and RB3=0 and boton1=1 then   
       nveces=1
       gosub titilar
       endif
     if  RB1=0 and RB2=0 and RB3=1 and boton1=1 then   
       nveces=2
       gosub titilar
       endif
     if  RB1=0 and RB2=1 and RB3=0 and boton1=1 then   
       nveces=3
       gosub titilar
       endif
      if  RB1=0 and RB2=1 and RB3=1 and boton1=1 then   
       nveces=4
       gosub titilar
       endif
      if  RB1=1 and RB2=0 and RB3=1 and boton1=1 then   
       nveces=5
       gosub titilar
       endif
      if  RB1=1 and RB2=0 and RB3=1 and boton1=1 then   
       nveces=6
       gosub titilar
       endif
      if  RB1=1 and RB2=1 and RB3=0 and boton1=1 then   
       nveces=7
       gosub titilar
       endif
      if  RB1=1 and RB2=1 and RB3=1 and boton1=1 then   
       nveces=8
       gosub titilar
       endif
       WEND
         
             
 
titilar:
     For x=1 To nveces        'enciendo  nveces el led
           led = 1
           pause 500
           led = 0
           pause 500
           Next
           x=0
           
           goto inicio   'si dejo este goto no es nesesario apagar y encender
                         'todo el dispositivo cuando cambie los dip sw de posicion,
                         ' si lo quito tendria que apagar el circuito y volver
                         ' a encenderlo para que el cambio de los dip sw surtan efecto
End     




listas mis orejotas grandotas y coloradas para mas jalones
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 04 de Agosto de 2008, 21:06:37
Buen trabajo Kari, felicitaciones!
Seguidamente algunas observaciones:

1- Esta parte del código:

titilar:
     For x=1 To nveces        'enciendo  nveces el led
           led = 1
           pause 500
           led = 0
           pause 500
           Next
           x=0
          
           goto inicio   'si dejo este goto no es nesesario apagar y encender
                         'todo el dispositivo cuando cambie los dip sw de posicion,
                         ' si lo quito tendria que apagar el circuito y volver
                         ' a encenderlo para que el cambio de los dip sw surtan efecto
End     

Ya esto te lo había mencionado sandrita anteriormente, ese "goto inicio" no debería ir allí. Te explico a continuación.
"Titilar" es una subrutina que se ejecuta y luego al final deberías añadir un "return", para que vuelva al sitio del programa de donde fue llamada. Esto porque estás usando -correctamente- el "gosub titilar". O sea, se espera que entre en titilar y salga, así que si colocas el return, el "goto inicio" nunca se ejecutará. Entonces quedaría así:
Código: FreeBasic
  1. titilar:
  2.      For x=1 To nveces        'enciendo  nveces el led
  3.            led = 1
  4.            pause 500
  5.            led = 0
  6.            pause 500
  7.            Next
  8.            x=0
  9.      return
Ahora bien, aquí hay una acotación importante que debe hacerse. El verdadero ciclo infinito que ejecutará el micro, es este:

Código: FreeBasic
  1. inicio:
  2.        pause 10
  3.      
  4.        Button  boton1,1,40,5,buffer_boton1,1,sw  
  5.        GoTo inicio

El detalle es que cuando "Button" detecta que se presiona el pulsador, salta a "sw", y esto es un salto incondicional, no una llamada a subrutina como en el caso de "titilar". Entonces el "goto inicio" debería ir al final de "sw". Así:

Código: FreeBasic
  1. inicio:
  2.        pause 10
  3.      
  4.        Button  boton1,1,40,5,buffer_boton1,1,sw  
  5.        GoTo inicio
  6. sw:
  7.     'WHILE 1=1
  8.      if  RB1=0 and RB2=0 and RB3=0 and boton1=1 then  
  9.        nveces=1
  10.        gosub titilar
  11.        endif
  12.      if  RB1=0 and RB2=0 and RB3=1 and boton1=1 then  
  13.        nveces=2
  14.        gosub titilar
  15.        endif
  16.      if  RB1=0 and RB2=1 and RB3=0 and boton1=1 then  
  17.        nveces=3
  18.        gosub titilar
  19.        endif
  20.       if  RB1=0 and RB2=1 and RB3=1 and boton1=1 then  
  21.        nveces=4
  22.        gosub titilar
  23.        endif
  24.       if  RB1=1 and RB2=0 and RB3=1 and boton1=1 then  
  25.        nveces=5
  26.        gosub titilar
  27.        endif
  28.       if  RB1=1 and RB2=0 and RB3=1 and boton1=1 then  
  29.        nveces=6
  30.        gosub titilar
  31.        endif
  32.       if  RB1=1 and RB2=1 and RB3=0 and boton1=1 then  
  33.        nveces=7
  34.        gosub titilar
  35.        endif
  36.       if  RB1=1 and RB2=1 and RB3=1 and boton1=1 then  
  37.        nveces=8
  38.        gosub titilar
  39.        endif
  40.        goto inicio       '<<<< Aquí
  41.        'WEND
De esta forma, en caso que se detecta que es presionó el pulsador, salta a "sw" y vuelve al ciclo infinito original.

2- Fíjate que en el código anterior he comentado el "WHILE 1=1". Me parece que no debería ir allí, pues ese código no es un ciclo infinito, se ejecuta una sola vez para monitorear el estado de los switchs. Si quieres implementar lo que te mencionó sandrita al principio, de cambiar goto por ciclos, puedes implementarlo en el ciclo inicial del programa, aquí:
 
Código: FreeBasic
  1. inicio:
  2.        while 1=1
  3.            pause 10
  4.            Button  boton1,1,40,5,buffer_boton1,1,sw  
  5.        wend
De esa forma puedes evitarte un goto. Esperaré el comentario de sandrita, ella tiene más experiencia con el basic, yo no estoy seguro de si esa forma de usar el while es correcta, aunque la lógica parece indicar que sí. Ultimamente trabajo en C y se usa "while(1)" pero ya eso es otra cosa.

3- Los if con tantas operaciones lógicas AND te hacen el programa muy ineficiente y poco óptimo. Yo aconsejaría que leas el puerto y lo guardes en una variable, luego a esa variable le apliques una máscara para evaluar sólo los bits que te interesan... en tu caso estás usando RB1, RB2, RB3... entonces podrías hacer algo así como:
Código: FreeBasic
  1. valor_puerto=portb
  2. valor_puerto=valor_puerto+%11110001 ' guardas el valor de los tres bits que te interesan, lo demás será 1.
  3.                                                      ' estas dos líneas las colocarías al inicio de "sw", antes de los if.
  4.  
  5. if(valor_puerto=%11110011) then         ' aquí por ej. estoy evaluando si RB1=1
  6. '
  7. 'codigo
  8. '
  9. endif

4- En todos los if de la rutina "sw" tienes la evaluación boton1=1, lo cual también es repetir código innecesariamente.
Creo que es mejor colocar esa evaluación en un if macro que anide al resto de las evaluaciones para los switchs.
Algo así:
Código: FreeBasic
  1. sw:
  2. if(boton1=1)then
  3. '
  4. '
  5. '
  6. 'todas las evaluaciones de los switchs
  7. '
  8. '
  9. '
  10. '
  11. endif
  12. goto inicio

Creo que esos son todas mis observaciones. Disculpen lo largo, pero quise ser lo más claro posible.
Un cordial saludo a todos!
Nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 05 de Agosto de 2008, 13:30:09
firepic Me quito el sombrero magistral explicación te as tirado las musas de la programación te han inspirado. :-/ :-)
Karina  mal muy  muy  mal  :x :x hay que  replantear todo el programa  :?
La forma correcta es leyendo un puerto del pic  un puerto del pic es un registro de 8 bits por tanto  podemos leer o escribir en el .
Para que me entiendas tómalo como si fuera un contador binario de 8 bits (ojo no lo es pero para que se entienda vale) si  yo pongo como entrada el portb  y luego pongo el bit 0 asea ra0 a 1 y luego leo el portb  que tengo  00000001 asea un 1 en decimal
00000001=1
00000010=2
00000011=3
Se entiende
Lo de los  and y or solo  fue para que supieras que se pueden estructurar condiciones más complejas que en algunos casos funcionan bien por ejemplo cuando programas una alarma.
Pero en este caso no es el camino.
Ahora este hilo esta abierto a todo el que quiera participar lo comencé con mucho cariño para mi paisana por que no quiero que sufra lo mismo que yo  cuando comencé  pero
También sabía que muchos como ella que  recién comienzan   entrarian a leer los poco o mucho  que podamos aportar y no me equivoque llevamos 500 visitas :-/ :-/ :-/ :-/


Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 05 de Agosto de 2008, 17:16:30
Andá sandrita, no creo que merezca tanto  :oops:
Pero gracias, me animas mucho!  :P
Bueno a ver qué dice Kari sobre los últimos comentarios... ya seguro que reestructura el programa y nos viene con algo bueno.
Ok saludos, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 06 de Agosto de 2008, 22:38:33
 :z)estoy quedando loquita  :z) massss?
les juro que leo y leo y como que no carburo
asi es como me quedo y funciona bien.
ayyyy mis orejitas estan listas ( para uno buenos jalones)



 '**********************definicion de variables*******************
 x var Byte  'variable del for
 nveces var byte
 
buffer_boton1 var Byte  ' buffer usado por el boton




'************** defino alias a los diferentes puertos/pines***************
symbol boton1 = portb.0
SYMBOL RB = PORTB



Symbol led = PORTB.7      'defino LED en el puerto PORTB.7
 
'**********************definicion de puertos************************
TRISB = %01111111         
PORTB = 0                 ' pongo el puerto a "0"

'*********************pongo las variables a "0"**********************
x=0        'inicio todas las variables en "0"

'*************************comienzo del programa********************

       
inicio:
       while 1=1
       pause 10
       Button  boton1,1,40,5,buffer_boton1,1,sw1   
       wend
 
sw1:
 
     if RB=%01110001 then   
       nveces=1
       gosub titilar
       endif
     if RB=%01110011 then   
       nveces=2
       gosub titilar
       endif
     if RB = %01110101 then   
       nveces=3
       gosub titilar
       endif
     if RB = %01110111 then 
       nveces=4
       gosub titilar
       endif
     if RB = %01111001 then   
       nveces=5
       gosub titilar
       endif
     if RB = %01111011 then   
       nveces=6
       gosub titilar
       endif
     if RB = %01111101 then     
       nveces=7
       gosub titilar
       endif
     if RB = %01111111 then   
       nveces=8
       gosub titilar
       endif
       goto inicio
         
             
 
titilar:
     For x=1 To nveces        'enciendo  nveces el led
           led = 1
           pause 500
           led = 0
           pause 500
           Next
           x=0
          return     
End     




y si efectivamente asi se ahorra mas de la mitad de espacio
abrazos y besos bye
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 06 de Agosto de 2008, 23:22:13
Tranquila esto es como en  las películas hay que abrir la mente  vas captando la idea pero de todos modos esta mal te pongo un ejemplo con la simulación en proteus para que entiendas lo que tratamos de explicarte.
Mi compu le cambio el nombre a los archivos  .hex  así que hay que buscarlo en los que dicen archivos de c
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 07 de Agosto de 2008, 21:45:05


huyyyyyy ahora si me perdi  :z)
ese codigo esta en pbp?
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 08 de Agosto de 2008, 13:16:37
Hola  antes de que se tire el foro dejo un ejemplo en proteus donde queda muy claro como  se resuelve  el uso de un registro de 8 bits (puerto) para incrementar o decrementar la variable nveces.
Al arranque  a través de una Terminal serial el programa te pide que por medio del dip
Conectado a portb selecciones el número de veces que ha de encender el led conectado a porta.1 de 0 hasta 255 y después presiones el botón conectado a porta.0 para que ejecute dicho numero de repeticiones y al terminar comienza de nuevo.
Si con esto no te queda claro cásate y ten muchos hijos :D :D :D :D :D :D
 
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 08 de Agosto de 2008, 13:28:26


huyyyyyy ahora si me perdi  :z)
ese codigo esta en pbp?


Si mujer esta en Basic  es  una versión  que se llama protón  es mejor por eso es muchos que comenzamos con el pbp  migramos a el aunque tengo que decir que yo solo lo utilice un par de veces.
Abra algunas líneas que por ahora no entiendas, básicamente lo que me interesa es que veas la simulación en proteus con eso estoy segura que te queda todo aclarado si no lo tienes bájate la versión demo de la pagina oficial lo que no se es si te permite simular  con microcontroladores.
Aquí vas a demostrar las ganas que tengas la cosa es que tienes que ver en operación el programita.

Las únicas líneas que no vas a entender son las de  la transmisión serial y unas líneas
Que  conectan las pull up internas del portb, y otra que deshabilita los puertos analógicos  que para ti no son  relevantes de momento  todo lo demás es igual a lo que as estado manejando.
Ojo yo estoy utilizando un pic 16f877a

Talvez te saque de onda  esto estúdialo creo que tan bien se puede hacer en pbp es una forma mas compleja del if i toda vía hay otras dos  querías aprender pues órale
No me gustan las niñas chillonas :P :P :P

If  condicion then
Bla
Bla
Bla
Else
Bla
Bla
Bla
endif


Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 09 de Agosto de 2008, 16:02:54
Onta  la nena  onta  :D :D :D :D
Anda karina no te me desinfles que ni siquiera as comenzado  :-/ :-/ :-/
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 11 de Agosto de 2008, 14:03:57
aqui toy  :D hola sandrita pues aqui estoy echa un nudo,el ejemplo en proteus lo entiemdo bien se que el valor de nveces es igual
al valor que le des a los 8 dip (en binario) es decir: 00000011=nveces= 3
pero el codigo no lo endiendoooooo    :8}  :8}
ya busque como seria en pbp y lo unico que segun yo pude canbiar es esto:


'device 16f877a
'xtal 20
OPTION_REG = 126             'portb_pullups=on
hserial_baud=9600              'no se deja compilar
hserial_rcsta=%10010000    'no se deja compilar
hserial_txsta=%00100000    'no se deja compilar
hserial_clear=on                 'no se deja compilar
nveces var byte
trisb=%11111111 'entradas
portb=%00000000 'borrar puerto

main:
nveces=portb
hrsout "nveces=" ,dec nveces,13,0     'no se deja compilar
pause 500
goto main



ahora lo mejor seria migrar a proton pero no quiero hasta que entienda mas o menos el pbp
ustedes que opinan?
y fuera de todo esto  (esta linea esta en proton:      PORTB = LookUp(0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0e), i 
mi pregunta es como seria en pbp? es que mi hermanito quiere un dado con leds  y esta es la unica linea que no puedo compilar)

abrazos y besos  :g)  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 11 de Agosto de 2008, 14:48:31
Qué tal Kari!
En mi humilde opinión, estoy de acuerdo contigo en que no pases al protón hasta que entiendas bien el pbp. Cuando entiendas bien el pbp, la transición será super sencilla, no sólo al protón, sino a cualquier otro compilador de Basic.
Sobre la instrucción HSEROUT del Pic Basic Pro, aquí tienes algo que te puede ayudar, del manual:

(http://img152.imageshack.us/img152/7226/pbphseroutop3.png)

Como ves, simplemente tienes que añadir algunos "defines" en lugar de las instrucciones hserial_baud, hserial_rcsta del protón. Y por supuesto, recuerda ver la datasheet del micro para asegurarte que estás usando el pin correcto correspondiente a Tx en el micro, porque la instrucción HSEROUT trabaja con el hard del micro para interfaz serial, a diferencia de la instrucción SEROUT que genera el software necesario para hacer posible la interfaz, a través de cualquiera de los pines de E/S.

En cuanto a la instrucción Lookup, aquí tienes lo que dice el manual:

(http://img516.imageshack.us/img516/3681/lookuppbpne2.png)

Así que te falta en la sintaxis asignar la variable que servirá de "puntero" a la tabla (el "Index"). Por otro lado, los valores en la tabla deben ir entre corchetes, aunque no he probado si funciona también con paréntesis.

Recuerda siempre consultar los manuales, es allí donde encontraremos la información más confiable y precisa. Y no te me desanimes, ya te falta poquito! Verás que en un tiempito más le agarras el golpe a la cosa!
Te sigo deseando mucho éxito!
Un cordial saludo!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 11 de Agosto de 2008, 14:50:34
Esa línea que marcas es exactamente igual en pbp, la instrucción  LookUp es  valida  para pbp y protón así que no deberías tener ningún problema si no te compila es por que estas  cometiendo algún error  que puede estar en cual quier parte de tu codigo que te marque error ahí no necesariamente significa que el error este en esa linea.
Yo sincera mente te recomiendo que te cambies al protón no le veo mucho caso que sigas con el pbp así
También podrás seguir mejor la ayuda que te demos.como te expuse en un mensaje anterior yo no utilice el pbp por lo que me cuesta explicarte como resolver las cosas en pbp. Puedo leer tus ejemplos y ver donde estas metiendo la pata pero  me cuesta  resolverlos  por que ya estoy acostumbrada a pensar en protón  no se si me explico.
Así que mejor dedícale tiempo a leer el manual del protón  es muy similar al pbp así que lo que as aprendido no lo vas a tirar a la basura.
Por lo que miro en este punto ya te  atoraste  así que   déjame ver si  encuentro un tiempo libre para corregir tu último ejercicio.

Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 11 de Agosto de 2008, 14:56:49
Qué tal Kari!
En mi humilde opinión, estoy de acuerdo contigo en que no pases al protón hasta que entiendas bien el pbp. Cuando entiendas bien el pbp, la transición será super sencilla, no sólo al protón, sino a cualquier otro compilador de Basic.



Anda que hay que ponernos de acuerdo por que estamos confundiendo a la niña  :D :D :D :D :D

Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 11 de Agosto de 2008, 15:00:16
Qué tal Kari!
En mi humilde opinión, estoy de acuerdo contigo en que no pases al protón hasta que entiendas bien el pbp. Cuando entiendas bien el pbp, la transición será super sencilla, no sólo al protón, sino a cualquier otro compilador de Basic.

Anda que hay que ponernos de acuerdo por que estamos confundiendo a la niña  :D :D :D :D :D
:D  :D  :D
Tienes razón, iba a escribir cuando ví tu último post. Y sí, pues al ver tu mensaje he cambiado de opinión. No tiene sentido que la chica siga atorada en el pbp si de una vez puede pasarse al protón, que es mucho más poderoso. La transición no le costará mucho, ella está a penas comenzando así que tiene la mente bien fresquita para nuevos conocimientos. Andale Kari, a entrarle al protón!  :-/
Un cordial saludo, Kari y Sandrita!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 11 de Agosto de 2008, 19:34:36
que me recomiendan, cual se puede usar con microcode studio plus
bye  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 11 de Agosto de 2008, 22:06:23
ummm pues parece que el microcode studio plus solo sirve para pic basic y pic basic pro
Proton PICBASIC Development Suite se ve que es muy parecido al microcode
pero alguien sabe como o donde comprarlo en mexico comprarlo en mexico?
el mikrobasic hace lo mismo?
ustedes cual usan?
cual me recomiendan?
bye.
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 11 de Agosto de 2008, 22:45:01
Bueno yo no he trabajado con el protón, allí la experta es sandrita. En Basic el que más usé fue el PBP, eso antes de cambiarme al C. Ya que Sandrita es tu paisana, pues te podría asesorar mejor con lo de dónde comprar el soft y todo eso.

Ahora bien, el mikroBasic también es muy buen software, tan poderoso como el protón. Soporta punto flotante, interrupciones y demás. Y me encanta la interfaz, es bastante amigable. También incluye librerías para manejo de LCD, RS232 y demás hard de uso común, al igual que el pbp y el protón. La versión gratuita del mikroBasic es mucho más generosa que la del protón (la del protón te deja trabajar con sólo 4 o 5 micros, muy limitada)... la única limitación es que el programa no sea mayor a 2K, y creo que en tus primeros pasos eso te puede servir. Yo tengo instalada esa versión y le he dado una medio miradita y compilado algunos programas, y se ve excelente.

Yo actualmente ya casi no uso basic, uso C. En ciertas cosas más avanzadas con las que trabajo es una herramienta poderosísima.

Te aconsejo que sigas con el basic, que me parece se ajusta perfectamente a tus necesidades. En cuanto a si decidirte por el protón o el mikrobasic, pues te he dado alguna información que espero pueda ayudarte. Aunque ojalá se aparezca sandrita y te de una mejor ayuda.

Un cordial saludo Karinita, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 12 de Agosto de 2008, 14:10:44
Así es el microcode solo sirve para pbp  en protón no es necesario ya que el editor viene integrado.
El mikro basic  alguna  ves estuve tentada a utilizarlo tiene una  interfase muy llamativa
Pero al investigar  resulta que  tiene muchos bugs  por lo que no es muy confiable así que no te lo recomiendo.
No te apresures en comprar algo que no sabes  si te va a venir bien con la versión demo por ahora es suficiente.

Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 12 de Agosto de 2008, 14:11:41
Bueno esta es la corrección al ejercicio  según yo debería funcionar  dedícale tiempo para que entiendas en que estas mal  estas obligando al micro a  realizar procesos  similares  sin ningún sentido o fin practico.
Ojo  hay algunos cambios en en las conexiones de los puertos
E detectado cual es tu problema y es que no entiendes como funciona internamente un microcontrolador  hay que estudiar   como funciona un micro internamente (, puertos, registros  ets.) y al mismo tiempo el compilador uno va de la mano con el otro si te dedicas únicamente al compilador no la vas a hacer.
 Si de verdad te interesa dominar la programación de microcontroladores deja de pensar en el mejor amigó de tu novio y ponte a estudiar.
Este es un camino largo donde la mayor virtud es la paciencia es como mi gran master
 Me decía “Sandra un microcontrolador es como un niño de 3 años al que le tienes que decir que tiene que hacer”.   Un  algoritmo es tan tonto o inteligente como quien lo programa, no hay algoritmos malos solo malos programadores.




**********************definicion de variables*******************
 x var Byte  'variable del for
 nveces var Byte
 
buffer_boton1 var Byte  ' buffer usado por el boton



 
'************** defino alias a los diferentes puertos/pines***************
'Symbol boton1 = PORTB.0     'boton1 es mi unico pulsador
'symbol RB1 = PORTB.1       
'symbol RB2 = PORTB.2      'BR1,RB2 Y RB3 son mis 3 dip sw
'symbol RB3 = PORTB.3
Symbol boton1 = PORTB.4
Symbol led = PORTB.7      'defino LED en el puerto PORTB.7
 
'**********************definicion de puertos************************
TRISB = %00001111         'defino entrada de botones y todas salidas
PORTB = 0                 ' pongo el puerto a "0"
 
'*********************pongo las variables a "0"**********************
x=0        'inicio todas las variables en "0"


'*************************comienzo del programa********************

       
inicio:
       'pause 10
     
       Button  boton1,1,40,5,buffer_boton1,1,sw   
       GoTo inicio
sw:
    'WHILE 1=1
    nveces = PORTB.LowByte 'Nveces es igual ala parte baja del portb  rb0 a rb3 o en  binario de 0000 a 1111
     'if  RB1=0 and RB2=0 and RB3=0 and boton1=1 then   
      ' nveces=1
       'gosub titilar
        For x=1 To nveces        'enciendo  nveces el led
           led = 1
           pause 500
           led = 0
           pause 500
           Next
           x=0
       GoTo inicio
       End
       'endif
     'if  RB1=0 and RB2=0 and RB3=1 and boton1=1 then   
       'nveces=2
       'gosub titilar
       'endif
     'if  RB1=0 and RB2=1 and RB3=0 and boton1=1 then   
       'nveces=3
       'gosub titilar
       'endif
      'if  RB1=0 and RB2=1 and RB3=1 and boton1=1 then   
       'nveces=4
       'gosub titilar
       'endif
      'if  RB1=1 and RB2=0 and RB3=1 and boton1=1 then   
       'nveces=5
       'gosub titilar
       'endif
      'if  RB1=1 and RB2=0 and RB3=1 and boton1=1 then   
       'nveces=6
       'gosub titilar
       'endif
      'if  RB1=1 and RB2=1 and RB3=0 and boton1=1 then   
       nveces=7
       'gosub titilar
       'endif
      'if  RB1=1 and RB2=1 and RB3=1 and boton1=1 then   
       'nveces=8
       'gosub titilar
       'endif
       'WEND
         
             
 
'titilar:
     'For x=1 To nveces        'enciendo  nveces el led
           'led = 1
           'pause 500
           'led = 0
           'pause 500
           'Next
           'x=0
           'RETURN
          ' goto inicio   'si dejo este goto no es nesesario apagar y encender
                         'todo el dispositivo cuando cambie los dip sw de posicion,
                         ' si lo quito tendria que apagar el circuito y volver
                         ' a encenderlo para que el cambio de los dip sw surtan efecto
'End     




 
 


Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 12 de Agosto de 2008, 22:27:49
hola tardes madrina,buenas tardes firepic buenas tardes atodos  :-/  asi es como funciona bien por que el ejemplo que tu me pusiste sandrita no trabaja bien(plan con maña verdad?) se confunde el portb .
aver que les parece en PROTON y adjunto el archivo para proteus


'***********************************************************
 Device = 16F84A
 XTAL = 4
      
'**********************definicion de variables*******************
Dim x As Byte  'variable del for
Dim nveces As  Byte
 
Dim buffer_boton1 As Byte  ' buffer usado por el boton

 

 
'************** defino alias a los diferentes puertos/pines***************

Symbol boton1 = PORTA.0
Symbol led = PORTA.1     'defino LED en el puerto PORTB.7
 
'**********************definicion de puertos************************
TRISA = %00000001
PORTA =0
TRISB = %11111111         'defino entrada de botones y todas salidas
PORTB = 0                 ' pongo el puerto a "0"
 
'*********************pongo las variables a "0"**********************
x=0        'inicio todas las variables en "0"


'*************************comienzo del programa********************

       
inicio:
       'DelayMS 10
     
       Button  boton1,1,40,5,buffer_boton1,1,sw   
       GoTo inicio
sw:
   
    nveces = PORTB  'Nveces es igual ala parte baja del portb  rb0 a rb3 o en  binario de 0000 a 1111
   
        For x=0 To nveces        'enciendo  nveces el led
           led = 1
           pause 500
           led = 0
           pause 500
           Next
           x=0
       GoTo inicio
       End

y no los voy a defraudar les prometo seguir leyendo y lendo y leyendo.......

saludos y besos  :g)


Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 13 de Agosto de 2008, 16:14:22
Hola  mi pequeña flor de  senpasuchilt pues por fin as comprendido huffffff ya puedo descansar en paz  por poco pensé en meterte el manual por las orejotas. :x :x
Pues lo de plan con maña la verdad es que no, debería funcionar así  :shock:
Nveces= portb.lowbyte  la idea de hacerlo así es que se puedan usar  la parte alta del portb  (rb4……rb7) para otra cosa e incluso como salidas.
Ya que asiéndolo así nveces=portb  todo el puerto b esta dedicado exclusivamente   a leer (todo el puerto de ve ser como entradas) y si se te ocurre conectar otros botones al resto del puerto ( RB4…….RB7) para otra función que no sea incrementar o decrementar  la variable nveces tendrías lecturas equivocadas y como principiante no sabrías por donde viene la falla.
Así que ojo como lo tienes ahora   nveces=portb  estas leyendo todo el puerto completo
Parte baja (rb0….rb3) y parte alta ( rb4….rb7) aunque no estés tomando en cuenta la parte  alta .como te digo no e mirado la simulación y no se si tienes 4  u 8 dip en port b
Pero de todos modos vale la explicación para que te quede mas claro.
Boy a revisar  en donde esta mi error.
No cave duda que al mejor cazador se le va la liebre.
Así es a leer a leer y al leer    no hay de otra.
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 13 de Agosto de 2008, 16:54:34
Saludos!
Felicitaciones Kari, estás progresando mucho!  :-/

Este es un camino largo donde la mayor virtud es la paciencia es como mi gran master
 Me decía “Sandra un microcontrolador es como un niño de 3 años al que le tienes que decir que tiene que hacer”.   Un  algoritmo es tan tonto o inteligente como quien lo programa, no hay algoritmos malos solo malos programadores.


Sandrita, palabras sabias son las que has dicho. Estoy en todo de acuerdo contigo.
Por cierto, no sabía que microBasic tenía muchos bugs, no lo volveré a recomendar entonces. En realidad, como mencioné, no lo he usado casi... solo una miradita.

Kari, ya casi lo tienes... sigue estudiando y te harás tan experta como sandrita!
Ok se les aprecia, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 13 de Agosto de 2008, 23:50:01
Pues bien karina revisando tu programa resulta que esta mal :mrgreen:, a si señorita  resulta que  el led  destella una ves mas que el valor indicado en la variable nveces  o sea que si a nveces le doy el valor de 1 el led destella 2 veces, si le doy el valor a nveces de 2 el led destella 3 veces así que checa el bucle del for que es donde esta el error.

Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 14 de Agosto de 2008, 13:48:30
hola madrina.hola a TODAS Y TODOS  :-/
asi es es madrina es que asi aprobecho todos los bits
si el dip es = 00000000 = 1 y no 0
si el dip es = 11111111 = 256 y no 255  :D
estuve buscando por la red algo acerca de lowbyte y no encontre nada claro.
tambien estuve haciendo pruebas  dejando "portb.lowbyte" y solo "portb" y aparentemente es igual
solo se pueden usar como salidas deifiendo el puerto pero no como entradas  por que entonces los toma como si fueran dipswitch
deja sigo buscando como como partir en 2  o mas el portb para poder conmutar 2  o mas variables diferentes
y otra pregunta cuantos ms es el maximo permitido para delayms?
por que ustedes ya me enseñaron como hacer un timer programable  :-/  con dip switch
con el mismo ejemplo solo cambiando esto:


For x=0 To nveces        'enciendo  nveces el led
           led = 1 
           delayms 10000  ' 10 segundos * nveces hasta  42.666 minutos
           led = 0
           'delayms  500     'quito esta linea y ya temgo timer
           Next
           x=0
       GoTo inicio
       End

si es permitido hacerlo asi? (de esto no espero una catedra como la que me ha dado solo unas cuanta lineas) por que abusando de su generosidad los voy a seguir molestando con todo lo demas de los fantasticos pic´s.
saludos y besos  :g)
PD: despues  les doy una sorpresa , agradable? desagradable? no se
bye.

Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 14 de Agosto de 2008, 14:19:32
Anda mujer a leer en el manual encuentras cual es el valor máximo para delayms 8)  creo recordar que puedes alcanzar tiempos considerablemente largos  pero si no te alcanza anidando rutinas con for puedes conseguir retardos de días meses años según lo que requieras.
Pero pero si  tu aplicación requiere tiempos muy exactos esta no es la técnica a seguir
Tendrás que emplear un rtc.
Anidando delays con el for en unas horas puedes tener retrasos incluso de minutos
Por lo cual no sugiero esta técnica
Respondiendo puntual mente a tu pregunta si es balido como lo tienes pero hay que pulirlo.
Sorpresa  :shock: mmmmmmm  ya se  estas embarazada :mrgreen:

Título: Re: interesante (proyecto con pic y led)
Publicado por: LordLafebre en 14 de Agosto de 2008, 14:28:03
Anda mujer a leer en el manual encuentras cual es el valor máximo para delayms 8)  creo recordar que puedes alcanzar tiempos considerablemente largos 

Hola:

Como te lo dice, a leer el manual, en este caso solo mira la ayuda, es más clara que el agua:

Citar
Syntax

DELAYMS Length
 
Overview

Delay execution for length x milliseconds (ms). Delays may be up to 65535ms (65.535 seconds) long.
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 14 de Agosto de 2008, 20:24:46
perdon,perdon no pense que seria identico que "pause" en pbp y acabo de  bajar el manual de proton+  :lol:   (meresco otro jalon de orejas)
 gracias LordLafebre varias veces pense que los dioses no se comunicaban con los mortales pero este post hecha por tierra mi teoria  :D  gracias espero no sea la unica vez que responda las plegarias de los mortales .
bye  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 14 de Agosto de 2008, 21:13:21
haaaa y por cierto no he encontrado nada al respecto de partir el port
ahora si bye.  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: LordLafebre en 14 de Agosto de 2008, 21:17:25
Hola:

Pero bien puedes utilizar bucles anidados como te lo recomienda Sandra, solo debes tener en cuenta el número de iteraciones y el tiempo que le asignes al comando Delayms, por ejemplo:

For i=0 to 9
    delayms 100
next i

ese bucle tiene 10 iteraciones, desde 0 hasta 9, en cada iteración hay unretardo de 100ms, como son 10 iteraciones, entonces 10*100=1000 ms

Así puedes lograr retardos de varios, varios segundos, horas, etc.
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 15 de Agosto de 2008, 18:16:23
Así es pequeña a veces los dioses tocan tierra y se mezclan entre los mortales 8) aun que hay algo que no sabes ellos todo lo miran todo lo escuchan están en todas partes :shock:
Bueno volviendo a nuestro asunto para que practiques por ahora esta bien  lo de anidar for  pero existe una mejor forma que es utilizando el taimer del pic en tu caso  el f84 tiene un único taimer que cuenta de 0 a 255 te suena??.
Y la mejor forma de hacerlo es con un rts pero para esto hay que manejar la comunicación serial y algún protocolo como i2c spi,
Pero por ahora olvídate de esto porque si pari gemelos para que me entendieras lo de port b
Con esto me matas.

Sorpresa sorpresa me encantan las sorpresas anda niña cuéntame ya que me matas
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 16 de Agosto de 2008, 15:39:24
Karina gracias a tu promoción las lecturas del hilo se está incrementando así que para estar a la altura  vas a tener que ponerte  a trabajar 8)

Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 19 de Agosto de 2008, 13:05:02
Este ejercicio súper básico demuestra como configurar un puerto como salida.
Este ejerció muestra por portb una cuenta ascendente en binario de 0 a 255
Al terminar portb.0 parpadea tres beses y continua con la cuenta de forma indefinida
Este ejercicio complementa los anteriores.
De esta manera se puede entender como configurar  el puerto b  como puerto de entrada o salida

Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 19 de Agosto de 2008, 17:05:15
hola madrina  :-/ quiero decirle que soy del estado de jalisco pero desde muy peque nos venimos al d.f
estudios de electronica como tal no tengo solo termine la prepa lo poco que se se lo debo ami padre (q.p.d) el era radiotecnico y el me enseño muchasssss cosas
y la red mas y uds muchas massssss y asi mi formacion  academica es esa .
con respecto a tu ejercicio esta padre perooooo no funcionan los dip?
o como es que funcionan?
bye bye. :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 20 de Agosto de 2008, 18:19:20
Si mujer los dip son para otro ejercicio el que mencionas solo muestra la inversa de los ejercicios anteriores en ves de utilizar el puerto b para introducir datos lo utilizamos
Como salida visualizando una cuenta en binario 8)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 20 de Agosto de 2008, 18:24:16
Pue continuando con esto  no todo el la vida son led este pequeño ejercicio muestro como controlar un motor dc utilizando como interfase un puente h y dos pin del pic
El motor de forma automática gira ala derecha se detiene y gira a la izquierda y comienza de nuevo por siempre jamás
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 20 de Agosto de 2008, 18:29:02
Ahora  el control del motor se ase de forma manual  con ra0 gira a la derecha con ra1 ala izquierda y con ra2 stop
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 20 de Agosto de 2008, 18:57:06
Karina no me as respondido si estas dispuesta a entregar tus servicios a este hilo  los servicios nada mas e   :lol: :lol: :lol: necesito que organices y comentes los ejercicios para pedirle a una autoridad mayor que nos haga el favor de cambiar el tema de Este hilo.

Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 20 de Agosto de 2008, 19:23:46
claro que si madrina aqui estoy para lo que ud. mande
(faltaba mas).
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 20 de Agosto de 2008, 19:52:51
Ok  entonces eso mismo necesito que organices los ejercicios  de la manera que consideres mas coherente  de menor a mayor dificultas o por la manera en que se relacionan  en fin tú sabrás.
Y lo mas importante es que hay que comentarlos, ese es mi mas grave  defecto me da la flojera comentar los ejemplos línea por línea  y  para que se entiendan mejor hay que hacerlo.  ahora esto no es para mañana tomate tu tiempo si  hay alguna línea de código que no entiendas me avisas.
En cuanto estén listos solicitaremos un índice al principio del hilo para que se entienda mejor
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 21 de Agosto de 2008, 13:19:35
Pues bien señores después de 1000 :-/ :-/ visitas me imagino que alguien aparte de mi  esta leyendo este hilo :D :D :D así  que  me gustaría que este hoooooooolaaaaaaaaa tuviera eco  quien responde quien ¿???? :shock:
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 21 de Agosto de 2008, 13:56:49
Eco eco eco... Aqui estamos Sandra siguiendo todos tus ejemplo y enseñanzas que estan muy bien.

Saludos  Coterranea -iba a escribir Paisana pero ya sabes eso de "esta paisa"-.
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 21 de Agosto de 2008, 14:03:25
Hoooolaaa... hooolaaa.... un eco más...  :D
Sandrita vengo siguiendo el hilo, colaboraré en lo que pueda, pero creo que ahora Karinita tiene un buen trabajo por delante. Yo no tengo mucho tiempo como para ayudarla con los comentarios de los códigos, pero aquí estaré para cualquier cosa.
Abrazos y saludos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 22 de Agosto de 2008, 13:53:58
Hola les agradezco estuve apunto de un ataque de soledad,  pues bueno continuando con esto resulta que a Karina le  llama la atención como funciona una maquina de refrescos.
Así que un ejemplito súper básico de cómo funcionaria un monedero mecánico seria mas o menos as,í aclaro solo es la idea el desarrollo final seria mucho mas complejo por que hay que considerar muchos eventos y situaciones, que aquí se omiten aquí nos vamos a concentrar  en un pulso una moneda..
El programa cuenta de 1 a 9 cada vez que recibe un pulso (moneda) por ra0  confirma el pulso con un pitido y muestra la cuenta en un displey de 7 segmentos. a partir de aquí podemos hacer crecer el ejemplo.  asiendo que seleccione una bebida dependiendo de cuantas monedas (precio de la bebida) registre.
Insisto todo esto solo es amanera de dar una idea del funcionamiento la aplicación real es por mucho mas compleja
Nota: en el programa hay un error topográfico :mrgreen: en la línea que dice  if  suma=9 then
Debe ser if suma >= 9 then   lo que pasa que el teclado donde ago los ejemplos es japonés y todavía hay  símbolos que no encuentro
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 25 de Agosto de 2008, 12:12:41
Pues bien debido a que Karina se encuentra oficialmente desaparecida y al poco éxito obtenido; estoy considerando al menos por mi parte dar por concluido este hilo cuya una intención era ayudar pero esto no puede continuar siendo que hay mayor interés de mi parte y no tengo la necesidad de repetir lo que ya  aprendí
saludos :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: Nocturno en 25 de Agosto de 2008, 12:19:54
¡Vamos, Sandrita, que no se diga!, dale caña que verás cómo salen tus admiradores.
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 25 de Agosto de 2008, 12:38:38
Sandrita, me imagino que Karina ha tenido alguna cosa importante para ella que la ha tenido ocupada.
En lo que regrese retomaremos el hilo. Yo también había notado que ella está un poco ausente.
Sin embargo, admiro tus ganas de ayudar, es muy bonito el altruismo que despliegas. Pero por el momento creo que sí, es mejor dejar el hilo en "standby" (no sé si se escribe así, pero ustedes me entienden  :D ).
Ok un cordial saludo, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: Skualo en 25 de Agosto de 2008, 13:38:02
ola veo que controlais basic aver si me podiais acer el favor y poner algun ejemplo con interrupcion rb0??
yo lo estoy intentando inutilmente
Código: Text
  1. Device 16F84
  2.  XTAL 4
  3. INTCON=%10010000
  4. OPTION_REG=%01000000
  5.  
  6.  on_hardware_interrupt GoTo isr
  7.   ALL_DIGITAL=true
  8.    isr:
  9.    If INTCON.1=1 Then
  10.  PORTA=$FF
  11.  INTCON.1=0
  12.  End If
  13.  GoTo main
  14.  main:
  15.   TRISB=$FF
  16. TRISA=$00
  17.  GoTo main
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 25 de Agosto de 2008, 13:54:15
Mi padawan ha sido absorbida por el lado oscuro :shock:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 25 de Agosto de 2008, 14:01:34
Skualo mira si esta mal tu desarrollo comenzando por la línea ALL_DIGITAL=true  esta línea  configura como puertos digitales  a los puertos analógicos cuando el PIC cuenta con ellos  el f84 no los tiene.
Checate el ejemplo que viene en el manual del protón funciona a la perfección
Checalo y luego comentas si tienes dudas :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 25 de Agosto de 2008, 14:04:50
perdon por no haberme reportado antes  ya saben como es esta vida  cuando crees que los problemas estan lejos en realidad esta a la vuelta de la esquina
( tuve que hir a ver a mi abuelo que esta muuuyyyy enfermito pero ya estoy aqui).
por favor les ofresco mil disculpas y no me he pasado al lado oscuro ni tampoco quiero que piensen que soy mala agrecida.
me perdona madrina? me perdonan todas y todos?
 :8}
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 25 de Agosto de 2008, 23:00:13
Kari, de mi lado no hay nada que perdonar. Todos tenemos ocupaciones y problemillas de vez en cuando. Ojalá que tu abuelo se recupere pronto!  :P  Y qué fino que regresaste por aquí! Es bueno tenerte de nuevo en el foro!  :-/
Un cordial saludo, nos leemos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 26 de Agosto de 2008, 10:58:16
Padawan  no te preocupes todos aprendemos algo de los demás, y yo peque de impaciencia  aunque un grito diciendo que ibas a estar off lain no abría estado mal.
Pues bien ponte al día con los ejemplos nuevos el ejemplo del monedero te va interesar por que es más o menos lo que querías hacer.
Los boy a dejar unos días la salud me ha pegado una mala pasada  y me han encargado varios estudios así que estos días serán de clínica y laboratorio, como los odios siempre e tenido fobia al color blanco y el olor a hospital.
Espero que esto no sea más que un mal rato.
Asta pronto  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 26 de Agosto de 2008, 18:52:57
Espero que te mejores pronto sandrita! Para tenerte de vuelta por aquí!
Cuídate mucho, saludos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 26 de Agosto de 2008, 22:23:51
sandrita que te mejores pronto y ojala ( o no? ) que esa enfermadad sea de esas enfermedades que a los pocos meses hay que ponerle nombre  :D
y pues bien  aqui les tratare de comentar el ejemplo de sandra linea a linea a ver que tal quedo espero me corrijan en donde este mal.




Device 16F84A                            'el micro que se esta utilizando
XTAL 4                                       'frecuencia del oscilador
TRISA=%00000001                     'configuracion del puerto a : 1=entradas y 0=salidas (recomiendan que los pines que no se utilicen
                                                 'hay que configurarlos como salidas)
PORTA=%00000000                    ' ponemos en cero todo el ptoa
TRISB=%00000000                     'configuracion del ptob (en este caso todo salidas)
PORTB=%00000000                    ' ponemos en cero todo el ptob


Symbol pulso=PORTA.0               'pomemos un alias a ra0(pin 17 de pic16f84a)este pin en adelante se llamara pulso
Symbol buzer=PORTA.1              'ponemos un alias a ra1 (pin 18 )este pin se llamara buzer
Symbol digito=PORTB                 'ponemos un alias a todo el puertob (pin´s 6,7,8,9,10,11,12 y 13) todo el pto se llamara digito
Dim suma As Byte                      'suma sera una varible del tipo byte (puede ser de 0 a 255)
suma=0                                     'ponemos en cero la variable suma
Dim numero As Byte                   'numero sera una variable del tipo byte
numero=0                                  'ponemos en cero la variable numero

loop:                                          'nombre de la etiqueta
If pulso=0 Then                          'si pulso (el pin 17) es igual a cero entonces
Inc suma                                   'incrementa la variable suma
numero=suma                           'la variable numero es igual a la varible suma
LookUp numero,[63,6,91,79,102,109,124,7,127,103,0],digito         'le da un valor constante(63,6,91,79....) a la variable numero y lo
                                                                                                'muestra en digito (puerto b) 
Sound buzer,[10,10]                   'produce un sonido de x nota(frecuencia) y x tiempo ([10,10])y lo presenta por ra1 (pin 18)
buzer=0                                     'pone a cero buzer
If suma >= 9 Then                      'si la variable suma es superior o igual a 9 entonces
suma=0                                     'suma tomara el valor de cero
numero=0                                  'y tambien la variable mumero tomara el valor de cero
EndIf                                         'se cierra el comando if...then
While pulso=0                            'ejecuta declaraciones mientras la condición sea verdadera en este caso si pulso (ra0 pin 17) es cero
DelayMS 1                                 'entoces hay una pausa de 1 milisegundo
Wend                                        'cierra el comando while...wend
EndIf                                        'cierra el comando if...then
GoTo loop                                 'va a la etiqueta loop

End                                           'fin del programa



saludos  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 27 de Agosto de 2008, 20:03:35
Qué tal Karinita! Me parece que has hecho un buen trabajo!  :-/
Por mi parte sólo aclararía un poco más el comentario de la función lookup. Por ejemplo: ¿por qué esos valores? ¿de qué depende la asignación? Cuestión de hacer un poco más entendible la cosa. Pero creo que lo demás lo veo muy bien.
Un saludote, te cuidas!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 31 de Agosto de 2008, 02:25:17
hola  por fin despues de varios dias con el foro que se cae a cada rato pude postear
gracias firepic por tus obsevaciones con respecto lookup pues bien lo endiendo mas o menos asi:


LookUp numero,[63,6,91,79,102,109,124,7,127,103,0],digito         'le da un valor constante(63,6,91,79....) a la variable numero y lo
                                                                                                'muestra en digito (puerto b)
                                                                                                 estos numeros en binario encienden los segmentos el el display por ejemplo
                                                                                                  el 6 = 00000110 los unos encienden los segmentos  B y C  que juntos forman el uno
                                                                                                  el 91 = 01011011  ==================== A,B,G,E y D ==========  DOS
                                                                                                  etc,etc............


(criticas y comentarios bienvenidos)



saludos y que sandrita  haya mejorado (hechale ganas madrina)
bye  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 31 de Agosto de 2008, 14:41:41
Padawan  así es ahora modifica el comentario en el ejemplo para que quede mas claro así también date cuenta que yo no utilizo el comando buton  para el monedero .sino  el if con una pequeña rutina anti rebote con while seria interesante que quedara comentado en el ejemplo.
Vas muy bien solo hay que corregir unos detalle que ya mencione
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 31 de Agosto de 2008, 14:44:52
Pues bien  resulta que mi padecimiento no será bautizado no se si es bueno o malo así que para no pensar prefiero seguir con el ejemplo anterior. Lance la idea de que con el monedero se podría seleccionar una bebida, según el precio y como nadie lo desarrollo pues lo ago yo, insisto esto es un desarrollo  súper básico. Este ejemplo no toma en cuenta entre otras cosas que pasa si se comete un error al intentar seleccionar una bebida, con un precio distinto al que le fue asignado.
El procedimiento es el siguiente, existen 3 pulsadores lata1, lata2, lata3. En el monedero se ingresa el valor de la bebida deseada., y continuación se pulsa el botón de la lata que elegimos, el programa confirma con un sonido que él  numero de monedas y la lata que seleccionamos corresponden reinicia contador, portb  y comienza el ciclo por siempre jamás
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 31 de Agosto de 2008, 14:55:51
Padawan  ya tienes otro ejercicio para seguir practicando cabe aclarar que no te conformes con entender los ejemplos modifícalos en base a las fallas que tengas es como se aprende.
Hay varias maneras de atacar un problemas mas adelante pondré un ejemplo de la maquina  expendedora resuelto desde otro Angulo para que quede mas claro :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 02 de Septiembre de 2008, 13:56:03
hoooolaaaaaaa a todos y en especial a mi madrina sandrita .
que barbara que ejemplasos pones sandrita  ahora mismo estoy tratando de hacerlo en un pic16f877 para que por los otros puertos se puedan activar los motores
o solenoides para que entregue las latas (aver como me sale) y mas botones para mas latas y precios en cuanto lo termine y pruebe lo posteo(por que ya extraño mis jalones de orejas  :D )tal vez me tarde unos dias pues tengo algo de trabajo(2 televisores  sony que me estan volviendo loquita  :z).
madrina: un abrasototote y ya mejorate todo es mental...... ahumm,ahumm.........
haaaaa y a todos los que lean estos pots que dejen  sus opiniones
abrazos y besos  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 04 de Septiembre de 2008, 14:28:18
hola a todas y todos epero no se molesten por salirme un poquitin de los ejemplos de sandrita pero me urge solucionar este problemilla.
pues resulta que me mandaron llamar a la escuela de mi hermano que es una secundaria yo pense que me hiban a dar una queja pero no, resulta que que el chamaco les dijo a los profesores que su hermana sabia algo de electronica y quieren que les haga un dipositivo para un cocurso de preguntas y respuestas,
es decir botones y leds, el dispositivo consta de 12 leds y 3 botones  los botones se distribuyen asi :  boton para que el profesor lo presione cuando termine de hacer la pregunta .boton1 es presionado si el alumno numero 1 sabe la respuesta,  boton2 es presionado si el alumno numero 2 sabe la respuesta.
los 10 leds comiensan a encerder uno a uno cuando el boton del profesor es activado
si alguno de los 2 alumnos activa su boton (boton1 o boton2) la secuencia se detiene  y se enciende el ledgana1 o ledgana2 y asi se queda hasta que el boton del profesor es nuevamente activado y se repita el proceso.
aqui les dejo el codigo que he echo pero no puedo  interrunpir el proseso de secuencia .
espero me ayuden .




  Device = 16F877A
  XTAL = 4
 
 
       
 
'**********************definicion de variables*******************

 Dim buffer_boton As Byte  ' buffer usado por el boton
 Dim buffer_boton1 As Byte
 Dim buffer_boton2 As Byte
 Dim time As Word
 Dim x As Byte


 
'************** defino alias a los diferentes puertos/pines***************

Symbol boton = PORTD.0
Symbol boton1 = PORTD.1
Symbol boton2 = PORTD.2
Symbol relay = PORTA.0
Symbol ledgana1 = PORTA.1
Symbol ledgana2 = PORTA.2
Symbol led = PORTD.3
Symbol led1 = PORTD.4
Symbol led2 = PORTB.0
Symbol led3 = PORTB.1
Symbol led4 = PORTB.2
Symbol led5 = PORTB.3
Symbol led6 = PORTB.4
Symbol led7 = PORTB.5
Symbol led8 = PORTB.6
Symbol led9 = PORTB.7

'**********************definicion de puertos************************
TRISA = %00000000
PORTA = 0
TRISB = %00000000         
PORTB = 0
INTCON = %00100000                 
TRISE = %00000000
PORTE = 0
TRISC = %00000000
PORTC = 0
TRISD = %000000111
PORTD = 0
'*********************pongo las variables a "0"**********************




'*************************comienzo del programa********************
inicio:
           
            DelayMS 10
       
          Button  boton,1,40,5,buffer_boton,1,sec
'          Button  boton1,1,40,5,buffer_boton1,1,inter1
'          Button  boton2,1,40,5,buffer_boton2,1,inter2
          GoTo inicio
         
'inter1:         
         
'         on interrupt goto  nivel1
       
'inter2:
                 
'        enable  interrupt sec
'       gosub nivel1a     
'nivel1:
       
'       ledgana1 = 1
       
     
       
       
'nivel1a:
       
'      ledgana2 = 1   
         



     
                                                                   
     
'GoTo inicio           
     
 


         
sec:
        PORTA=0
        PORTB=0
        PORTD=0   
        time = 2000
       
       
         relay = 1
         DelayMS time
   
         led = 1
         DelayMS time
           
         led1 = 1
         DelayMS time
           
         led2 = 1
         DelayMS time
           
         led3 = 1
         DelayMS time
           
         led4 = 1
         DelayMS time
         
         led5 = 1
         DelayMS time
         
         led6 = 1
         DelayMS time
         
         led7 = 1
         DelayMS time
         
         led8 = 1
         DelayMS time
         
         led9 = 1
         DelayMS time
         relay = 0
         GoSub delay
         
delay:         
     
       
           For x=0 To 10     
           PORTB = 255
           PORTD = 24
           DelayMS 200
           PORTB = 0
           PORTD = 0
           DelayMS 200
           Next         
         
         GoTo inicio
 
     

End




saludos   :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 04 de Septiembre de 2008, 16:37:29
Hay  hija mía  como te metes en líos esto va hacer un poco mas complicado empezando por que no entiendo bien el proceso que intentas.
1 porque el profesor tiene que apretar un botón por ejemplo en los programas de concurso únicamente los concursantes activan el botón.
2  porque los diez leds deben comenzar a encender uno a uno.
Mientras déjame checar haber que encuentro en tu programa y a ese chamaco tápale la bocota :D :D :D
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 04 de Septiembre de 2008, 16:51:51
y a ese chamaco tápale la bocota :D :D :D
:D :D :D

Lo que podria hacer Karina si no entendi mal es:

1ro Una rutina que active el conteo con su FOR, esto activado por el profe.
2do En esa rutina dentro del For meter un IF que evalue el estado de los botones de los "escuincles" para cuando alguien lo active se salga del for. algo como:

main:
'rutinas nose nose nose
if boton0=0 then Activado 'el boton lo activo el profe
goto main

Activado:
For i=0 to n
 .....'tu rutina
......'tu rutina
IF Boton1=0 Or Boton2 =0 'suponiendo que se activan en bajo
 goto exit
endif
next i

Exit:
'tu rutina para mostrar el dato de i o lo que quieras
If reset=0 then main

Saludos
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 04 de Septiembre de 2008, 17:09:00
Haber si entiendo el Prof. presiona el botón porque hay un tiempo límite para responder la pregunta?????
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 04 de Septiembre de 2008, 17:37:22
exacto el profe dice la pregunta y presiona el boton entonces los leds comiensan a encender
si un escuincle preciona boton1 o boton2 entonces se detiene el proceso,se quedan encedidos los leds que ya fueron encendidos es decir: si el chamaco contesto
a los 33seg los leds quedarian asi :000011111 y se enciende el ledgana1 o el ledgana2 y asi se queda hasta que el profe vuelva a precionar.
ora que si los chamacos no saben la respuesta se encienden los 10 leds y parpadean unas 10 veces y se apagan y queda listo para que otra vez precione el profe.

       time = 6000
       delay = time
        led = 1
         DelayMS time
        led1 = 1
         DelayMS time
        led2 = 1
         DelayMS time
        led3 = 1
         DelayMS time
        led4 = 1
         DelayMS time
        led5 = 1
         DelayMS time
        led6 = 1
         DelayMS time
        led7 = 1
         DelayMS time
        led8 = 1
         DelayMS time
         led9 = 1

         GoSub delay
         
delay:         
     
       
           For x=0 To 10     
           PORTB = 255
           PORTD = 24
           DelayMS 200
           PORTB = 0
           PORTD = 0
           DelayMS 200
           Next         
         
         GoTo inicio

saludos  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 04 de Septiembre de 2008, 17:39:38
mmm nadie me escucha jajajaja :D mira lo que te escribi es practicamente el concepto que acabas de poner
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 05 de Septiembre de 2008, 13:04:23
hola navaismo si te escuche solo que asi ya lo habia intentado y lo que pasa es lo siguiente: el pfofre preciona su boton y comiensa la secuencia si el escuincle presiona rapidamente no pasa nada nesecita dejar precionado hasta que ternine su secuencia ese led, entonces si sale de esa rutina y se va a la otra.
lo que se ocupa es que cuando cualquiera de los 2 escuincles precione en ese instante salga de esa rutina y salte a la otra.
lo que pasa es (ayyyy esos profes y en particular mi hermanito )que la calificacion la dan dependiendo de hasta que led presionen por ejemplo :

los leds = 1111111111 calif=0 (paso 1 min y no supieron)
los leds = 0111111111 calif=1 (pasaron mas de 54 seg para precinar)
los leds = 0011111111 calif=2 (pasaron mas de 48 seg para precinar)
los leds = 0001111111 calif=3 (pasaron mas de 42 seg para precinar)
..........................................
los leds = 0000000000 calif=10 (pasaron menos de 6 seg para precinar ,por eso lo del primer delalms 6000)


saluditos  :g)


y una pregunta que sucedio con el ultimo post de firepic ya no esta,
 lo abducieron los extraterrestres?
bye.
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 05 de Septiembre de 2008, 13:44:17
No se lo que le haya pasado al mensaje de FirePic.

Mira con lo que te comentaba se puede sin problemas, te dejo este ejemplo que prende cada 600mS los pines del PORTB si alguien presiona el switch 1 o 2 se sale parando el conteo dejando encendido el PORTB un segundo y limpiandolo despues. A ver si te sirve.

Código: FreeBasic
  1. '****************************************************************
  2. '*  Name    : UNTITLED.BAS                                      *
  3. '*  Author  : Navaismo                                          *
  4. '*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 05/09/2008                                        *
  7. '*  Version : 1.0                                               *
  8. '*  Notes   :                                                   *
  9. '*          :                                                   *
  10. '****************************************************************
  11. Device 16F84A
  12.  XTAL=4
  13. TRISA=31
  14. TRISB=0
  15. PORTA=0
  16. PORTB=0
  17.  
  18. Dim i As Byte
  19. Dim prof As PORTA.0
  20. Dim alu1 As PORTA.1
  21. Dim alu2 As PORTA.2
  22.  
  23. main:
  24.  If prof=1 Then
  25.   GoTo cont
  26.  EndIf
  27. GoTo main
  28.  
  29. cont:
  30.  For i=0 To 8
  31.   Select Case i
  32.    Case 0: PORTB.0=1: If alu1=1 Or alu2=1 Then exit
  33.    Case 1: PORTB.1=1: If alu1=1 Or alu2=1 Then exit
  34.    Case 2: PORTB.2=1: If alu1=1 Or alu2=1 Then exit
  35.    Case 3: PORTB.3=1: If alu1=1 Or alu2=1 Then exit
  36.    Case 4: PORTB.4=1: If alu1=1 Or alu2=1 Then exit
  37.    Case 5: PORTB.5=1: If alu1=1 Or alu2=1 Then exit
  38.    Case 6: PORTB.6=1: If alu1=1 Or alu2=1 Then exit
  39.    Case 7: PORTB.7=1: If alu1=1 Or alu2=1 Then exit
  40.   End Select
  41.   DelayMS 600
  42.   If alu1=1 Or alu2=1 Then exit
  43.  Next i
  44.  
  45. exit:
  46. DelayMS 1000
  47. PORTB=0
  48. GoTo main


Saludos
     
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 05 de Septiembre de 2008, 18:46:31
navaismo muchas gracias por tus ejemplos pero la verdad sigue sin funcionar como yo quisiera el problema es que cuando alguno de los 2 escuincles preciona rapido no pasa nada se debe esperar precionando el boton de 1 a 6 seg para que salga de cont y entre a exit,  lo que ocupo es que  cuando se precione un boton el micro deje de hacer lo que este haciendo(no esperar nada) y salte a exit.

si si ya se soy una latosa   :D
saludos  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 05 de Septiembre de 2008, 19:53:07
En la realidad no tarda tanto, lo estas simulando? si deseas puedes usar una interrupcion para eso.
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 05 de Septiembre de 2008, 20:11:11
Pues bien después de analizar a detalle tu programa esta todo muy mal, me da justo ver que as estado leyendo e intentas incorporar cosas nuevas, como lo son los procesos de interrupción pero como nos pasa a todos al principio esta mal configurado la rutina para una interrupción por taimer implica muchas cosas como por ejemplo hay que cargar el pre escaler
El propio registro de contador vamos hay que calcular el tiempo en que el mismo se va a desbordar y diseñar la rutina de interrupción la cual debe ser tan breve como un suspiro,
El 16f877 tiene puertos que por defecto son analógicos y para poder utilizarlos como entrada salida hay que configurarlos como digitales.
En conclusión mal mal muy mal sinceramene  ni siquiera entiendo que funcione.
Bueno primero necesito que me expliques bien  a detalle el procedimiento del concurso
Segundo empieza todo de cero para esto no es necesario utilizar interrupciones ni el tmr los tiempos no necesitan exactitud así que no los utilices lo vamos a resolver con lo que hemos visto asta ahora en muy pocos casos es necesario recurrir a una interrupción a demás de que para esto hay que tener cierto nivel de aprendizaje.
Y por favor siempre que pongas un ejercicio sube también la simulación en proteus por que a mí me da mucha flojera armar los circuitos.
prefiero armar los ctos en un protoboard pero por ahora no me es posible por que mi programador sé auto destruyo.
Así que como te dije esto  va requerir  tiempo al ser una aplicación real hay que ponerla a punto espero que tu hermanito no aya dicho que eres una súper experta y que mañana estaría listo.
No te preocupes realmente no es una aplicación muy complicada pero si requiere tiempo
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 05 de Septiembre de 2008, 20:31:32
Hola paisano que bueno verte por aquí eres de los pocos que no tiene miedo a estar entre mujeres.
Karina esta mirando que para visualizar el tiempo la mejor opción es un lcd 2x16  o de menos con displey de 7 segmentos por que representar el tiempo con un puerto del pic enrolla mucho el asunto y en muchos casos no va a alcanzar
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 05 de Septiembre de 2008, 20:50:34
hola,hola pues les dejo el software y el hardware (en proteus)
este funciona bien pero tengo el problema hay que  dejar precionado el boton hasta que termina la secuencia del led en turno.


bye bye  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 05 de Septiembre de 2008, 20:50:35
Se me hace raro ver un programa que no utilice las interrupciones. De todas formas he realizado la traducción a mi lenguaje, solo son pequeñas diferencias. Y una vez traducido, le he añadido una pequeña rutina que simula un timer o base de tiempos. Hace lo mismo que un delay pero permite seguir ejecutando código mientras se realiza la pausa sin usar interrupciones que supongo pertenecen a un nivel un poco superior al actual desarrollo del hilo.

De todas formas como consejo en los lenguajes de altonivel no se suelen utilizar los saltos absolutos ni tampoco los pauses, delays, waits, etc.

El programa respetando la programacion basica del original:

Código: Visual Basic
  1. '****ARREGLO, SOLO SIMULACION*************************************
  2. '* Name : UNTITLED.BAS *
  3. '* Author : Navaismo *
  4. '* Notice : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
  5. '* : All Rights Reserved *
  6. '* Date : 05/09/2008 *
  7. '* Version : 1.0 *
  8. '* Notes : *
  9. '* : *
  10. '****************************************************************
  11. 'Device 16F84A
  12. 'xtal = 4
  13. '---------------
  14. 'Define SIMULATION_WAITMS_VALUE = 1  'Ignora los valores de Waitms
  15. '---------------
  16. AllDigital
  17. TRISA = 31
  18. TRISB = 0
  19. PORTA = 0
  20. PORTB = 0
  21. '---------------
  22. Dim i As Byte
  23. Dim pause As Word  'establece el tiempo de pausa
  24. Dim timer1 As Word  'contador,  hace la  pausa
  25. '---------------
  26. Symbol prof = PORTA.0
  27. Symbol alu1 = PORTA.1
  28. Symbol alu2 = PORTA.2
  29. '---------------
  30. main:
  31.         If prof = 1 Then Goto cont
  32. Goto main
  33. End                                              
  34. '---------------
  35. cont:
  36.         For i = 0 To 8
  37.                 Select Case i
  38.                         Case 0
  39.                                 PORTB.0 = 1
  40.                                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  41.                         Case 1
  42.                                 PORTB.1 = 1
  43.                                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  44.                         Case 2
  45.                                 PORTB.2 = 1
  46.                                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  47.                         Case 3
  48.                                 PORTB.3 = 1
  49.                                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  50.                         Case 4
  51.                                 PORTB.4 = 1
  52.                                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  53.                         Case 5
  54.                                 PORTB.5 = 1
  55.                                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  56.                         Case 6
  57.                                 PORTB.6 = 1
  58.                                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  59.                         Case 7
  60.                                 PORTB.7 = 1
  61.                                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  62.                 EndSelect
  63.                 pause = 600  'carga el tiempo a contar en el timer
  64.                 Gosub m_pause  'salto con retorno a mi rutina de pausa
  65.                 If alu1 = 1 Or alu2 = 1 Then Goto eexit
  66.         Next i
  67. '-----------------
  68. eexit:
  69.         WaitMs 1000
  70.         PORTB = 0
  71.         Goto main
  72. '-----------------
  73. m_pause:  'rutina de pausa especial, timer por soft
  74.         timer1 = 0  'inicializa contador
  75.         While timer1 < pause  'mientras se de la comparacion
  76.                 WaitMs 1  'pausa, base de tiempos de referencia 1mSeg.
  77.                 timer1 = timer1 + 1  'incrementa contador, lleva el tiempo
  78.                 If alu1 = 1 Or alu2 = 1 Then timer1 = pause  'si es cierto termina while
  79.         Wend  'acota el while
  80. Return  'retorna al programa

PD. Delayms = Waitms. La etiqueta EXIT es una palabra reservada en mi lenguaje asi que la cambie por EEXIT. No puedo hacer un salto a una etiqueta
sin especifica el tipo de salto. No puedo usar DIM en un puerto en este caso tengo que usar SYMBOL.
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 06 de Septiembre de 2008, 11:32:59
Pues antes que nada señor don can  :D :D agradecerle que sé allá tomado la molestia de mirar este humilde hilo que asu altura asta le a de causar flojera.
Esta de mas felicitarle por el excelente desarrollo que nos a echa favor de aportar y si no le causa mucha molestia me aria un grandísimo favor si pudiera extendernos el consejo  de su
Ultima línea.

De todas formas como consejo en los lenguajes de altonivel no se suelen utilizar los saltos absolutos ni tampoco los pauses, delays, waits, etc.

Ase mucho tiempo que sé que esto debe ser así pero no se como manejarlo ni encuentro
Información al respecto por lo cual mis desarrollos son deficientes
Un abraso
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 06 de Septiembre de 2008, 14:04:35
A una buena solucion master Carlos, anoche entre sueños estaba pensando en poner el for para la pausa con el if dentro para que incluso en la pausa lo puedan sacar me ganaste, jeje que bueno.

Paisana aun te tengo guardados esos CD's si anadas por el DF me ae que me descuelgo y te los llevo, y a quien no le va a gustar entre brujeres ups perdon mujeres. Sobre lo del LCD no se que le convenga mas en cuestion de money si un LCD o un display.

Saludos
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 06 de Septiembre de 2008, 21:11:13
Carina  como podrás ver el programa fue ya resuelto muy bien.  tu problema básicamente es que mientras tu programa esta ejecutando los delay´, el pic no se da cuenta de que  un botón esta pulsado por eso tienes que mantener el botón pulsado asta que el pic sale del delay y darse cuenta que el botón esta pulsado. .
Me estoy dando cuenta que eres algo terca y eso me enoja mucho, ase un tiempo te sugerí que buscaras un delay en asm y lo estudiaras, con la finalidad de que te dieras cuenta que mientras el pic esta ejecutando un delay esta en unos bucles anidados; dijamos que esta siego y sordo asta que sale de el.
También te dije que en el pic 16f877 el  puerto a esta configurado  como entradas analógicas y que para poder utilizarlo como entradas, o salidas hay que configurarlo como puerto digital..
Atra cosa que tal vez  por la falta de experiencia y no es que yo tenga mucha,  es que un pic mal programado funciona de manera errática,  puede que parezca que esta haciendo lo que tu quieres cuando en realidad sus respuestas son el resultado de quien sabe que diablos.
Ahora sin la más mínima intención de ofenderte  alfin de cuentas en esto yo no me gano nada más que la oportunidad de ayudar,  simule tu programa y  no funciona.
Como te mencione hay que comenzar todo de nuevo yo se que no es fácil  porque después de dedicarle tiempo resulta que hay que volver atrás y es frustrante  pero en este caso se me adelantaron y ya te mostraron el camino así que a trabajar.
Y me disculpo si te soné demasiado dura pero entre amigos no hay otra forma de decir las cosas.
Un abraso.
Navaismo no te preocupes ya abra  oportunidad para los discos ahora que mi servicio privado de mensajera Express ha vuelto a funcionar
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 06 de Septiembre de 2008, 23:05:06
Qué tal!

No se lo que le haya pasado al mensaje de FirePic.

Pues yo tampoco, qué extraño que se voló..  :?  :shock:

Bueno pues repito que me alegra que Karina esté dando tantos progresos... y pues que no he podido dar muchos aportes al hilo, me disculpan, también he estado un poco de reposo...
Pero ya veo que con Navaismo, Sandrita y Dogflu, pues guao, ya este hilo tiene a los grandes! Mis respetos para ustedes tres.
Sigo el hilo de cerca, espero poder colaborar en cuanto pueda.
Animo Kari! Adelante todos!
Se les aprecia, saludos!  :mrgreen:

P.D. Acabo de recordar que otra cosa que escribía en el mensaje que se perdió era que ya es importante cambiar el tema del hilo, pues se ha vuelto mucho, pero mucho más que un "interesante proyecto con pic y led". :)
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 07 de Septiembre de 2008, 08:08:26
Pues antes que nada señor don can  :D :D agradecerle que sé allá tomado la molestia de mirar este humilde hilo que asu altura asta le a de causar flojera.
Esta de mas felicitarle por el excelente desarrollo que nos a echa favor de aportar y si no le causa mucha molestia me aria un grandísimo favor si pudiera extendernos el consejo  de su
Ultima línea.

De todas formas como consejo en los lenguajes de altonivel no se suelen utilizar los saltos absolutos ni tampoco los pauses, delays, waits, etc.

Ase mucho tiempo que sé que esto debe ser así pero no se como manejarlo ni encuentro
Información al respecto por lo cual mis desarrollos son deficientes
Un abraso


La instrucción goto cuando se utiliza en un programa produce un código que es muy difícil de entender ya que rompe la estructura enfocada a una rutina principal o main.

Ejemplo de programa Basic organizado alrededor de una rutina principal:

‘***** NUESTRO PROGRAMA *****
Cabecera
‘------------------------------
Definiciones
‘------------------------------
Declaraciones
‘------------------------------
Configuración módulos
‘------------------------------
Código Inicio, si hay
‘------------------------------
Subrutina principal (Main)
Main:

    Código inicio, si hay

    If timer1 then
        Evento 1º -> Gosub Evento_1, Función Evento_1 (datos) o también Procedimiento Evento_1 (datos)
    Endif

    If timer2 then
        Código intermedio, si hay
    Endif

    Evento 2º -> Gosub Evento_2, Función Evento_2 (datos) o también Procedimiento Evento_2 (datos)

    Código intermedio, si hay

    If timer3 then
        Evento 3º -> Gosub Evento_3, Función Evento_3 (datos) o también Procedimiento Evento_3 (datos)
        (Por ejemplo controla la intermitencia de un led, y timer3 establece la cadencia de parpadeo)
    Endif

    Llamada a subrutina de control de las base de tiempos (timer), se puede condicionar al Flag de
    rebose de un modulo Timer, con Gosub, Función o Procedimiento

    Código de cierre, si hay

Goto main ‘la única vez que se utiliza el Goto, para generar un bucle infinito
End
‘-------------------------------
Subrutina, función o procedimiento delays evento_1
   Cuerpo
Retorno
‘-------------------------------
Subrutina, función o procedimiento delays evento_2
   Cuerpo
Retorno
‘-------------------------------
Subrutina, función o procedimiento delays evento_3
   Cuerpo
retorno
‘-------------------------------
Subrutina, función o procedimiento delays
   Timer1
   Timer2
   Timer3
   Timer4
   Etc.
Retorno
End
‘************** FIN *******************

En este prototipo de programa no se pueden utilizar paradas absolutos ya que afectaríamos a los de mas
procesos del main, siempre contemplándolos como procesos diferentes incluso puede que no relacionados entre si.

Y al usar saltos absolutos con el Goto, ya permita el compilador omitirlo o no. Tenemos que indicar al procesador
en cada salto donde tiene que retornar en cada momento ocasionando programas muy complicados.
Mientras que al realizar los con Gosub o Funciones el ordenador sabe en todo momento donde tiene que retornar,
que es la línea siguiente a la que provocó el salto. Incluso nosotros a simple vista sabremos donde continuara nuestro
programa una vez terminada la subrutina.

Lo ideal es que la subrutina de control de los timer este incorporada en el vector de interrupciones ya que se consigue
un rendimiento mucho mayor. En el caso de ser así ya no habría que llamarla desde el Main, esto se haría de forma automática.
O en el peor de los casos comprobar el flag de rebose de un timer físico para provocar el salto para la actualización de los timer
o contadores de nuestra rutina para medir tiempo.

PD: Creo que esta estructura básica es la más aceptada y espero que exprese el contenido de la frase... :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 07 de Septiembre de 2008, 08:16:23
Otro PD. Lo ideal es utilizar Funciones y Procedimientos (para sustituir a Gosub) ya que permiten definir dentro de ellos variables locales. Con lo que podemos crear rutinas y algoritmos que se pueden transportar a cualquier código sin preocuparnos de la coincidencia de nombres de las variables. Este tipo de código funcionará sin problemas en el principal. Ejemplo: Función que nos realiza división con decimales.
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 07 de Septiembre de 2008, 15:45:40
De una rápida leída me a parecido una excelente explicación  en un tiempo libre le boy a dedicar tiempo para terminar de comprender.
Desafortunada mente el pic basic y el protón es de donde cojean no cuantas con funciones o procedimientos  y tenemos que conformarnos con el gosub.
Creo que en  protón se puede ase algo parecido a funciones pero es muy complicado por que hay que simular una pila de memoria y luego meter a la pila el dato y sacarlo total que es un desastre de ahí mis coqueteos con c pero debo admitir que después de haberlo intentado por tres veces el c se me niega  para resolver algo siempre pienso en basic.
Un abraso y  gracias por la lección.

Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 08 de Septiembre de 2008, 17:55:29
maestros de maestros , gracias muchas gracias efectivamente el problema esta por demas resuelto (y de que forma)
gracias  dogflu66,sandrita,navaismo en fin a todos en este foro.
estoy en verdad muy agradecida,muy agradecida y muuuyyy agradecida con todos ustedes.
por que lo que  ustedes aportan no se puede pagar ni con todo el oro del mundo.
gracias.   :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 08 de Septiembre de 2008, 17:58:30
Pero si con un gracias o unos miles de pesos o mmmm..... :D De nada Kari con la tutora que tienes creo que te vamos a deber un psicologo jajaja.
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 08 de Septiembre de 2008, 18:46:38
Kari qué bien que ya lograste resolver el problema del proyectico, felicitaciones!!  :-/  :-/  :-/
Ves? Ya poco a poco te vas convirtiendo en una expertita.  :lol:
En un tiempo ya no necesitarás ayuda de nadie para realizar tus propios códigos. Eso sí, esperamos seguirte viendo por aquí en el foro, para que ayudes a otros más que están a penas empezando! O simplemente a ver qué proyectos estás haciendo!
Un cordial saludo a todos!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 08 de Septiembre de 2008, 19:05:25
perdon pero por la emocion se me habia olvidado poner  el proyecto terminado
nuevamente gracias.
saludos  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 08 de Septiembre de 2008, 19:42:20
perdon pero por la emocion se me habia olvidado poner  el proyecto terminado
nuevamente gracias.
saludos  :g)

Estoy al borde de las lágrimas mi niña esta creciendo   :8} :8}
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 08 de Septiembre de 2008, 20:01:17
haaaaaa no  te burles madrina
que me vas a hacer llorar.
saludos madrina  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 08 de Septiembre de 2008, 20:32:02
Case 9

PORTB.7 = 1

If alu1 = 1 Then GoTo eexit1
If alu2 = 1  Then GoTo eexit2
DelayMS 2000
 GoSub  blink '_________ NO PUEDE HABER GOSUB SIN RETURN, CAMBIAR EL GOSUB POR GOTO.
EndSelect

pausa = 2000  'carga el tiempo a contar en el timer

GoSub m_pause  'salto con retorno a mi rutina de pausa

Next i

'-----------------

eexit1:
PORTA.6=1


GoTo main
'-----------------

eexit2:
PORTA.7=1


GoTo main
'-----------------

blink:

For x=0 To 10     
           PORTB = 255
           PORTA = 9
           DelayMS 200
           PORTB = 0
           PORTA = 0
           DelayMS 200
           Next         
         
         GoTo main'_________ TARDE O TEMPRANO SE COLGARA EL MICRO,  POR NO CERRAR EL  GOSUB CON SU RETURN
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 08 de Septiembre de 2008, 20:35:59
PD. Igual que cada While tiene su Wend, cada For tiene su Next, cada If tiene su Endif, pues cada Gosub tiene su Return.
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 08 de Septiembre de 2008, 20:43:28
entendido y anotado, dogflu gracias.
(ahora mismo lo corrijo)
saludos  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 08 de Septiembre de 2008, 20:51:06
listo ya esta correjido
nuevamente gracias  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 08 de Septiembre de 2008, 21:17:36
m_pause:  'rutina de pausa especial, timer por soft

timer1 = 0  'inicializa contador

While timer1 < pausa  'mientras se de la comparacion

DelayMS 1  'pausa, base de tiempos de referencia 1mSeg.

timer1 = timer1 + 1  'incrementa contador, lleva el tiempo

If alu1 = 1 Or alu2 = 1 Then timer1 = pausa  'si es cierto termina while

Wend  'acota el while

If alu1 = 1 Then GoTo eexit1'_________ SI SE CUMPLE NO PERMITE QUE SE EJECUTE EL CIERRE DEL GOSUB -> RETURN
If alu2 = 1  Then GoTo eexit2_________ SI SE CUMPLE NO PERMITE QUE SE EJECUTE EL CIERRE DEL GOSUB -> RETURN

Return  'retorna al programa     


-----------------------------------------
Estas dos lineas:

If alu1 = 1 Then GoTo eexit1
If alu2 = 1  Then GoTo eexit2

No pueden ir en esta parte del programa ya que si se cumplen  no permiten que se ejecute el Return del Gosub.

PD. Creo que al principio las puse de esta manera por equivocacion. Lo mismo tomaste el programa antes que lo corrigiera.
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 09 de Septiembre de 2008, 13:27:23
listo ya esta correjido
nuevamente gracias  :g)

ok creo que me emocione antes de tiempo boy a revisar el programa a profundidad porque estamos quedando mal con el súper master  :?
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 09 de Septiembre de 2008, 14:05:32
pues no se ya probe en la vida real el programa y funciona por demas perfecto.
ahora tambien lo probe sacando esa lineas de alli (las probe en varios lugares ) y no funciona igual es decir no se detiene en el led indicado,se detiene brincando uno mas. popr ejemplo si se preciona cuando va en el munero 4 ,se enciende hasta el 5.
no se,no se .
yo como que veo que no se puede quedar colgado por que siempre al final se va a main.
no se, no se   :8} :8} esta impotencia que siento me estresa y me deprime.
por que por mas que busco y leo no encuentro nadaaaaaa.
saludos  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 10 de Septiembre de 2008, 13:31:49
En la simulación del programa que puso navaismo no observe ese fallo, de todas formas te recomiendo que definas sobre papel lo que quieres que haga el programa y lo realices utilizando los nuevos conocimientos, sin usar goto ni delay, ya que seguir con un programa tan mal estructurado para serte sincero me da pereza y a mi entender no progresas en la estructuración del código que es fundamental. De esta forma vas cambiando el chip hacia una estructura de programación básica mas acertada que con el tiempo te permitirá añadirle tus propias particularidades y manías.
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 11 de Septiembre de 2008, 17:05:42
Animo karina no te desanimes en todo lo que hemos visto en este hilo tienes lo necesario para que tu programa funcione.
Todo esto es cuestión de practicar y coger experiencia si  para ti tu programa funciona bien pues móntalo y con el tiempo empezaran a aparecer los errores que ahora no ves y es también una forma de aprender.
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 12 de Septiembre de 2008, 23:38:03
hola,hola pues nada que resulta que ya construi el dispositivo (nada de simulacion) y hasta ahora lleva 3 dias funcionando a la perfeccion cabe mencionar que no lo he apagado para nada y pienso apagarlo hasta el domingo por la noche y la verdad no creo que falle por que 72 horas encendido y no ha pasa nada ni se ha colgado ni se calienta ni nada  :-/  :-/  :-/
esperemos hasta el domingo y les aviso como funciono el programa maaaal estructurado .
bye,bye  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 13 de Septiembre de 2008, 15:00:21
Karina se que te hemos dado duro y que dan ganas de responder al menos una, pero siempre hay que hacerlo con bases y sobre todo la principal virtud de una persona es la humildad..
Como lo e mencionado siempre todos los que formamos parte de esta comunidad dedicamos parte de nuestro tiempo intentando ayudar a los demás, por lo cual no ganamos nada, mas que la satisfacción de retribuir un poco lo que este maravilloso foro nos a dado, la oportunidad de hacer amigos y en algunos casos mas que amigos hermanos, que aunque la mayoría de las veces nos separa un océano o un continente  para el corazón no hay distancias.
La razón de reiterarte en varias ocasiones que el programa tiene inconsistencias que en algún momento pudieran hacer que funcione erráticamente, o se cuelgue es por que así es. como te mencione estos detalles tal vez no los puedas ver ahora  pero ahí están  contéstame con sinceridad te atreverías a vender el programa que as echo??.
Te lo digo sin el afán de ofenderte  en mis inicios realice varios programas  que juraría funcionaban perfecta mente,  y  cuando los reviso me muero de la vergüenza  por que ahora puedo ver errores del tamaño de una montaña y que de haber instalado dicha aplicación ahora estaría en la cárcel por fraude u  homicidio in prudencial.
De alguna manera al tomarte como mi pupila me ciento responsable por el tono de tu respuesta así que pido una muy sincera y sentida disculpa  a todo aquel que con la única intención de ayudar se allá sentido lastimado u ofendido
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 13 de Septiembre de 2008, 15:09:23
¿Como Sandrita? La respuesta de Karina al menos Yo no la veo ni ofensiva ni arrogante, creo que lo que intenta Kari es probar lo que ha hecho y con entusiasmo compartirlo con nosotros y creo que mas contigo. Para nada pienso que sea una burla o un reto solo que demuestra que por demas loco este el programa funciona como ella quiere.

Tienes mucha razon en las demas cosas que dices, sobre checar el programa, aprender a limpiar rutinas etc. Pero por ahora imagino y recuerdo el entusiasmo que significa hacer un programa tangible, que lleva 72 hrs conectado y funcionando como realmente lo esperaba. a poco no es casi orgasmico ver tu proyecto asi. Hace poco casi "mojo mi pantaleta" -es una expresion eh!!- por ver como pingeaba un PIC y el prog estaba medio mal pero jalo ya despues vino lo que tu dices limpiar la porqueria.

Pero hombre! perdon, mujer no seas tan dura con tu pupila, ya imagino como seras con tus hijos o tu novio sss :S

Saludos
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 13 de Septiembre de 2008, 15:52:06
uppps ofendi a halguien? si fue asi pido de la forma mas humilde me perdonen, pero no creo  que alla ofendido a nadie .ummmmm
tal vez aqui  " les aviso como funciono el programa maaaal estructurado " es que si en verdad  yo estoy conciente de que esta maaal estructurado
pero en la practica funciona  F E R F E C T A M E N T E con casi 90 horas ininterrupidas de funcionamiento.
y por el contrario yo estoy eternamente agradecida con todos ustedes y no me atreveria a ofender a nadie absolutamente a nadie.
como creen que voy a moder la mano de un(os) amigo(os).
gracias:
sandra
doppel
firepic
navaismo
dogflu66
en fin  a T O D O S en este foro
y cambiando de tema
 el domingo por la noche les aviso que paso con ese "programa mal estructurado"   perdon con ese programa
bye,bye  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 13 de Septiembre de 2008, 16:18:45


 a poco no es casi orgasmico ver tu proyecto asi. Hace poco casi "mojo mi pantaleta" -es una expresion eh!!- por ver como pingeaba un PIC y el prog estaba medio mal pero jalo ya despues vino lo que tu dices limpiar la porqueria.

Pero hombre! perdon, mujer no seas tan dura con tu pupila, ya imagino como seras con tus hijos o tu novio sss :S

Saludos


Hermano cada quien es libre de tener sus orgasmos como mejor le parezca  8) y mojar lo que le de la gana :-) aunque yo personalmente te recomendaría algo en algodón   y sin encajes. :D :D :D :D :D
Me enorgullece mucho que tengas la confianza de abrir tu corazón y contarnos tus intimidades tuyas de ti. :mrgreen:
Nota: solo es broma por aquello de evitar los malos entendidos un abraso :D :D :D :D :D :D

De mi parte no hay problema reconozco que entendí mal la línea mencionada
Maaaaaal  estructurado
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 13 de Septiembre de 2008, 23:14:27
 :D :D :D, parece que esas dos palabrejas llegaron un poco mas lejos de su importancia real. El que un programa este mal estructurado no quiere decir que no realice su función correctamente, es sabido que si algunas rutinas no terminan de una manera determinada pueden agotar los recursos del sistema ya que no liberalizan memoria o simplemente no liberalizan recursos en general. En tu caso puede que el compilador que usas por características propias tenga una plantilla interna determinada que no permita la absorción de memoria de una de sus rutinas primitivas (recuerda que para nosotros un comando solo ocupa una línea pero internamente puede estar compuesto de muchas instrucciones maquina), pero aun que el programa funcione no deja de ser un uso incorrecto del comando. Y este tipo de recomendaciones no son mas que eso recomendaciones que normalmente se basan en fallos ya cometidos anteriormente por uno mismo y que lo que se intenta es abreviarte el periodo de aprendizaje evitándote curvas en el camino eliminado malos avitos que se adquieren rapidamente y se dejan muy lentamente.

Esto como mejor se ve es con ejemplos:

El modulo UART  de los PIC se utiliza para transferencia serie de datos, este modulo puede trabajar de forma independiente al PIC, cuando trabaja en modo Rx o recepción de datos tiene un pequeño búfer para almacenar los datos que esta recibiendo hasta que el PIC los lea y los procese, en principio no tiene que suceder ningún problema los datos que entran a su búfer el PIC los va sacando de el  y procesándolos de esta forma podríamos decir que hay buena sintonía entre PIC y modulo UART, podrían trabajar en teoría de esta forma indefinidamente. Pero el problema en este caso se tiene cuando los datos llegan al búfer en un momento determinado mas rápido de lo que el PIC los extrae,  esto provoca que el búfer se llene y la respuesta del modulo es la activación de un flag de error y el bloqueo del modulo en modo Rx, hasta que este error sea procesado por una rutina que nosotros programáramos que se en carga de detectar el fallo y corregirlo. Bien,  llegado a este punto podemos trabajar sin  necesidad de  implementar esta rutina y puede que no tengamos problemas nunca o puede que en un momento dado lleguen mas datos de los  que puede procesar el PIC y este modulo quede bloqueado quedando inutilizado nuestro canal de datos de entrada.

Otro ejemplo real, no hace tanto estuve trabajando con una plaquita que entre otras cosas detectaba pulsos en una de sus entradas y los cambiaba de medio transmitiéndolos a otra plaquita, pues cuado ya llevaba como 1 mes trabajando con ellas a punto de dar el visto bueno, resulta que observo que a los 255 pulsos exactos la placa empezaba a hacer cosas raras. Hay que tener en cuenta que lo pulsos eran muy esporádico tan solo algunos pocos a la semana y por supuesto era fallo de soft.  En fin no sé si con estos últimos párrafos aclaro algo o lo lió más.

En  mi tierra hay un refrán que dice “Hacer caso al maestro aunque este parezca tonto” y por supuesto lejos de ser maestro y espero lejos también de tonto. :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 17 de Septiembre de 2008, 13:39:55
hoooolaaaaa buenos dias a todas y todos  .
pues bien les cuento que que el dispositivo "chamaco bocon" funciono de las mil maravillas despues de casi 120 horas de funcionamiento ininterrupido  :-/  :-/
y pruebas y bruebas y pruebas todas exitosas gracias a  todos ustedes .
dogflu gracias muchas gracias por tus consejos los tomare muy en cuenta.

 :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 17 de Septiembre de 2008, 13:49:11
haaaaaa se casi se olvidaba seria muy bueno que alguien le entrara al torito y pusiera algunos ejemplos de como decirle al micro que deje  lo que esta  haciendo y se valla a otra rutina.
ahora si bye bye y gracias por las lecciones tecnicas y de vida gracias mil   :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 17 de Septiembre de 2008, 15:27:33
Que paso karina  que tal si ese trompo te lo echas tu a la uña y entre todos vamos viendo
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 17 de Septiembre de 2008, 21:23:30
Versión del programa del juego para el Basic del PSI:

Código: Visual Basic
  1. Define CONF_WORD = 0x3f09  'configuracion de bit
  2. Define CLOCK_FREQUENCY = 4  'frecuencia de trabajo
  3. '************* Adaptado by COS para PSI *************************
  4. '******** Juego: Quien pulsa la tecla más rapido ****************
  5. '****************************************************************
  6. '*  Name    : UNTITLED.BAS                                      *
  7. '*  Author  : KARINA RICO                                       *
  8. '*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
  9. '*          : All Rights Reserved                               *
  10. '*  Date    : 08/09/2008                                        *
  11. '*  Version : 1.0                                               *
  12. '*  Notes   :                                                   *
  13. '*          :                                                   *
  14. '****************************************************************
  15. 'device = 16f628a
  16. 'reminders = False
  17. 'Config intrc_osc_noclkout, _  'Internal Oscillator
  18. 'wdt_off, _  'Enable watch dog timer
  19. 'pwrte_on, _  'Enable power up timer
  20. 'mclre_off, _  'Enable MCLR pin
  21. 'boden_off, _  'Enable brown out detect
  22. 'lvp_off, _  'Disable Low voltage programming mode
  23. 'data_cp_off, _  'Disable data code protect
  24. 'cp_off  'Disable code protect
  25. 'reminders = True
  26. 'watchdog = off
  27. 'xtal = 4
  28. '---------------
  29. 'Define SIMULATION_WAITMS_VALUE = 1  'Ignora los valores de WaitmS
  30. '---------------
  31. AllDigital  'los pin como I/O digitales
  32. TRISA = %00010110  'configura puerto A
  33. TRISB = 0  'configura puerto B
  34. PORTA = 0  'Estado pin de puerto A
  35. PORTB = 0  'Estado pin puerto B
  36. '---------------
  37. Dim i As Byte  'contador luces de progreso de juego
  38. Dim pausa As Word  'establece el tiempo de pausa
  39. Dim x As Byte  'contador parpadeo luces de fin de juego
  40. Dim tecla_off As Bit  'anula/permite lectura de teclas durante la pausa
  41. Dim blink_off As Bit  'anula/permite parpadeo de led fin tiempo del juego
  42. '---------------
  43. Symbol prof = PORTA.4  'renombra el puerto
  44. Symbol alu1 = PORTA.1  'renombra el puerto
  45. Symbol alu2 = PORTA.2  'renombra el puerto
  46. '---------------
  47. main:
  48.         tecla_off = 1  'activa lectura de teclas durante las pausas
  49.         blink_off = 1  'activa el parpadeo de fin de juego
  50.         If prof = 1 And alu1 = 0 And alu2 = 0 Then Gosub cont  'activa partida
  51. Goto main
  52. End                                              
  53. '----Subrutinas---
  54. '-----------------
  55. cont:  'control trayectoria del juego
  56.         i = 0
  57.         PORTA = 0  'apaga luces de proceso de tiempo del juego
  58.         PORTB = 0  'apaga luces de proceso de tiempo del juego
  59.         pausa = 2000  'determina una pausa en mSeg.
  60.         Gosub m_pause  'hace la pausa anterior, salto con retorno
  61.         While i < 10  'bucle, se repite mientras i es menor que 10
  62.                 Select Case i  'segun el valor de i, se toma una acción
  63.                         Case 0
  64.                                 PORTA.3 = 1  'enciende led menos significativo tiempo juego
  65.                         Case 1
  66.                                 PORTA.0 = 1
  67.                         Case 2
  68.                                 PORTB.0 = 1
  69.                         Case 3
  70.                                 PORTB.1 = 1
  71.                         Case 4
  72.                                 PORTB.2 = 1
  73.                         Case 5
  74.                                 PORTB.3 = 1
  75.                         Case 6
  76.                                 PORTB.4 = 1
  77.                         Case 7
  78.                                 PORTB.5 = 1
  79.                         Case 8
  80.                                 PORTB.6 = 1
  81.                         Case 9
  82.                                 PORTB.7 = 1  'enciende led más significativo tiempo de juego
  83.                 EndSelect  'acota select case
  84.                 pausa = 2000  'carga el tiempo a contar en el timer
  85.                 Gosub m_pause  'hace pausa, salto con retorno
  86.                 If alu1 = 1 Then Gosub eexit1  'pulsó jugador 1
  87.                 If alu2 = 1 Then Gosub eexit2  'pulsó jugador 2
  88.                 If i = 9 And blink_off = 1 Then Gosub blink  'si llegamos al ultimo case sin pulsar
  89.                 i = i + 1  'contador control case y bucle
  90.                 If blink_off = 0 Then i = 10  'termina bucle while
  91.         Wend  'acota bucle While i
  92. Return                                            
  93. '-----------------
  94. eexit1:  'al pulsar jugador 1
  95.         PORTA.6 = 1  'activa led jugador 1
  96.         tecla_off = 0  'anular lectura de teclas durante la pausa
  97.         blink_off = 0  'anula blink
  98.         pausa = 2000  'determina el tiempo de pausa
  99.         Gosub m_pause  'hace pausa, salto con retorno
  100. Return                                            
  101. '-----------------
  102. eexit2:  'al pulsar jugador 2
  103.         PORTA.7 = 1  'activa led jugador 2
  104.         tecla_off = 0  'anular la lectura de teclas durate la pausa
  105.         blink_off = 0  'anula blink
  106.         pausa = 2000  'determina la pausa
  107.         Gosub m_pause  'hace la pausa, salto con retorno
  108. Return                                            
  109. '-----------------
  110. blink:  'parpadeo led por fin del case, se agoto el tiempo de juego
  111.         tecla_off = 0  'anular lectura de teclas durante la pausa
  112.         For x = 0 To 10  'cabecera bucle
  113.                 PORTB = 255  'luces indicadoras de tiempo de juego a on
  114.                 PORTA = 9  'lices indicadoras dde tiempo de juego a on
  115.                 pausa = 200  'determina una pausa
  116.                 Gosub m_pause  'hace la pausa, salto con retorno
  117.                 PORTB = 0  'luces indicadoras de tiempo de juego a off
  118.                 PORTA = 0  'luces indicadoras de tiempo de jeugo a off
  119.                 pausa = 200  'determina una pausa en mSeg.
  120.                 Gosub m_pause  'hace la pausa, salto con tenorno
  121.         Next x  'acota for x
  122. Return                                            
  123. '-----------------
  124. m_pause:  'rutina de pausa especial, timer por soft + teclas
  125. 'pausa = 1  'acorta el tiempo de la simulacion
  126.         While pausa > 0  'mientras se de la comparacion, bucle
  127.                 WaitMs 1  'delayms 1  'pausa, base de tiempos de referencia 1mSeg.
  128.                 pausa = pausa - 1  'incrementa contador, lleva el tiempo
  129.                 If tecla_off = 1 Then  'controla la lectura de teclas durante la pausa
  130.                         If alu1 = 1 Or alu2 = 1 Then pausa = 0  'si es cierto termina while
  131.                 Endif  'fin del if anterior
  132.         Wend  'acota el while
  133. Return  'retorna al programa                      
  134. 'Fin
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 19 de Septiembre de 2008, 17:27:18
Pues bueno mi participación en este hilo con los ejemplos que había prometido queda pendientes asta que  tenga la posibilidad de armar un programador definitivo y estable
(pcb y toda la cosa) ya me arte de la maldita placa perforada :x
Y el proteus nunca me ha gustado así que  asta muy pronto (espero) :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 22 de Septiembre de 2008, 16:14:13
pues bien despues de casi una semana de arduo trabajo por fin hoy fue la prueba definitiva del proyecto "chamaco bocon" si hoy  fue el primero de muchos concursos que se llevaran acabo en la secundaria de mi hermano y quiero decirles y agradecerles que gracias a ustedes fue un exito, los prefesores y padres de familia estuvieron maravillados con tal artilugio.
a continuacion se los describire brememente:
1 mesa de  1.5 mts en el frente 10 focos de 12volts  con una cuvierta de plastico rojo cada uno  y detras de la mesa 2 push booton (uno para cada chamaco)
   cabe mencionar que los focos los acople al pic por medio de 2 circuitos integrados  ULN2003
1 caja de madera de 40 cm por 40 cm por 13cm de alta con un push booton en el centro ( para el profe que hace las preguntas) conectada  a la placa que llava el pic
   con un cable de aprox 3 mts.
   todo esto alimentado por una fuente de pc (en cuanto pueda pongo el video).
nuevamente gracias a todas y todos en este foro.
gracias dogflu excelente programa en cuanto tenga tiempo cambio el programa al pic.
madrina ya apurate no?  :D  :D ( no no es cierto cuando puedas te esperamos).
saludos  bye bye  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 23 de Septiembre de 2008, 13:32:38
Felicidades por el proyecto ya veras que dentro de poco superaras por mucho el mismo  :-/ :-/
Título: Re: interesante (proyecto con pic y led)
Publicado por: firepic en 23 de Septiembre de 2008, 16:57:52
Bueno Karina, muy bueno el que hayas terminado el trabajito! Felicitaciones!
Una fotico de cómo quedó no vendría mal eh... anda, déjanos ver!  :)
Cuídate mucho, un cordial saludo!  :mrgreen:
Título: Re: interesante (proyecto con pic y led)
Publicado por: brad pic en 15 de Octubre de 2008, 19:06:38
que ha pasado?  por que no continuaron este hilo que habia seguido desde sus inicios
espero lo continuen pronto arriba echenle ganas.
Título: Re: interesante (proyecto con pic y led)
Publicado por: navaismo en 15 de Octubre de 2008, 19:34:49
Que yo sepa quedo terminado, con el ultmo programa ue puso Karina le funciono y a que quieres que le echemos ganas?
Título: Re: interesante (proyecto con pic y led)
Publicado por: sandra en 16 de Octubre de 2008, 13:24:04
 :shock:
Título: Re: interesante (proyecto con pic y led)
Publicado por: Nocturno en 16 de Octubre de 2008, 13:35:08
Venga, Sandrita, que ni todo es tan negro, ni por supuesto tampoco tan blanco.
Creo que lo importante es aprender a apreciar las cosas buenas consiguiendo que te resbalen las malas. Cuando consigues ignorar las preguntas de quienes no se molestan en buscar primero, verás cómo las satisfacciones compensan el esfuerzo de compartir los conocimientos, porque siempre hay alguien que algún día puede utilizar lo que tú has publicado y algunas veces incluso te da las gracias.
Título: Re: interesante (proyecto con pic y led)
Publicado por: KARINA83 en 16 de Octubre de 2008, 15:04:06
vamos madrina no te enojes que eso a nosotras nos hace mal (nos salen arrugas y eso no esta bien) :D
por otro lado "brat pic"( brat pic? que chistoso) :D pues si esta mal en exigir algo sin aportar nada (chin y yo que he aportado?)  :mrgreen:
ahora que lo pienso yo he sido igual que el pido y pido y no aporto nada y eso me hace sentir un poco mal.
pero ya les prometi y ahora me conprometo con uds en estudiar y estudiar y luego leer y leer.
solo espero y les pido no me dejen caminar sola y cuando me caiga ayudenme a levantarme y jalen de mis orejotas  y diganme asi no KARINA que yo vivire eternamente agradecida con todos uds. y en especial (ya saben quienes) y ya no sigo por que me estan traicionando los ojos  :8}
recivan abrazos y besos  :g)
Título: Re: interesante (proyecto con pic y led)
Publicado por: inspector gadget en 14 de Junio de 2011, 22:32:23
Saludos amigos del foro. Es la primera vez que ingreso asi que espero que mi pregunta sea clara para ustedes que tan amablemente han compartido su sabiduria y experiencia con los que estamos iniciando con la programacion en pic bsic. Uso el pic 16f628A ,se trata de leer el estado de un pulsador, encender un led por un segundo y que luego se apague. Hasta aqui todo marcha bien, pero si lo que quiero es que con otro pulsador conectado a rb1, al presionarlo 1 vez, el programa inicie y realice su rutina y se mantenga en ese estado hasta presionarlo nuevamente donde el programa se detendra y asi sucesivamente. Esto solo con aplicarle un pulso negativo a rb1. (on-off). La verdad lo he intentado con IF- THEN pero esta instruccion requiere que el pulso o estado siempre esté presente y pretendo usar un pulsador no un swiche. Espero me puedan ayudar con sus siempre utiles sugerencias mil gracias.
cmcon =7
pro:
if porb.3 =0 then encen
goto pro
encen:
high porta.1
pause 1000
low porta.1
goto pro
end
 
   
Título: Re: interesante (proyecto con pic y led)
Publicado por: dogflu66 en 18 de Junio de 2011, 06:46:12
No te entiendo, pero mira a ver si este ejemplo te sirve para seguir trabajando.

Código: Visual Basic
  1. ALLDIGITAL
  2. CMCON = 7
  3. Dim flag As Byte  'Variable de control de estado
  4. flag = 0
  5. main:
  6.         If RB1 = 0 Then flag = 0  'Apaga el parpadeo del led
  7.         If RB3 = 0 Then flag = 1  'Activa el parpadeo del led
  8.         If flag = 1 Then Gosub encen
  9. Goto main
  10. End                                              
  11. encen:
  12.         High PORTA.1
  13.         WaitMs 500
  14.         Low PORTA.1
  15.         WaitMs 500
  16. Return                                            
  17. 'End