TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: jim_17 en 05 de Diciembre de 2007, 16:11:56

Título: Empecemos con un Cursillo del compilador Pic Simulator IDE Basic.
Publicado por: jim_17 en 05 de Diciembre de 2007, 16:11:56
Con el permiso de dogflu y los moderadores me gustaria empezar un mini cursillo de comandos basicos del programa pic simulator ide con ejemplos y explicando las dudas que pueda tener el personal (aunque yo sea un principiante, un noob  :?). Hago esto por que personalmente me costó mucho encontrar informacion, codigos y esquemas sobre este compilador y me gustaria ayudar a la gente que empieza la programacion con pic como yo.

El programa para simular será el programa Isis de Proteus 7 professional.
El programa para crear el codigo en basic y compilarlo sera el PIC SIMULATOR IDE.
Recomiendo que miren un poco esta web ucontrol (http://www.ucontrol.com.ar) para las personas que quieran aprender mas cosas a parte de las que haremos en el cursillo, quiero destacar que hago el cursillo en calidad de aprendiz, ire explicando las cosas que voy aprendiendo con los topic de este foro y las diferentes paginas web que hay en internet, pero con esquemas hechos y codigos hechos por mi, naturalmente no me gusta copiar codigos, por que copiando no se aprende.

El mini cursillo seria el siguiente:

1. Encender y apagar led. (hecho pagina1)
2. Parpadeo de led. (hecho pagina1)
3. Encender led en funcion de un pulsador. (hecho pagina1)
4. Utilizar matriz de led. (hecho pagina1)
5. Utilizar matrid de led con un 74ls164 (registro de desplazamiento 8bit) (hecho pagina1)
6. Utilizar display 7 segmentos con pic. (contador 0 9 hecho pagina1)
7. Utilizar display de 7 segmentos con pic + 74ls164 (registro de desplazamiento 8bit)
... (lo que vaya surgiendo).


¿ Que opinais al respecto ?




Correjido el fallo ortografico (gracias a dogflu), cambiado el "echo" por "hecho" ya que hacer se escribe con "h" y esta "h" la conservan todos sus derivados 
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 05 de Diciembre de 2007, 16:44:05
Si, me pase por su tema, y ha hecho un trabajo muy bueno, pero creo que (sin despreciar el gran trabajo que ha echo) ahi se maneja mas la funcion de lcd y no tanto las otras multiples funciones cuotidianas que existen en el compilador. No entiendo lo que quieres decir on empatar su tema, me lo puedes explicar ?  :-/
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: aitopes en 05 de Diciembre de 2007, 17:22:16
Hola Jim!
Adelante con el poryecto, ayudare en lo que pueda. (y probablemente te "robe" algunos ejemplos para mejorar el "cursillo" que tengo en uControl ;).

Aqui va  el primer ejemplo:

ENCENDER Y APAGAR UN LED a una frecuencia de 1 HZ:

El PIC es un 16F627A (o 628A, o648A, o casi cualquiera de 18 pines). El LED esta con su anodo en PORTB.0, y tiene el catodo conectado a GND.

Código: [Seleccionar]

 TRISB = %00000000 'Declaro TODO el puerto B como salidas.

 loop: 'Comienzo un bucle. Esta es solo una etiqueta "a la que puedo saltar".

   PORTB.0 = 1  'Pongo el pin en alto, el led enciende.
   WaitMs 500   'Espero medio segundo

   PORTB.0 = 0  'Pongo el pin en bajo, el led se apaga.
   WaitMs 500   'Espero medio segundo

 Goto loop 'Salto a la etiqueta "loop", y recomienza el bucle.

END 'Fin del ejemplo


Saludos!  :mrgreen:
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 05 de Diciembre de 2007, 17:32:11
Aitopes felicitaciones con tu pagina web, me ayudo mucho a comprender el desplazamiento de registro. Espero que el año que viene pueda ayudar mas al foro por que ya estaré estudiando ingenieria electronica. Aqui os va una foto del esquema con el conocido 16f84a con el codigo de aitopes.

Si alguien no comprende lo que es frecuencia 1hz os lo explico:    frecuencia = 1/tiempo que tarda en hacer un ciclo--->  por lo tanto el tiempo en hacer un ciclo = 1s -----> un ciclo = encender una vez el led y apagarlo, es decir, la mitad de tiempo para encender el led 500ms y la otra mitad para apagarlo 500ms.

(http://img90.imageshack.us/img90/9053/screenshot149ey5.th.jpg) (http://img90.imageshack.us/my.php?image=screenshot149ey5.jpg)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 05 de Diciembre de 2007, 17:58:08
Aqui os pongo un ejemplo mas de como encender un led dependiendo del estado de un boton. Si el boton esta activado el led se enciende, si esta apagado el led se apaga. (Estas seran las funciones basicas, las pasaré rapido, si hay alguna duda preguntad)
Código: [Seleccionar]
' Encender un led en funcion de '
' un boton pic 16f84a '
'''''''''''''''''''''''''''''''''''''

TRISA = %00000001 'Establecemos el pin RA0 como pin de entrada
TRISB = %00000000 'Establecemos todos los pines del puertoB como salidas
PORTB = %00000000 'Empezamos poniendo el puerto b a 0 (led apagado)

main: 'programa principal (cadauno pone la etiqueta que quiere)
If PORTA.0 = 1 Then  ' Si el pulsador esta activado enciende el led
High PORTB.0 'Tambien podemos utilizar portb.0 = 1
Else ' Si el pulsador no esta activado el led no se enciende
Low PORTB.0 'Tambien podemos utilizar portb.0 = 0
Endif
Goto main
End                                               


(http://img98.imageshack.us/img98/4845/screenshot150ck1.th.jpg) (http://img98.imageshack.us/my.php?image=screenshot150ck1.jpg)

De momento eso es todo.



Salu2
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: aitopes en 05 de Diciembre de 2007, 18:21:12
Otra forma de hacer lo mismo que el ejemplo anterior, pero más rapido y con menos codigo:

Citar
'   Encender un led en funcion de   '
'      un boton pic 16f84a   
' Version 2
'''''''''''''''''''''''''''''''''''''

TRISA = %00000001    'Establecemos el pin RA0 como pin de entrada
TRISB = %00000000    'Establecemos todos los pines del puertoB como salidas
PORTB = %00000000   'Empezamos poniendo el puerto b a 0 (led apagado)

main:    'programa principal (cadauno pone la etiqueta que quiere)
    PORTB.0 = PORTA.0  'Copio en el pin del led el estado del pulsador...
goto main
End 
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 05 de Diciembre de 2007, 19:12:37
Tienes toda la razón. Maneras de hacer un "programa" hay miles, la cuestion esta en encontrar la propia.

Mañana si puedo pasaré los temas 4 y 5 en el foro, porque creo que esto es muy basico y la gente no entra mucho y asi poder seguir con algo mas avanzado.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: dogflu66 en 05 de Diciembre de 2007, 19:48:33
Si, me pase por su tema, y ha echo un trabajo muy bueno, pero creo que (sin despreciar el gran trabajo que ha echo) ahi se maneja mas la funcion de lcd y no tanto las otras multiples funciones cuotidianas que existen en el compilador. No entiendo lo que quieres decir on empatar su tema, me lo puedes explicar ?  :-/

Cuando te dijeron lo de "empatar su tema", El moderador se referia a no iniciar temas redundantes, ya que entre otras muchas funciones la de
un moderador es la de intentar mantener el foro ordenado, con esto tambien se refiere a que ningun hilo es propiedad de nadie, ni siquiera del
que lo creo, un hilo puede ser continuado por uno o mas foreros, simplemente tiene que tener en cuenta que la continuacion
del hilo este relacionada con el tema abierto previamente.

PD. Esto solo lo aclaro como moderador que soy tambien de este nuestro y magnifico foro Todopic.

De todas formas tengo que aclarar que el hilo anterior sobre el PSI, es un hilo que se basa en una placa entrenadora,
por lo que todos sus ejemplos se mueven al rededor de este hard, siendo el lcd uno mas de sus dispositivos, si se sigue
indagando en el hilo se puede ver que toma una nueva direccion para interactuar con la pantalla y teclado del pc entre
otras cosas.
En realidad nunca tuve la intencion de que fuera un hilo basico, ya que lo que se expone es lo que se suele buscar
con los pic y que se suele tardar incluso años en conseguirlo.

Y por supuesto tienes todo mi apoyo a este nuevo hilo.... ASI QUE ANIMO Y ADARLE DURO... :-)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 05 de Diciembre de 2007, 20:04:56
Thanks, mi intención haciendo esto es facilitarle la busqueda a la gente que empieza como yo, y haciendo esto tambien aprendo y asi me obligo a aprender.

Como ya tengo otro esquema preparado os paso la matriz de led 2 X 8 (dos filas, ocho columnas)

Led parpadeando.
Aquí teneis el código:

Código: [Seleccionar]
TRISA = 0 'puerto A como salida
TRISB = 0 'puerto B como salida
Symbol fila1 = PORTA.0  'establecemos fila1 = porta.0
Symbol fila2 = PORTA.1 'establecemos fila2 = porta.1
Dim parpadeo As Byte 'variable parpadeo como byte
Dim reset As Byte 'variable reset como byte
Dim i As Byte 'variable i como byte
PORTA = 0 'todo el puerto a = 0
PORTB = 0 'todo el puerto b = 0

main: 'etiqueta programa principal
Gosub reset 'apaga todos los led
High fila1  'encendemos la fila 1 y vamos variando portb
Gosub parpadeo 'enciende y apaga el led
Low fila1 'apaga la fila1 para empezar con la fila2
Gosub reset
High fila2
Gosub parpadeo
Low fila2
Goto main  'hacemos un bucle para que el parpadeo sea constante
End     
                                         
reset:
PORTA = 0 'porta = 0 apagamos todas las filas
PORTB = %11111111 'portb = %11111111 porque los led se encienden cuando portb.n = 0 el portb actua de masa
Return                 ' volvemos para continuar con el codigo
                                         
parpadeo:
PORTB.0 = 0  'lo ponemos a 0 para prender el 1r led
WaitMs 200 ' esperamos 200 ms para ver el led encendido
PORTB.0 = 1 ' con un 1 apagamos el led
PORTB.1 = 0 'hacemos lo mismo con los led de al lado
WaitMs 200
PORTB.1 = 1
PORTB.2 = 0
WaitMs 200
PORTB.2 = 1
PORTB.3 = 0
WaitMs 200
PORTB.3 = 1
PORTB.4 = 0
WaitMs 200
PORTB.4 = 1
PORTB.5 = 0
WaitMs 200
PORTB.5 = 1
PORTB.6 = 0
WaitMs 200
PORTB.6 = 1
PORTB.7 = 0
WaitMs 200
PORTB.7 = 1
Return  'volvemos del sub para continuar con el codigo

(http://img156.imageshack.us/img156/3079/screenshot151zc7.th.jpg) (http://img156.imageshack.us/my.php?image=screenshot151zc7.jpg)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: navaismo en 05 de Diciembre de 2007, 20:41:52
Podrias intentar hacerlo dentro de Un FOR y ver si tu compilador tiene la opcion Toggle para minimizar el codigo.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: dogflu66 en 05 de Diciembre de 2007, 20:59:24
Otro de lo mismo, pero este insertado como "codigo freebasic"

Código: FreeBasic
  1. '**********************************************************
  2. 'Led intermitente******************************************
  3. '**********************************************************
  4. AllDigital  'todos los pin como I/O
  5. TRISB.0 = 0  'PIN Puerto RB0 como salida
  6. Symbol led = PORTB.0  'Se asigna nombre al pin 0 del port B
  7. main:  'Nuestro Programa
  8.         High led  'Enciende el led, Polariza Anodo
  9.         Gosub espera  'Salto con retorno a la rutina de espera
  10.         Low led  'Apaga el led, Polariza Anodo
  11.         Gosub espera  'Salto con retorno
  12. Goto main  'Hace que nuestro programa no termine nunca
  13. End  'Separador (interrupciones y subrutinas).    
  14. espera:  'Rutina de Pausa
  15.         WaitMs 500  'Interrumpe el programa durante medio segundo
  16. Return  'Retorna despues del salto generado por un Gosub.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 06 de Diciembre de 2007, 09:57:53
Lo que yo quiero no es que parpadee el led, sino que se vaya encendiendo un led tras otro. Ahora cuelgo como hacer un contador 0 - 9  utilizando los pines del pic.
     
a = portb.0
b = portb.1
c = portb.2
d = portb.3
e = portb.4
f = portb.5
g = portb.6


         a b c d e f  g           PORTB       Decimal
0 =    0 0 0 0 0 0 1 =    01000000  =     64
1 =    1 0 0 1 1 1 1 =    01111001  =     121
2 =    0 0 1 0 0 1 0 =    00100100  =     36
3 =    0 0 0 0 1 1 0 =    00110000  =     48
4 =    1 0 0 1 1 0 0 =    00011001  =     25
5 =    0 1 0 0 1 0 0 =    00010010  =     18
6 =    0 1 0 0 0 0 0 =    00000010  =      2
7 =    0 0 0 1 1 1 1 =    01111000  =      120
8 =    0 0 0 0 0 0 0 =    00000000  =      0
9 =    0 0 0 0 1 0 0 =    00010000  =      16


Aqui os paso el codigo y la respectiva foto del montaje en Isis

Código: [Seleccionar]
TRISA = %11111110
TRISB = %10000000
PORTA.0 = 0 ' display de anodo comun
PORTB = %01111111 ' ponemos el portb = 1 por que el display se enciende cuando le enviamos un cero al catodo
Dim i As Byte 'variable i para la funcion for

main: ' etiqueta principal
For i = 0 To 9 ' como es un contador de 0 9 utilizamos la funcion for
PORTB = LookUp(64, 121, 36, 48, 25, 18, 2, 120, 0, 16), i  ' seleccionamos el numero que queremos marcar con la funcion lookup
PORTA.0 = 1 ' si i = 1 selecciona el 121
WaitMs 100 ' encendemos porta.0 y esperamos 100 ms
Next i
Goto main 'volvemos a main para iniciar el bucle
End                                               

(http://img530.imageshack.us/img530/4646/screenshot152gc9.th.jpg) (http://img530.imageshack.us/my.php?image=screenshot152gc9.jpg)



Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 07 de Diciembre de 2007, 06:57:01
Vale, veo que no le interesa a mucha gente este mini-cursillo, pero no pasa nada, a medida que vayamos ampliando conocimientos seguramente ya le interesará a mas personas.


SE ADMITEN PROPUESTAS.           



Aqui os dejo el esquema para encender las luces de una matriz de led 8X2 una a una.

Código: FreeBasic
  1. Symbol fila1 = PORTA.0  'establecemos porta.0 como fila1
  2. Symbol fila2 = PORTA.1  'establecemos porta.1 como fila2
  3. Symbol clock = PORTB.6  'establecemos el clock como portb.6
  4. Symbol data = PORTB.7  'establecemos data como portb.7
  5. Dim reset As Byte
  6. Dim contador As Byte
  7. TRISB = %00000000  'puerto b como salida
  8. TRISA = %00000000  'puerto a como salida
  9. PORTB = %00000000  'puerto b apagado
  10. PORTA = %00000000  'puerto a apagado
  11.  
  12.  
  13. main:  'etiqueta principal
  14. Gosub reset  'enviamos 0 al registro de desplazamiento
  15. fila1 = 1  'activamos la fila 1
  16. Gosub uno  'enviamos un 1 al primer pin del registro de desplazamiento
  17. WaitMs 100  'esperamos 0.1s
  18. Gosub parpadeo  'le vamos enviando 0 al registro del desplazamiento y asi conseguimos el juego optico
  19. fila1 = 0  'desactivamos la fila1
  20. fila2 = 1  'activamos la fila2 y repetimos el mismo proceso
  21. Gosub uno
  22. WaitMs 100
  23. Gosub parpadeo
  24. fila2 = 0
  25. Goto main  'volvemos a main para continuar con el bulce
  26. End                                              
  27.  
  28.  
  29. reset:
  30. For reset = 0 To 7  'enviamos un 1 ocho veces
  31. data = 1  'los led se prenden cuando enviamos un 0 al registro de desplazamiento
  32. clock = 0       '---
  33. WaitUs 2        '---Todo lo marcado con un --- simboliza el proceso
  34. clock = 1       '--- que se sigue para enviar un uno logico al registro
  35. WaitUs 2        '---   de desplazamiento
  36. Next reset      'repetimos el enviar un 1 siete veces mas
  37. Return           ' volvemos a la rutina cuando acaba el proceso
  38.  
  39.  
  40.                                
  41. parpadeo:
  42. For contador = 0 To 7  'enviamos un uno ocho veces y asi vamos moviendo el registro
  43. data = 1        'la misma explicacion que en reset
  44. clock = 0
  45. WaitUs 2
  46. clock = 1
  47. WaitMs 100  'esperamos 100ms para mover el led encendido hacia el lado
  48. Next contador
  49. Return  'volvemos a la rutina    
  50.  
  51.  
  52.                
  53. uno:
  54. data = 0        'con este proceso enviamos un 0
  55. clock = 0       'para que se prenda el primer led
  56. WaitUs 2        'y luego poder mover el led prendido
  57. clock = 1       'con el registro de desplazamiento
  58. WaitUs 2        '
  59. Return          'volvemos a la rutina

Como dije ya una vez, hay muchas maneras de hacer un codigo ahora os pondré aqui las etiquetas de los sub reset y parpadeo con la funcion while.

Código: FreeBasic
  1. reset:
  2. reset = 0
  3. While reset < 8  'mientras reset sea menor que ocho
  4. data = 1            'el programa hara la funcion de enviar un 1 al registro de desplazamiento
  5. clock = 0
  6. WaitUs 2
  7. clock = 1
  8. reset = reset + 1  ' sumamos un uno a reset cada vez que envia un uno al registro
  9. WaitUs 2              ' de desplazamiento para que no sea un bulce infinito
  10. Wend                  ' para indicar que aqui acaba el codigo que queremos que se repita mientras
  11. Return                 ' reset sea menor que 8 --> reset < 8
  12.                           'volvemos a la rutina
  13.  
  14.                                  
  15. parpadeo:
  16. contador = 0
  17. While contador < 8    'establecemos el mismo criterio que lo explicado en reset
  18. data = 1
  19. clock = 0
  20. WaitUs 2
  21. clock = 1
  22. WaitMs 100
  23. contador = contador + 1
  24. Wend
  25. Return




(http://img142.imageshack.us/img142/4834/screenshot153or2.th.jpg) (http://img142.imageshack.us/my.php?image=screenshot153or2.jpg)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: aitopes en 07 de Diciembre de 2007, 07:14:34
Citar
Vale, veo que no le interesa a mucha gente este mini-cursillo, pero no pasa nada, a medida que vayamos ampliando conocimientos seguramente ya le interesará a mas personas.

Hola Jim!
No, no creo que sea asi. El hilo ya casi llega a las 100 visitas, y hace muy poco que esta disponible.  :mrgreen:

Por lo pronto, le voy a poner una chincheta para que este "a mano".

Y sigue asi, que es muy util tener ejemplos claros y sencillos sobre este buen BASIC. ;)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 08 de Diciembre de 2007, 12:31:04
Bueno, solamente queda un esquema mas, ya ire pensando y poniendo mas esquemas, espero que aun que sea una tonteria, si necesitais que se explique algun esquema, lo que sea, si quereis añadir algo propio al cursillo, podeis hacerlo. No me gusta que solo posteen los moderadores, eso me hace pensar que no le interesa a nadie, alomejor es que es muy basico lo que hacemos, pero si quereis hacer algo mas high pedidlo.

Aqui os va el codigo de como manejar el registro de desplazamiento para hacer un contador 0 9.

 
Código: FreeBasic
  1. Dim und As Byte  'variable de unidades
  2. Dim u As Byte  'variable u para utilizar en la funcion for
  3. Dim i As Byte  ' variable i para utilizar en la funcion for
  4. TRISA = 0  'puerto a como salida
  5. TRISB = 0  ' puerto b como salida
  6. PORTA = 0  'todos los pines puerto a apagados
  7. PORTB = 0  'todos los pines del puerto b apagados
  8.  
  9. Symbol dato = PORTB.7  ' dato sera igual a portb.7
  10. Symbol clock = PORTB.6  'clock sera igual a portb.6
  11.  
  12. main:   'etiqueta principal
  13. For i = 0 To 9  'desde 0 hasta el 9
  14. und = LookUp(126, 12, 182, 158, 204, 218, 250, 14, 255, 222), i  'buscamos el numero que queremos
  15. Gosub enviar  'enviamos los datos al registro de desplazamiento
  16. Next i  'siguiente numero
  17. Goto main  'iniciamos bucle
  18. End  'finalizamos el programa                    
  19. enviar:
  20.  
  21. For u = 0 To 7                        'enviamos 8 datos
  22.         If und.7 = 0 Then           'si el bit 7 de la variable und = 0
  23.                 dato = 1                'envia un uno al registro de desplazamiento
  24.                 clock = 0               'porque los led se encienden cuando hay un 0
  25.                 WaitUs 1                '
  26.                 clock = 1               '
  27.                 WaitUs 1                '
  28.         Else
  29.                 dato = 0                'si el bit 7 es igual a 1
  30.                 clock = 0               'envia un 0 al registro de desplazamiento
  31.                 WaitUs 1                'porque los led se encienden con un 0 logico
  32.                 clock = 1               '
  33.                 WaitUs 1                '
  34. Endif                           'finalizamos el la condicion
  35. und = ShiftLeft(und, 1)         'movemos todos los bits hacia la izquierda
  36. Next u                                          'siguiente variable 1
  37. PORTA.0 = 1                                     'una vez estan todos los bits enviados
  38. WaitMs 200                                      'encendemos porta.0 y esperamos 200ms
  39. PORTA.0 = 0                                     'luego apagamos el porta.0


(http://img106.imageshack.us/img106/7010/screenshot154aj6.th.jpg) (http://img106.imageshack.us/my.php?image=screenshot154aj6.jpg)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: aitopes en 08 de Diciembre de 2007, 15:03:03
Hola Jim!
Buenisima la ultima entrega. ¿No tienes un ejemplo de como multiplexar 3 displays de 7 segmentos? ;)

Un abrazo.

Ariel.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 08 de Diciembre de 2007, 15:45:39
Pues todavia no lo he probado, primero lo hare con dos display, contador 0 99, si os parece y luego contador 0 999. El codigo de 0 99 ayer me lo estube planteando, voy a ver si funciona ! :)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 08 de Diciembre de 2007, 20:39:18
Bueno, bueno, bueno, me estube 2h intentando descubrir un fallo que hice en el programita. El fallo era que modificaba la variable dec, y no me permanecian los numeros decimales,  :P. Aqui os dejo el esquema y el codigo. Una cosa, alguien sabe como hacer el recuadro de proteus mas grande ? estube mucho rato mirando y nada ...  :-). Si hay algo que no entendeis no dudeis en preguntar. Tambien tengo que decir que las funciones que utilizo con "for" tambien se pueden hacer con la funcion "while", mas arriba hay un ejemplo.

Aqui el codigo

Código: FreeBasic
  1. Symbol data = PORTB.7  'dato de los decimales
  2. Symbol clock = PORTB.6
  3. Dim d As Byte   'para la aplicacion for de los decimales
  4. Dim u As Byte   'para la aplicacion for de las unidades
  5. Dim i As Byte   'para la aplicacion for de envio de datos
  6. Dim e As Byte   'para la aplicaciof for de envio de datos
  7. Dim dec As Byte 'almacenaremos los datos decimales
  8. Dim und As Byte 'almacenaremos los datos de las unidades
  9. TRISA = 0       'puerto a como salidas
  10. TRISB = 0       'puerto b como salidas
  11. PORTA = 0       'puerto a apagado
  12. PORTB = 0       'puerto b apagado
  13.  
  14. main:
  15. For d = 0 To 9  'decimales del 0 al 9
  16.         dec = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), d  'buscamos el decimal
  17.                 For u = 0 To 9  'unidades del 0 al 9
  18.                         und = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), u  'buscamos la unidad
  19.                         PORTA.0 = 0  'apagamos porta para enviar los datos
  20.                         Gosub enviar2  'enviamos primero los datos de las unidades
  21.                         Gosub enviar1  'luego enviamos los datos de los decimales
  22.                         PORTA.0 = 1             'encendemos los display
  23.                         WaitMs 100              'esperamos 100ms para ver el cambio rapido
  24.                 Next u                  'siguiente unidad
  25. Next d          'cuando acaba de escribir todas las unidades escribe un decimal mas y vuelve a escribir 9 unidades
  26. Goto main       'hacemos un bucle
  27. End  'finalizamos el programa  
  28.  
  29.                  
  30. enviar1:  'sub enviar1, enviamos los datos decimales
  31. For i = 0 To 7  'enviamos 8 bit de datos
  32.         If dec.0 = 0 Then       'si el bit 0 de la variable dec es igual a 0
  33.                 data = 0                'envia un cero logico
  34.                 clock = 0               'porque el display ahora se enciende con un uno logico
  35.                 WaitUs 2                'en el registro de desplazamiento
  36.                 clock = 1               '
  37.                 WaitUs 2                '
  38.         Else
  39.                 data = 1                'envia  un uno logico
  40.                 clock = 0               '...lo explicado antes
  41.                 WaitUs 2                '
  42.                 clock = 1               '
  43.                 WaitUs 2                '
  44.         Endif                           'finalizamos la funcion if
  45. dec = ShiftRight(dec, 1)        'desplazamos un bit hacia la derecha
  46. Next i                                          'next, para enviar el siguiente bit
  47. dec = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), d  'como la variable dec ha sido modificada debemos hacer que sea como anteriormente porque sino solo nos enviara 0
  48. Return  'volvemos a la rutina  
  49.  
  50.  
  51.                  
  52. enviar2:        'sub enviar2, enviamos los datos de las unidades
  53. For e = 0 To 7  'enviamos 8 bit de datos
  54.         If und.0 = 0 Then       'si el bit 0 de la variable und = 0
  55.                 data = 0                'envia un cero logico
  56.                 clock = 0               'por que el display se enciende con un uno logico
  57.                 WaitUs 2                'en el registro de desplazamiento
  58.                 clock = 1               '
  59.                 WaitUs 2                '
  60.         Else   
  61.                 data = 1                'envia un uno logico
  62.                 clock = 0               '...lo explicado anteriormente
  63.                 WaitUs 2                '
  64.                 clock = 1               '
  65.                 WaitUs 2                '
  66.         Endif                           'finalizamos la funcion if
  67. und = ShiftRight(und, 1)        'desplazamos un bit hacia la derecha
  68. Next e                                          'next para enviar el siguiente bit
  69. Return          'volvemos a la rutina


(http://img229.imageshack.us/img229/7600/screenshot155fs3.th.jpg) (http://img229.imageshack.us/my.php?image=screenshot155fs3.jpg)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: aitopes en 09 de Diciembre de 2007, 11:33:20
Hola Jim!
Buenisimo el ejemplo.

Podria mejorarse un  poquitin...utilizando solo una rutina para escribir en el display. Antes de llamarla, se carga en una variable auxiliar el valor a mostrar, y luego llamas a la rutina. Esto haria el codigo mas compacto, mas fácil de mantener, y ademas evitarias tener que volver a "reconstruir" la variable despues de usarla en la rutina...

Si puedo, el lunes posteo el programa con esas modificaciones. ;)

Saludos!
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: mundotronic en 11 de Diciembre de 2008, 09:14:17
Hola jim_17!, la verdad es una gran idea hacer este curso de PSI, ya que resulta muy util y a mi parecer de todos los basic que conozco es el mas versatil y rapido para aprender. A proposito Aitopes, debo agradecerte por hacer tan didactica uControl (http://www.ucontrol.com.ar/), desde tu sitio aprendi todo lo que se de electronica y especialmente de micros y PSI (ademas de haber hecho la entrenadora para pics de 18 pines y el modulo de 8 entradas/salidas).
Adelante con el Hilo y cuando tenga un tiempito cuelgo algunos ejemplos de los proyectos que tengo realizados.

Saludos! :-/

PD: Adelante con este hilo que a medida que avanza se pone cada vez mas interesante!
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 11 de Diciembre de 2008, 11:42:35
La verdad es que la idea del cursillo esta bien, pero lo acabe dejando porque veia que era algo muy basico y que la gente no visitaba demasiado el hilo, igualmente, podemos retomar el hilo y seguir haciendo ejemplos, solo falta que los propongais.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: Danielo515 en 13 de Febrero de 2009, 09:48:01
Muchas gracias!!
Es genial el cursillo.
Pero los esquemas ¿no están completos no? es decri, el reset y las conexiones y esas cosas no aparecen. como no estoy muy iniciado en esto, aún tengo dudas, pero supongo que será todo igual (es decir, el cristal y el interruptor del reset se conectarán siempre del mismo modo).

¿Todos los codigos son para el mismo lenguaje?

Muchas gracias.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 13 de Febrero de 2009, 18:16:56
Si Danielo, todos los códigos te servirán para utilizarlos con el PIC SIMULATOR IDE BASIC, respecto al pin de reset y el cristal, no están implementados ya que utilizaba proteus para hacer pruebas, igualmente siempre se conectan igual ;). Lamentablemente este post esta dejado ya que le vi mas utilidad estudiar el código C, pero el basic para empezar es una muy buena opción. Te animo a que continues este tema, posteando tus propios programas i/o dudas que tengas para que te podamos ayudar y para que tus códigos puedan servir de ejemplo.

Salu2.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: avefenix586 en 27 de Diciembre de 2009, 02:41:56
Hola esta muy bueno el cursillo, sugeriria como complemento al curso que se haga una traduccion al español de las instrucciones del PIC BASIC tambien  :-/
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: dogflu66 en 27 de Diciembre de 2009, 10:47:30
Aquí tienes algunos capítulos:
http://www.todopic.com.ar/foros/index.php?topic=15256.0
Y en la revista uControl puedes encontrar más.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: sonicTH en 19 de Marzo de 2010, 23:47:43
Hola que tal:

  Yo sé que el hilo del tema está casi abandonado, sin embargo les presento la siguiente inquietud.

  Comenzé a leer este tema ya que me interesó el lenguaje Basic para pics puesto que yo solamente he utilizado C. Y esto lo hize porque comencé a utilizar los PICAXES que ya muchos se han quejado y con justa razón, sin embargo los había elegido para fines didacticos en una escuela de mecánica, pero ya se me hace dificil conseguirlos además de que pues son caros. Bien, estoy usando MicroCodeStudio con PICBASIC PRO 2.5; Intenté ayudarme con el PIC Simulator Ide, sin embargo no trabaja muy bien (tal vez por el windows 7) y opté por simularlos en proteus. En fin, la pregunta en concreto es como agregarle al microcodestudio el programador WinPic800, mas específico poder utilizar el programador JDM. EL PICC trae un programa tipo ICprog, que tambiñen sería interesante agregarselo. He visto por ahí un hilo que dice como agregar el ICProg paso a paso, sin embargo este me ha estado dando problemas en windows XP apesar de poner el driver, y en windows 7 el problema es que uso un adaptador USB-SER y como que no me manda el voltaje suficiente. En fin, perdon por el post largo, espero me puedan ayudar con lo del JDM. El winpic de heco ya lo agregué y lo corre, sin embargo faltan los parámetros a agregar de $hex -  filename$ etc...
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: alexguadarrama en 24 de Agosto de 2010, 03:39:37
hola jim un gusto y exelente trabajo disvulpa tengo una duda estoy tratando de asignar una variable a una localidad de memoria en funcion de otra variable, es decir si la variable "a" tiene un valor de 8, asignar ocho diferentes variables a 8 diferentes localidades de memoria, esto dentro de una subrrutina. me explico¿? jiji ok  alguna idea sera muy agradecida gracias jim
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 01 de Septiembre de 2010, 11:44:33
Seria algo como:

If a=8 Then
          b=3
          c=4
EndIf

No se si es esto a lo que te refieres...
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: Booster en 25 de Enero de 2011, 00:29:01
Gracias por este curso, hace un par  horas no sabia nada y ahora ya entiendo casi todos los ejemplos de aca, me gustaria (si no es mucho pedir) que hicieran algunos ejemplos donde lo principal sea el uso de for, if, switch, while y otra cosa que me intriga es como usar la lcd. De nuevo mil gracias por tanto aporte.... :-/
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 14 de Julio de 2011, 19:13:39
Hola que tal para echarle una mano al amigo (jim_17) y a petición del  compañero (Booster) y por si a alguien del foro quiere empezar con este compilador que es muy bueno  y todavía no entiendo cómo usar el siclo for y el siclo if ni el siclo while pues aquí les posteare algunos ejemplos sencillos para que vallamos avanzando en este compilador.

Bueno el primer programa que posteo es  como usar el siclo for y que ce implemento en las luces del coche fantástico usando el siclo for.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 14 de Julio de 2011, 19:21:51
Define SIMULATION_WAITMS_VALUE = 10  'este instruccion es para la simulacion si lo quieren quemar en el micro solo quiten esta linea
AllDigital  'todos los pines como digitales
TRISB = %00000000  'todo el puerto B configurado como salida
Dim a As Byte  'a la pongo como variable de tipo byte
a = 0
RB.0 = 1  'pongo a 1 el pin b0 del puerto b
WaitMs 500  'le doy un retardo de 500ms
inicio:

For a = 1 To 7 Step 1  'en esta instruccion repito a a 7 veces y depues que ejecute el otro for
RB = ShiftLeft(RB, 1)  'desplazo el 1 que esta en el pin rb.0 del puerto b hacia la izquierda
WaitMs 500  'le dejo un retraso de 500ms
Next a

a = 0  'pongo a=0 para no usar otra variable
For a = 1 To 7 Step 1  'es otro bucle for que repetira 7 veces lo que esta adentro de este bucle
RB = ShiftRight(RB, 1)  'desplazo el 1 que esta en el pin rb.0 del puerto b hacia la derecha
WaitMs 500  'le doy un retraso de 500ms
Next a   
Goto inicio
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 14 de Julio de 2011, 19:29:12
Ahora el mismo programa del coche fantástico pero con instrucciones (if  then)

Define SIMULATION_WAITMS_VALUE = 10  'este instruccion es para la simulacion si lo quieren quemar en el micro solo quiten esta linea
AllDigital  'todos los pines como digitales
TRISB = %00000000  'todo el puerto B configurado como salida

RB.0 = 1  'pongo a 1 el pin b1 del puerto b
WaitMs 500  'le doy un retardo de 500ms

izquierda:
RB = ShiftLeft(RB, 1)  'desplazo el 1 que esta en el pin rb.0 del puerto b hacia la izquierda
WaitMs 500  'le dejo un retraso de 500ms
If RB.7 = 1 Then Goto derecha  'si rb.7=1 salto ala secuencia de derecha
Goto izquierda

derecha:
RB = ShiftRight(RB, 1)  'desplazo el 1 que esta en el pin rb.1 del puerto b hacia la derecha
WaitMs 500  'le doy un retraso de 500ms
If RB.0 = 1 Then Goto izquierda  'si rb.0=1 salto ala secuencia de izquierda
Goto derecha
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 14 de Julio de 2011, 19:48:15
el mismo ejemplo que los 2 anteriores pero ahora utilizando los siclo wile y wend

Define SIMULATION_WAITMS_VALUE = 10  'este instruccion es para la simulacion si lo quieren quemar en el micro solo quiten esta linea
AllDigital  'todos los pines como digitales
TRISB = %00000000  'todo el puerto B configurado como salida
Dim a As Byte
RB.0 = 1  'pongo a 1 el pin b1 del puerto b
WaitMs 500  'le doy un retardo de 500ms
a = 0
izquierda:

While a < 7  'si a es menor a 7 ejecunta lo que esta entre while y wend
a = a + 1
RB = ShiftLeft(RB, 1)  'desplazo el 1 que esta en el pin rb.0 del puerto b hacia la izquierda
WaitMs 500  'le dejo un retraso de 500ms

Wend  'si no es menor a 7 ejecuta lo que esta despues de wend
a = 0

While a < 7  'si a es menor a 7 ejecunta lo que esta entre while y wend
a = a + 1
RB = ShiftRight(RB, 1)  'desplazo el 1 que esta en el pin rb.1 del puerto b hacia la derecha
WaitMs 500  'le doy un retraso de 500ms

Wend  'si no es menor a 7 ejecuta lo que esta despues de wend
a = 0
Goto izquierda
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: dogflu66 en 15 de Julio de 2011, 17:28:36
Hola Rocklee_89, te felicito por tu iniciativa, a ver si se anima alguien más. :)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 17 de Julio de 2011, 11:56:44
De nada amigo dogflu66 horita estoy  clavado con la comunicación serial  pero pondré más ejemplos.  ya que el fin es aportar algo ,bueno lo poco que ce para que los que van empezando ce interesen mas por esto que son los pic que son  maravillosos y te ahorran  mucho tiempo y  $ al  hacer con uno de estos pic todo el proceso  y  En lugar de poner muchos (ic) que realizan un trabajo especifico   :-/
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 17 de Julio de 2011, 19:52:18
Bueno amigos el siguiente programa que les dejo es un contador de 0  a 99 con 2 circuitos 7447 y 2 display  de ánodo común.

El programa esta implementado con el puerto (a)  para poder sumar una variable la cual cera programado en la eeprom del pic y la cual cera el punto final del contador cuyo valor cera mínimo de 0 y máximo de 99.

El programa funcionara de esta manera, cuando inicializa la aplicación entrara ala subrutina la cual  prendera un led que cera puesto en el puerto a pin 4 (ra.4), indicando que el programa está listo para sumar y guardar el dato en el cual uno desea que su contador ce detenga.

 El pulsador que se encuentra en el puerto a pin 0 (ra.0) es el encargado de sumar la variable y mostrarla en el displey.

El pulsador que se encuentra en el puerto a pin 1 (ra.1) es el encargado de restar  la variable y mostrarla en el displey.

El pulsador que se encuentra en el puerto a pin 2 (ra.2) es el encargado de guardar la variable en la memoria interna del pic y apagar el led puesto en (ra.4) indicando que ya quedo un dato guardado.

El programa solo suma una variable y la compara con la variable anteriormente guardada y si son = termina el programa.

Espero que le sea de alguna utilidad como practica usando instrucciones if.. Then,  gosub, y read y write
Saludos desde Tamaulipas México ce despide rockLee_89
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 17 de Julio de 2011, 20:08:22
Define SIMULATION_WAITMS_VALUE = 10  'solo para simulacion
AllDigital  'todos los pines digitales
TRISA = %000111  'pines ra.0,ra.1,ra.2 como entradas
TRISB = %00000000  'puerto b como salida
Dim a As Byte
Dim b As Byte
a = 0
b = 0
Gosub dato  'saltar ala subrutina

inicio:

Read 0, a  'leer lo que esta en la memoria en la casilla 0 y guardarlo en la variable a
If b = a Then  'un comparadar para termino de nuestro programa
End                                               
Endif

b = b + 1  'simple contador
PORTB = b  'y lo saca por el puerto b en binario
WaitMs 1000

Goto inicio

dato:
RA.4 = 1  'encender el pin ra.4 (este es el led)

If RA.0 = 1 Then  'si ra.0=1 le suma 1 ala variable a
a = a + 1
If a = 100 Then  'una simple condicion para que solo llegue a 99
a = 0
Endif

PORTB = a  'lo saca por el puerto b el valor de la variable a para ver que numero esta
WaitMs 50
Endif

If RA.1 = 1 Then  'si ra.1=1 le resta 1 ala variable a
a = a - 1
If a = 255 Then  'una simple condicion para que cuando a este a 0 y ustedes le quieran restar no los aparesca ff o 255 numero que sobrepasa nuestro contador
a = 0
Endif

PORTB = a  'lo saca por el puerto b el valor de la variable a para ver que numero esta
WaitMs 50
Endif

If RA.2 = 1 Then  'si ra.2 es = a 1 entonces
RA.4 = 0  'apaga el led que indica que ya guardo un dato
WaitMs 50
Write 0, a  'y escribe el dato el cual quedo prestablecido en la casilla 0, lo que hay en la variable a
Return  'regresar a donde fue llamada la subrutina
Endif
Goto dato


si en algo la regue o tienen algunas ides o mejoras para el programa tenga la confianza de decírmelo ya que nadie nace sin equivocarse y el fin son programas didácticos para que  los novatos como yo tengan una idea de cómo hacer simples circuitos y que recuerden que la practica hace al maestro..

tenia pensado que Leyera la variable a y si es mayor a 0 y menor a 99 se ejecute el programa para que así no esté como esclavo de que cada que lo conectes no estar guardando el dato acada rato pero ce me paso bueno pero el ejemplo jala que es lo bueno jiji

Saludos y nos veremos después con mas ejemplos
 
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 17 de Julio de 2011, 21:13:08
Bueno amigo hoy les  dejare unos ejemplos fáciles y tratare de explicarles como utilizar un lcd  de 16 caracteres y 2 líneas  (16x2) 

Casi todos los lcd de 16x2 bueno al menos los que yo e visto y manejado vienen con sus 16 pines aunque no recuerdo bien si los LCD que no tienen luz de fondo los traigan los 16 bueno en si con luz o sin luz es lo de menos

Bueno lo adjunto ya que lo explique de cómo conectarlo y los comandos comunes del lcd para su manejo
y como es mucho no quiero echarme mucho royo aqui y aburrirlos mejor les dejo el archivo de word asi el que quiera le da una leida y entiende algo sobre el lcd su conecion y su manejo en este lenguaje
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 17 de Julio de 2011, 21:34:10
Bueno amigos aquí empezamos con el primer programa d manejo del lcd el programa saca un texto por la línea 1 del lcd y pasa a la línea 2 del lcd y escribe otra frase.

Define SIMULATION_WAITMS_VALUE = 10  'solo para simulacion
Define LCD_BITS = 4  'defino la conexion de 4 bits . cuando ponemos conexion de 8 bits el lcd_dbit es ignorado
Define LCD_DREG = PORTB  'defino la conexion del puerto b
Define LCD_DBIT = 4  'defino la conexion de los altos (4,5,6,7) del puerto b
Define LCD_RSREG = PORTB  'define el uerto b como conexion rs
Define LCD_RSBIT = 0  'define el pin donde ira conectado rs
Define LCD_EREG = PORTB  'define el puerto donde estara el pin de e
Define LCD_EBIT = 2  'defino la conecion de e por el pin 2
Define LCD_RWREG = PORTB  'defino a r/w por el puerto b
Define LCD_RWBIT = 1  'defino el pin 1 como r/w este pin lo podemos ignorar u poner con una resistencia a tierra ya que solo queremos escribir en el lcd y no leer
Define LCD_COMMANDUS = 1000  'define la demora en microsegundo en la escritura
Define LCD_DATAUS = 100  'define cuanto la escritura  de un dato
Define LCD_INITMS = 100  'define la demora de la inicizion del lcd
Lcdinit 2  'el cursor subrayado

inicio:
Lcdout "hola amigos"  'saco por la linea uno de lcd
WaitMs 2000  'retardo para visualizarlo
Lcdcmdout LcdLine2Home  'paso ala linea 2 del lcd
Lcdout "de todo pic"  'saco por la linea dos de lcd
WaitMs 2000  'retardo para visualizarlo
Lcdcmdout LcdClear  'borro lo que hay en el lcd
Goto inicio
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 17 de Julio de 2011, 21:49:01
Bueno eso es todo por hoy ,maña  implementare la opción de count port para poder medir la frecuencia esta no la he implementado hasta valores de kilos, ya que no ce si llegue con 555 convencional hasta esta frecuencia ya que no cuento con un osciloscopio ni un  generador para ver estas frecuencias  pero he medido frecuencias con un 555 de  160 hz y medí con un acoplado de un transformador y una simple fuente de ½ onda una señal de 60 u 61 hz que es la frecuencia en México en la red eléctrica con lo cual creo que esta función si
sirve para poder medir frecuencias, si alguien la ha implementado en frecuencias en MHz y KHz puede comentar si con esta simple instrucción pude  funcionar o ce tiene que modificar.

El pic simulador cuenta con osciloscopio y generador  pero como soy algo lelo todavía no le he movido pero esto del 555 y el acoplado de la luz eléctrica si esta calado en físico.
 bueno eso sería todo  subiré fotos que le tome al lcd y al proto donde hice esta aplicación también tengo pensado usar esta misma aplicación para medir las rpm de un motor cuando tenga tiempo de hacer la conexión del motor  y su placa ce los mostrare
Espero que les allá servido de algo lo que e posteado que mi fin es ayudar al foro y a los novatos como yo como podrían usar algunas simples aplicaciones que el compilador nos da.
Desde Tamaulipas México ce despide RockLee_89 hasta la próxima.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 18 de Julio de 2011, 13:17:46
Bueno aquí les traigo el programa, con el cual podrán medir los pulsos que llegan a un pin especifico que fue configurado como entrada y ce desplegara en el lcd, la cantidad de pulsos que conto en un segundo.

Define SIMULATION_WAITMS_VALUE = 1  'solo para simulacion
AllDigital  'todos digitales
TRISA = %000001  'configuro el puerto a pin 0 como entrada
Define LCD_BITS = 4  'comunicacion del lcd de 4 bits
Define LCD_DREG = PORTB  'y se conectara en el puerto b
Define LCD_DBIT = 4  'con los 4 bit altos (4,5,6,7)
Define LCD_RSREG = PORTB  'el pin rs sera puesto en el puerto b
Define LCD_RSBIT = 0  'el pin sero sera rs de dicho puerto
Define LCD_EREG = PORTB  'el pin e sera puesto en el puerto b
Define LCD_EBIT = 2  'en el pin numero 2 de dicho puerto
Define LCD_RWREG = PORTB  'el pin r/w sera puiesto en el puerto b
Define LCD_RWBIT = 1  'pin 1 del puerto b para r/w
Lcdinit 2  'inicializo el lcd con el pulsor parpadeando

Dim i As Byte  'declaro una variable de tipo byte
Define COUNT_MODE = 1  'inicializo el contador
Lcdout "   FRECUENCIA   "  'cargo el texto en el primer renglon del lcd
Lcdcmdout LcdLine2Home  'salto al 2 renglon del lcd

inicio:

Lcdcmdout LcdLine2Home  'salto al 2 renglon del lcd
Count RA.0, 1000, i  'cuento lo pulsos que yegan a ra.0,durante 1s y los guardo en la variable i
Lcdcmdout LcdLine2Pos(5)  'salto ala posicion 5 del 2 renglon (esta opcion depende del usario la puedes quitar y no pasa nada solo el texto estara en el primer renglon)
Lcdout #i, " Hz "  'despliego a pantalla el valor de i y enseguida saco el texto hz
WaitMs 300  'un retardo para visualizar el contenido del lcd
Goto inicio
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 18 de Julio de 2011, 13:26:23
http://www.subirimagenes.com/fotos-moto1471-6679574.html

http://www.subirimagenes.com/fotos-moto1472-6679590.html

http://www.subirimagenes.com/fotos-x-6679595.html
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 18 de Julio de 2011, 13:32:31
En unos días empiezo a armar lo que cera la conexión del motor y el opto transistor para poder generar los pulsos y poderlos medir con esta opción para ver si podemos medir las rpm que nos entrega el motor
Saludos desde Tamaulipas Mexica se despide RockLee_89
 :) 8) :lol:
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: jim_17 en 20 de Agosto de 2011, 22:25:30
Hola Rocklee, genial que continues con este hilo poniendo ejemplos.

Yo dejé el basic y me pasé al C así que te dejo el relevo para que continues poniendo ejemplos !
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: fabio2012 en 09 de Diciembre de 2012, 12:10:28
hola a todos le doy las gracias :) :) :) por poner ejemplos fasil para aprender el lenguaje basic,me gustaria que siguiean poniendo ejemplos fasil para nuestro aprendisaje.estoy solo en esto y por eso se me hace muy difisil aprender,pero con ejemplo sensillo es mas fasil agarrale la mano...desde ya gracias
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 12 de Diciembre de 2012, 18:59:54
hola amigo fabio2012 perdon por tener tan abandonado el post este el tiempo no me a dejado seguir donde me quede tal vez tu tengas algunos ejemplos que quieras postear aqui o dudas con gusto si esta en mi poder y mi pensamiento te lo are saver un gusto
saludos
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: fabio2012 en 12 de Diciembre de 2012, 23:47:24
hola resien estoy empezando y lo que se ya esta posteado,lo que quisiera saber si vos podes darme un ejemplo de como hacer un contador y descontador de 4 digitos utilizando timer0,y aserlo contar con un pulsador y con boton aserlo que descuente....espero que se entienda :mrgreen: :mrgreen: :mrgreen:

pd:cualquier cosa que aprenda por mi cuenta y no este aca lo posteare,para que valla creciendo el tutorial
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 13 de Diciembre de 2012, 19:51:54
hola fabio2012
no entiendo muy bien tu pregunta sobre lo del ejemplo que quieres hacer un ejemplo con taimer que cuente solito o con pulsadores o como esta la idea y 4 digitos a que te refieres que llegue a 1000 o que le conectes 4 displey de 7 segmentos espero poderte ayudar en lo que pueda en cualquiera de los 2 ejemplos que necesites y espero tu aportes con algunos ejemplo onque sean basicos ya que sirve amuchos que apenas empiesan y no saven como hacerlo y con ejemplos es mas facil.
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: fabio2012 en 13 de Diciembre de 2012, 22:58:20
si la idea es aprender a usar el taimer,la idea del contador es que cuente hasta 9999 con un pulsador y con otro pulsador que descuente...y la visualizacion serian 4 display de 7 segmento...espero que se entienda saludos
pd:ya voy a tratar de hacer algo basico para aportar al foro
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 14 de Diciembre de 2012, 14:04:40
hola amigo fabio2012
no se que tipo de experiencia tengas con el timer o hayas leido algo sobre el
ayer precisamente leyendo lo que me preguntabas bueno lo que le entendi sobre el timer es que se puede implementar de  formas usando el divisor de frecuencia del cristal del pic u mandandole pulsos ala patita ra.4 o tocki bueno en los 2 casos es un contador idependiente del pic osea que si tu lo activas por el divisor el solo enpesara a contar el timer desde 255 hasta llegar a cero activando una bandera del registro itcon indicando que se activo la interrupcion dejando de lado lo que este haciendo de = manera al activar el timer pero con ra.4 tocki asta que le mandes 255 pulsos a ese pin ya sea configurando de forma acendente o decendente

te aconsejo que busques el libro de jose m. angulo y ignacio angulo martines biene muy explicado el libre bueno lo que e visto hasta orita

bueno como tu quieres el problema no creo que sea necesario implementar el taimer ya que como te lo planteo tal vez seria mejor usando pulsadores directamente  para sumar y restar el resultado y mostrarlo en los 4 display

usando el timer seria mejor para hacer un contador que el cuente solito por si solo cada que se active una interrupcion por desborde de taimer pero si quieres el uso de interrupciones lo usamos en otro momento en alun ejemplo que pondre todo es con calma amigo posteare algunas interrupciones no todas tal vez la interrupcion por rb.0
la de taimer y tal vez la de interrupcion por resepcion de datos en el usart que son los que yo e utilizado hasta orita bueno excepto el del taimer pero por que no verlo estaria bien

bueno en un rato aver si puedo empesar a hacer el ejemplo que quieres pero seria bueno que que te apoyes en libros y demas cosas que te ayudarn mucho en la hora del aprendisaje el datashet tambien es muy buen maestro ya que te daras cuenta de los recursos del pic y te dara un nueva vista del mismo desde otro aspecto
saludos y espero tus programas no importa el grado de dificultad lo que cuenta es la intencion amigo
Título: Ejemplo timer0 salida RS232
Publicado por: fabio2012 en 03 de Enero de 2013, 23:06:41
hola aca les dejo un sensillo ejemplo de como usar el timer0 con salida rs232,espero que le sirva :) :) :)
pd:en el zip de dejo la simulacion en proteuz y  todo lo demas

OPTION.T0CS = 1
OPTION.T0SE = 1
Dim n As Byte
Hseropen 9600
TMR0 = 0

ciclo:
If TMR0 >= 100 Then TMR0 = 0
n = TMR0

Hserout "valor del timer0: " #n, CrLf
WaitMs 5000
Goto ciclo
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 31 de Enero de 2013, 20:33:23
hola amigos buenos ahora  les dejo un ejemplo con el conversor adc con el cual leeo el valor que me entrega el sensor lm35 y lo muestro en el lcd

Código: [Seleccionar]
AllDigital

'CONFIGURACION DE LCD
'------------------------------------------
Define LCD_BITS = 4
Define LCD_DREG = RB
Define LCD_DBIT = 4
Define LCD_RSREG = RB
Define LCD_RSBIT = 3
Define LCD_EREG = RB
Define LCD_EBIT = 2
Define LCD_COMMANDUS = 2000
Define LCD_DATAUS = 100
Define LCD_INITMS = 100
Lcdinit 0
'------------------------------------------

'CONFIGURACION DEL ADC
'------------------------------------------
Define ADC_CLOCK = 3
Define ADC_SAMPLEUS = 50
ADCON0 = 0x00
ADCON1 = %10001110
'------------------------------------------

'CONFGURACION DE LOS PUERTOS
'------------------------------------------
TRISA = 0x01
TRISC = 0x00
TRISD = 0x00
TRISD = 0x00
'------------------------------------------

'DECLARACION DE VARIABLES
'------------------------------------------
Dim valor As Word
Dim temp As Byte
'------------------------------------------

inicio:

Lcdcmdout LcdLine1Home

Adcin 0, valor
temp = valor / 2
Lcdout "VALOR D CONV. ", #valor
Lcdcmdout LcdLine2Home
Lcdout "ªC ", #temp
WaitMs 100

Goto inicio


el ejemplo es muy preciso entre el que me entrega el lm35 y el despliego en el lcd
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 31 de Enero de 2013, 20:38:16
amigo fabio2012 perdon por no contestarte antes sobre la multiplexacio e andado un poco liado bueno el ejemoplo me ayudo a resolverlo el amigo dougflog66 bueno el lo resolvio  :lol: en unos dias que entienda como trabajar con las funciones y demas ago el ejemplo con 4 displey y te muestro las fotos u video au no se de como trabaja el ejemplo

si quieres dar una mirada esta en la parte de basic el ejemplo esta hecho solamente para 2 displey pero pues el mismo funcionamiento saludos
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 08 de Febrero de 2013, 00:36:05
Bueno amigo ahora les dejo un programa utilizando el adc del pic y la comunicacion serial y para darle un poco mas de sabor una pequeña aplicacion hecha en visual basic 2010 expres creo que es la misma en la version 8


AllDigital

'CONFIGURACION DEL PUERTOS
'------------------------------------------
TRISA = %00000111
TRISC = %10000000
'------------------------------------------

'CONFIGURACION DE LCD
'------------------------------------------
Define LCD_BITS = 4
Define LCD_DREG = RB
Define LCD_DBIT = 4
Define LCD_RSREG = RB
Define LCD_RSBIT = 3
Define LCD_EREG = RB
Define LCD_EBIT = 2
Define LCD_COMMANDUS = 2000
Define LCD_DATAUS = 100
Define LCD_INITMS = 100
Lcdinit 0
'------------------------------------------

'CONFIGURACION DE VARIABLES
'------------------------------------------
Dim a1 As Word
Dim a2 As Byte
Dim a3 As Byte
a1 = 0
a2 = 0
a3 = 0
'------------------------------------------


'COMUNICACION SERIAL 9600
'------------------------------------------
Hseropen 9600
'------------------------------------------

'CONFIGURACION DE ADC
'------------------------------------------
ADCON0 = 0
ADCON1 = %10001110
'------------------------------------------

inicio:

Lcdcmdout LcdLine1Home
Adcin 0, a1
a2 = a1 / 2
Lcdout "C ", #a2
Hserout #a2
Hserget a3
WaitMs 500

Lcdcmdout LcdLine2Home

If a3 = "1" Then
Lcdcmdout LcdLine2Clear
Lcdout "LED ON"
Endif

If a3 = "2" Then
Lcdcmdout LcdLine2Clear
Lcdout "LED OFF"
Endif

Goto inicio
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 08 de Febrero de 2013, 00:37:14
 y esta es la programacion de la pequeña aplicacion hecha en visual basic 2010 expres

Public Class Form1

    Dim txtBuferin As String

    Private Sub btnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectar.Click

        btnConectar.Enabled = True
        tmrTimer.Enabled = True
        spPuertos.Open()
    End Sub

    Private Sub tmrTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrTimer.Tick


        txtBuferin = spPuertos.ReadExisting

        If txtBuferin <> "" Then
            Txt1.Text = txtBuferin
            txtBuferin = ""
            spPuertos.DiscardInBuffer()

        End If

    End Sub

    Private Sub Led_on_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Led_on.Click

        spPuertos.Write("1")

    End Sub

    Private Sub Led_off_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Led_off.Click

        spPuertos.Write("2")

    End Sub
End Class
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 08 de Febrero de 2013, 00:56:56
ok la programacion del pic es sencilla  hace una convercion del ADC y lo manda serial mente hacia la aplicacion y lo despliega en un texbox este programa solo sirve para mandar un dato al puerto serie y visualizarlo en el texbox si quieres mandar mas datos por el puerto serie del pic hacia la aplicacion y generar diferentes acciones se necesitaria usar una opcion llamada mid

pero eso es otra historia bueno ala aplicacion tambien cuenta con 2 botones que al oprimirlos manda un dato serial mente que al llegarle al plic lo despliega en el lcd y lo muestra como led on o led off dependiendo el boton seleccionado mañana pondre una aplicacion mas hecha con visual basic

saludos
dudas y preguntas comentar
saludos

Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 08 de Febrero de 2013, 01:43:28
bueno amigo aqui les dejo la aplicacion hecha en visual basic les adjunto la carpeta por si quieren agregar algo u modificar algo de mi aplicacion a criterio
en el .rar biene una sencilla explicacion de como usarlo

una cosa importante por el tema de lo sencillo y sin mucho tiempo la aplicacion hice solo para comunicarte en el com#3 que es el de mi pc del cable serial
si ustedes quieren hacer pruebas hay de 2 formas la primera es instalando el programa visual basic 2010 expres y modificar en la parte del puerto serie
el com deseado, o cambiar el numero del puerto serie al numero #3 y asi les funcionara la aplicacion la 2 opcion es mas rapido pero lo dejo a su critero
mas a delante les dejare una aplicacion en la cual si podran seleccionar el com deseado si ningun problema

saludos

= les adjunto unos videos donde el compañero me ayudo mucho en la parte de visual basic y como resolver las dudas que van saliendo al hacer mis aplicaciones
saludos tambien al amigo no se su nombre pero ese es su nip de youtube ProgsisdelAdvanced

ejemplo de visual basic #1 (http://www.youtube.com/watch?v=meJtSQQaMb4)

aplicacion visual basic #2 (http://www.youtube.com/watch?v=GxH93lLV4fQ)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: dogflu66 en 08 de Febrero de 2013, 06:01:37
He estado viendo los videos y realmetne ha quedado muy bien. (((:-)))
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 08 de Febrero de 2013, 10:56:26
jaja los videos no son mios amigo dogflu66 yo apenas le entiendo mas o menos al visual 2010 expres pero en teoria los hice viendolos y claro las dudas y mejoras para una transmicion y recepcion me ayudo el muchacho que hizo los video en un rato mas pondre una aplicacion mas usando adc del pic sensando temperatura con un lm35 como ya lo e puesto aqui en en ejemplo anterior,prender lesds desde la aplicacion, y por que no chequeo desde la aplicacion con algo visual que te indique el estado de los leds

saludos
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 08 de Febrero de 2013, 16:03:59
bueno amigos ahora les dejo otra sencilla aplicacion hecha en visual basic que es paresida ala anterior pero con otras modificaciones como son la lectura de 2 temperaturas,la activacion de 2 leds (por ejemplo solo use 2 pueden ser mas), y la lectura de 2 pulsadores que se ve reflejado en 2 imagenes como si estan encendidos u apagados esto lo hice con
el fin de controlar cargas a distancia y asi sabras el estado de esas cargas sin ir a verlas o por activarlas directamene

 
Título: Re: Empecemos con un Cursillo del compilador PIC Simulator IDE Basic.
Publicado por: RockLee_89 en 08 de Febrero de 2013, 16:08:14
aqui el codigo del pic yo hice la cala con un pic16f877a y el sistema funciona mis ejemplo son hechos y montados, no me gusta hacerlos virtualmente, por que me an fallado, algunos
bueno, el ejemplo es sencillo utiliza lo que es el adc del pic usando para leer la lectura del sensor lm35 ,el puerto serie del pic via hardware y la interrupcion del pic en modo resepcion ya que es la que mejor me interesa para no estar checando el puerto del pic tan seguido y asi no se me pierde ninguna informacion

AllDigital

'CONFIGURACION DEL PUERTOS
'------------------------------------------
TRISA = %001011
TRISC = %10000000
TRISD = %00000011
'------------------------------------------

'CONFIGURACION DE ADC
'------------------------------------------
Define ADC_CLOCK = 3
Define ADC_SAMPLEUS = 50
ADCON0 = 0x00
ADCON1 = %10000100
'------------------------------------------

'CONFIGURACION DE INTERUPCION POR RECEPCION
'------------------------------------------
INTCON.GIE = 1
INTCON.PEIE = 1
PIE1.RCIE = 1
'------------------------------------------

'CONFIGURACION DE LCD
'------------------------------------------
Define LCD_BITS = 4
Define LCD_DREG = RB
Define LCD_DBIT = 4
Define LCD_RSREG = RB
Define LCD_RSBIT = 3
Define LCD_EREG = RB
Define LCD_EBIT = 2
Define LCD_COMMANDUS = 2000
Define LCD_DATAUS = 100
Define LCD_INITMS = 100
Lcdinit 0
'------------------------------------------

'CONFIGURACION DE VARIABLES DE TEMPERATURA
'------------------------------------------
Dim a1 As Word
Dim a2 As Byte
Dim a3 As Word
Dim a4 As Byte
a1 = 0
a2 = 0
a3 = 0
a4 = 0
'------------------------------------------


'CONFIGURACION DE VARIABLES DE RECEPCION

'------------------------------------------
Dim dato As Byte
dato = 0
'------------------------------------------

'COMUNICACION SERIAL 9600
'------------------------------------------
Hseropen 9600
'------------------------------------------

'CONFIGURACION PUERTO A CERO
'------------------------------------------
RD.3 = 0
RD.4 = 0
'------------------------------------------

inicio:

Lcdcmdout LcdLine1Home

Adcin 0, a1
a2 = a1 / 2
Lcdout "C " #a2
Hserout "tempin", #a2
WaitMs 5

Lcdcmdout LcdLine1Pos(7)
Adcin 1, a3
a4 = a3 / 2
Lcdout "C " #a4
Hserout "tempou", #a4
WaitMs 5

'CONTROL DE LAS IMAGENES VISUAL
'------------------------------------------
If RD.0 = 1 Then
Hserout "f1on"
Endif

If RD.0 = 0 Then
Hserout "f1of"
Endif

If RD.1 = 1 Then
Hserout "f2on"
Endif

If RD.1 = 0 Then
Hserout "f2of"
Endif
'------------------------------------------

Goto inicio
End                                               

On Interrupt
'------------------------------------------
PIE1.RCIE = 0
PIR1.RCIF = 0
Hserin dato

'LECTURA DE LA APLICACION BOTONES
'------------------------------------------
If dato = "A" Then
RD.3 = 1
dato = 0
Endif

If dato = "B" Then
RD.3 = 0
dato = 0
Endif

If dato = "C" Then
RD.4 = 1
dato = 0
Endif

If dato = "D" Then
RD.4 = 0
dato = 0
Endif
'------------------------------------------
PIE1.RCIE = 1

Resume               
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 08 de Febrero de 2013, 17:28:35
bueno aqui les dejo el link donde esta mi aplicacion hecha en visual basic 2010 expres , las espesificaciones se encuentran dentro saludos

http://www.4shared.com/rar/b-yXweYt/ControL_Casa.html
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: fabio2012 en 12 de Febrero de 2013, 23:05:57
hola a todo deje por un tiempo de pasar por el foro por falta de tiempo,estuvo estudiando matematica y fisica para rendir este sabado es mi ultima prueba,y creeria que la semana que viene subiria ejemplos de pic simuleirto ide  :) :) :) ,tengo varia programas mas, el contador de 4 digitos de display de 7 segmento y tambien le agregue una alarma para detenerlo en una determina cantidad. variador,ect
Espero subir lo mas ante posible asi sigue creciendo el foro ;-)
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: RockLee_89 en 15 de Febrero de 2013, 22:13:14
me da gusto que no desaparescas amigo fabio2012  y espero tus ejemplos
saludos
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: fabio2012 en 25 de Febrero de 2013, 16:41:08
Hola a todos,no puedo subir el ejemplo del contador de 4 digitos porque no me funciono el 7447 :( :( (lo queria subir con video para ver su funcionamiento por que en proteuz no se puede apreciar)
pero subo un un ejemplo de un variador (podemos a ser que prenda mas lijeros y mas lento), espero que sea de utilidad
aca va el ejemplo:
AllDigital
TRISA = %11111111
TRISB = %11111110
Dim xy As Byte
Dim veces As Byte
veces = 100
inicio:
PORTB = %00000001
Gosub timer
PORTB = %00000000
Gosub timer
Goto inicio
End                                               
timer:
If RA0 = 0 Then Gosub restar
If RA1 = 0 Then Gosub sumar
For xy = 100 To veces
WaitMs 5
Next xy
Return                                           
sumar:
If veces > 150 Then Return
veces = veces + 5
Return                                           
restar:
If veces < 10 Then Return
veces = veces - 5
Return             


subo tambien simulacion en proteuz
espero que sea de utilidad,voy a tratar de seguir subiendo ejemplos saludos :) :) :)                             
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: borja en 08 de Mayo de 2015, 01:18:25
Aqui les déjo el codigo para un contador de 0-99 esta muy sencillo en programa : ) espero les ayude :-/ :mrgreen: (((:-)))

Device 16F628A
Declare Xtal = 10

Dim U As Word
Dim D As Word
Dim time As 4
Dim index As Word

inicio:
TRISB =0
PORTB =0
 D=0 
U=0

mostrar:
For index = 0 To 50
PORTB= %00010000 + U
DelayMS time
PORTB= %00100000 + D
DelayMS time
Next

If U<9 Then GoTo inc_U

inc_U:                                           
Inc U
If U>9 Then GoTo inc_D
GoTo mostrar

inc_D:
Inc D
If U>9 Then U = 0
If D>9 Then D = 0
GoTo mostrar
GoTo inicio
Título: Re: Empezemos con un Cursillo del compilador pic simulator ide basic.
Publicado por: dogflu66 en 09 de Mayo de 2015, 09:51:58
Hola Borja; gracias por la aportación.
He revisado tu código y en mi lenguaje me sale que las líneas de programa:

If U<9 Then GoTo inc_U y GoTo inicio

son código redundante, si se eliminan el programa debería seguir realizando la misma tarea.
Si tienes un rato intenta probar si esas líneas no afectan a tu programa en tu lenguaje y nos lo cuentas.

Aquí dejo la traducción al lenguaje Basic del PSI por si alguien lo quiere estudiar en su simulador.
También he modernizado el código ya que los Gotos no se suelen usar en programación.

'device 16f628a
Define CONFIG = 0x3f42
Define CLOCK_FREQUENCY = 10
'******************************************
'Rutina principal
main:
   Dim inicio As Byte
   Dim u As Word
   Dim d As Word
   Const time = 4
   Dim index As Word

   TRISB = 0
   PORTB = 0
   d = 0
   u = 0

   While inicio = inicio  'Bucle infinito
      For index = 0 To 50
         PORTB = %00010000 + u
         WaitMs time
         PORTB = %00100000 + d
         WaitMs time
      Next index

      If u < 9 Then Gosub inc_u
   Wend
End                                              
'****************************************
'Subrutinas y funciones
inc_u:
   u = u + 1
   If u > 9 Then Gosub inc_d
Return                                            
inc_d:
   d = d + 1
   If u > 9 Then u = 0
   If d > 9 Then d = 0
Return    

Si le veis algún fallo lo corregimos.