Algoritmo para nombre and POV led

hola, me he interesado con esta cuestion, al principio intente montarlo conel de jose pino, y crei que no funcionaba, por el mismo problema con ISIS, es mas, a la fecha no lo he probado y no se si consiga 12f´s, la cuestion es que de codigo y lenguajes cero, pero vi en una web que ya no encuentro, donde un chavo pone el mensaje KEVIN y el codigo (de hecho pequeño) estaba en asm y la configuracion de los puertos se hacia binaria, dotando resolucion de 8 filas 60 columnas.

estaba solo el codigo fuente y solo tuve que compilarlo con mpasm para 16f84, luego de interpretar la interaccion del binario con las salidas, escribi "Up the IRONS", pero veo que aqui se avanzo en serio, me gustaria incluirle frames, interrupciones, control del motor paso a paso (hacia un amplificador de poder),
el sensor magnetico u optico, rgb (hay que bonita es la electronica)

agradeceria si alguien postea codigos GNU (o libres) con las opciones de control de lo enumerado.
obviamente no me voy sin aportar, este es el asm intuitivo antes de compilarlo en el MPASM:

Código:
STATUS      equ       03h       ; Status Register
TRISA       equ       85h       ; TrisA  Register
PORTA       equ       05h       ; A Port
TRISB       equ       86h       ; TrisB  Register
PORTB       equ       06h       ; B Port
COUNT1      equ       0Ch       ; delay loop counter

P           equ       0Eh       ; pointer
C           equ       0Fh       ; display counter

FSR         equ       04h       ; File Select Register
INDF        equ       00h       ; Uses contents of FSR to address Data Memory


bsf         STATUS,5            ; ==> Bank 1
movlw       00h                 ; B port
movwf       TRISB               ; output
bcf         STATUS,5            ; ==> Bank 0

               
            
movlw       b'00000000'
movwf       10h
movlw       b'11111110'
movwf       11h
movlw       b'11111111'
movwf       12h
movlw       b'00000011'
movwf       13h
movlw       b'11111111'
movwf       14h
movlw       b'11111110'
movwf       15h
movlw       b'00000000'
movwf       16h
movlw       b'00011111'
movwf       17h
movlw       b'00010100'
movwf       18h
movlw       b'00010100'
movwf       19h
movlw       b'00001000'
movwf       1ah
movlw       b'00000000'
movwf       1bh
movlw       b'00000000'
movwf       1ch
movlw       b'00100000'
movwf       1dh
movlw       b'11111110'
movwf       1eh
movlw       b'00100000'
movwf       1fh
movlw       b'00000000'
movwf       20h
movlw       b'11111110'
movwf       21h
movlw       b'00010000'
movwf       22h
movlw       b'00010000'
movwf       23h
movlw       b'00011110'
movwf       24h
movlw       b'00000000'
movwf       25h
movlw       b'00011100'
movwf       26h
movlw       b'00101010'
movwf       27h
movlw       b'00101010'
movwf       28h
movlw       b'00011000'
movwf       29h
movlw       b'00000000'
movwf       2ah
movlw       b'00000000'
movwf       2bh
movlw       b'11111111'
movwf       2ch
movlw       b'11111111'
movwf       2dh
movlw       b'00000000'
movwf       2eh
movlw       b'11111111'
movwf       2fh
movlw       b'11111111'
movwf       30h
movlw       b'01111000'
movwf       31h
movlw       b'11011100'
movwf       32h
movlw       b'01110110'
movwf       33h
movlw       b'00101011'
movwf       34h
movlw       b'00011101'
movwf       35h
movlw       b'00111110'
movwf       36h
movlw       b'01110111'
movwf       37h
movlw       b'11100011'
movwf       38h
movlw       b'01110111'
movwf       39h
movlw       b'00111110'
movwf       3ah
movlw       b'10011100'
movwf       3bh
movlw       b'11001000'
movwf       3ch
movlw       b'11111111'
movwf       3dh
movlw       b'11111111'
movwf       3eh
movlw       b'01110000'
movwf       3fh
movlw       b'00111000'
movwf       40h
movlw       b'11111111'
movwf       41h
movlw       b'11111111'
movwf       42h
movlw       b'00100100'
movwf       43h
movlw       b'01110110'
movwf       44h
movlw       b'11010011'
movwf       45h
movlw       b'11001011'
movwf       46h
movlw       b'01101110'
movwf       47h
movlw       b'00000000'
movwf       48h
movlw       b'00000000'
movwf       49h
movlw       b'00000000'
movwf       4ah
movlw       b'00000000'
movwf       4bh



Restart     movlw     10h       ; Load 0x10 in P (first led combination) 
            movwf     P
            movlw     3Ch       ; load 0x3C in C (0x3C=60 led combination)
            movwf     C

Start       movf      P,0       ; W = P
            movwf     FSR       ; FSR = W
            movf      INDF,0    ; W = INDF (INDF is the value pointed by FSR)
            movwf     PORTB     ; Display W on the led row
            incf      P,1       ; P++
            call      Delay     ; wait a little bit
            decfsz    C,1       ; c--;if(C!=0){goto start} else {goto restart}
            goto      Start
            goto      Restart

   

Delay
Loop1       decfsz    COUNT1,1  ; goto loop1 while COUNT1!=0
            goto      Loop1
return 



end

y del circuito son niveles logicos positivos (o sea resistencia, led y a tierra) por el puerto b, cristal 4M y ademas una excelente opcion para la energia fue con un plug de audifonos desarmado (quitandole el eje que lleva la muesca de seguridad) encajo perfecto en el eje del motor, brindando seguridad y dos contactos electricos casi libres de friccion con escobillas metalicas pequeñas puestas en un trozo de plastico......

espero esta información sea de ayuda para los que hasta ahora comenzamos con los micros (a mi me sirvio del carajo) ya que aun existimos mortales que reparamos de todo sin saber de nada. (y si reparo de todo y tengo mas de una decada de conocimiento empirico). saludos espero lean aunque sea tan largo, pero es un pequeño tuto.
 
No se empeñen en COPILAR en algoritmo que Jose Pino publico en su web, por que simplemente no les va a resultar. El coloco ese algoritmo para que la gente se guiara y pudiera armar sus propios codigos.
 
anthony123 dijo:
No se empeñen en COPILAR en algoritmo que Jose Pino publico en su web, por que simplemente no les va a resultar. El coloco ese algoritmo para que la gente se guiara y pudiera armar sus propios codigos.

Yo te pedi ayuda la ultima vez y me ignoraste, no quiero hacer lo mismo ni jackear ideas o programas ya hechos pero si te agradeceriamos que nos digas por donde empezar, en mi caso he tratado de hacer parpadear un Led creo que es el ejemplo principal en ensamblador como el "Hola mundo" en otrs lenguajes.

Saludos
 
No te ignore, recuerdo haberte respondido algunos mensajes ! Yo no soy un master en programacion de pic, de hecho hace meses que no toco uno.! La alta flexibilidad que me ofrece la RF ha hecho que me concentre mucho mas en ella. Si me pongo a comparar numeros, sale 5 veces mas barato.

Otra cosa, no se si te has leido todas las paginas de este post que he escrito. Me pase muchas noches tratando de obtener la solucion y escribiendo en otros foros. La moraleja es: No le des el pescado, enseñale a pescar..!

Saludos
 
ola soy nuevo en esto .. se me ocurrio aventurarme en este proyecto...
compre todo lo q decian .. de echo trabajare con un pic16F876a es el mismo q el 16F877 pero en vez de 40 pines utiliza 28 creoo..
lo que no me cuadra es como realizo el programa de reloj
me dijieron que utilizara el micro c para la programacion de este proyecto pero poco y nada se de este software
.. si me pudieran ayudar a programar o dar una pista seriaa geniall..
de ante mano graciass
 
hola que tal hace tiempo realice mi propio pov led con la ayuda de la pagina de jose pino y de alexander costa de brasil a los cuales le doy todo el credito por colocar este proyecto tan interesante.
lo logre hacer con el programa pic basic y microcode no es muy complicado de echo arme alguno prototipos partiendo de su algoritmo es cuestion de tener logica y paciencia para enterder como hacer el sistema del circuito que a pesar de lo sencillo que es, el simple echo que este armado para procesar un sistema de persistencia a nuestra vision ya da bastante trabajo yo de echo intente crear un tipo de tutorial que a la final no culmine por que esta muy escualido con respecto a la real teoria al verdadero significado de lo que es pov. Yo recomiendo partir de que investiguen primero que es pov para que puedan entender como funciona y luego saber como trabajar con lenguaje asemble y el picbasic que es mas sencillo y veran que pueden hacer sus propios programas sin ningun problema.
Voy a explicar un trozo del programa que yo realice en picbasic.



Portada;
'********************************
'Pantalla Mensajes En el Aire *
'Realizado por : Reimy Vilamizar*
'Noviembre 2008 *
'********************************
Declaracion de pic a utilizar puede ser el 12f629 o el 12f675 y los fuses
como pueden ver todos estan en off ecepto "intrc_osc" esto por que este
pic no necesita un cristal externo en internamente trae un oscilador asi
que esto nos ahorra 2 condensadores y un cristal en el pcb el pic basic
toma como configuracion device llamemoslo asi a 4mhz el oscilador interno
esto se debe a que si no le especificamos al programa de cuanto es el lo
coloca o configura a 4Mhz directamente, ojo: podemos configurarlo a
cualquier otro valor menor a 4Mhz Ejemplo: 3Mhz. pero esto ya les
toca a ustedes hacerlo de todas formas luego les coloco una guia
de picbasic para que sepan como hacerlo;

@ device pic12f629,intrc_osc,wdt_off,pwrt_off,mclr_off,bod_off,protect_off

Aca mas abajo tenemos una espera de medio segundo para estabilizar el pic
esto se hizo ya que el pic a penas no energicemos el va a empezar a leer el programa
y para que no realice una loquera el primero espera medio segundo y luego es que empieza
a leer el programa;

pause 500'TIEMPO DE ESPERA 1/2 SEG. PARA ESTABILIZAR EL PIC

el cmcon que tambien lo vasn a ver en la guia se trata de un comando especial
y lo que logramos con el es colocar todos los puertos en salidas y entradas
digitales en este caso el puerto ya que hablamos de un pic enano de 6 pines
de los cuales dos son alimentacion 5 son entradas y salidas y una solamente de
entrada;

CMCON = 7

y seguimos ahora con la declaracion de variables la cual vamos a utilizar para
poder establecer el tiempo de encendido y apagado entre palabras y letras o lo que
es lo mismo el espacio de separacion entre las palabras y las letras;


'DEFINICION DE VARIABLES
TEMPR VAR BYTE 'VARIABLES DE PALABRAS O FRASES
TEMPL VAR BYTE 'VARIABLE PARA PAUSA ENTRE LETRAS

limpiamos las variables la llevamos a 0

Clear 'LIMPIA TODAS LAS VARIABLES
aca apago todo los led's
GPIO = %00000000
le asigno un valor al timpo entre palabras esto depende mucho
del tamaño de los led y sobre todo el recorrido de los mismo al
moverse que quiere decir esto que a mayor recorrido a lo mejor
no va imoportar mucho en el sentido que no se nos va a pegar
una palabra con otra pero a menor recorrido si, entonces
va a depender mas que todo del recorrido que hagan los led's.
TEMPL = 1

ahora si por fin el inicio del programa el cual es obligatorio declararlo.
lo digo por aquellos que tangan alguna duda.

INICIO:

declaro de derecha a izquierda los bit's como entrada o salida
el primero de la derecha seria el bit 0, hay muchas formas
o maneras de hacerlo una podria ser mas largar que la otra
asi que por eso esta es la mas practica la otra seria uno a uno
algo asi: gpio.0 = 0, gpio.1=1,...,etc.

TRISIO = %00001000

esta es la primera condicion del programa que dice que si el
pin 3 del puerto es igual a 1 tempr es igual a 10 y te vas a la
subrutina palabra_1 y fin

if gpio.3 = 1 then
tempr = 10
gosub PALABRA_1
ENDIF

hasta aqui todo es facil y de las mil maravilla no lo creen pues yo tampoco
lo crei hasta que vi como formar una letra que trabajoso es formar una letra
lo bueno fue que gracias a jose y alexander no tuve que hacerlas todas desde
cero ya que tenia la referencia de todas las letras y unos dibujitos

entonces seguimos vamos a ver como formar una letra para luego formar una
palabra completa.

la letra a como en prescolar je je je : seguro de igual no lo cre
lo primero que vemos es que declaramos LETRA_A: y acontinuacion
apagamos todos los led que se suponen que debieron de un principio estar asi
pero esto se hace por que si vamos a cambiar de una palabra a otra pues primero
debemos apagar luego programar y depues encender nuevamente con la nueva configuracion.
despues vemos que encendemos 4 led's. Nota: hay que tomar en cuenta que para este programa
el circuito tiene dos led en paralelo en el puerto de los pines 4 y 1 si no me equivoco osea cuando
encendemos el pin 4 o 1 estamos encendiendo 2 led's y no 1 asi que pendientes con eso.
Siguiendo con el programa nos quedamos en que encendemos del puerto gpio los pines 1;2;4 y 5
estoy quiere decir que estamos encenciedo 6 led's en ese instante luego hay una pausa
y se enciende 2 led's nada mas y luego los mismos 6 que al principio y luego todos los
led's se apagan de nuevo.


LETRA_A:
GPIO=%00000000
GPIO=%00110110
PAUSE 1
GPIO=%00000101
PAUSE 1
GPIO=%00000101
PAUSE 1
GPIO=%00110110
PAUSE 1
GPIO=%00000000
RETURN


de un modo grafico parecido al que vi posteado alguna vez por alli con permiso al que lo hizo.
Nota: recordemos tres cosas la primera que el pin 1 y 4 tienen dos led cada uno y por eso los
coloque dobles y la otra que tiene que ver con lo mismo si activamos el 1 o el 4 se encienden dos
led no 1 aclarado esto continuo a parte reordemos que el pin 3 del puerto es unicamente entrada
eso quiere decir que no lo podemos aunque queramos utilizarlo como salida por eso no se toma
en cuenta para formar letras.


T1 T2 T3 T4
gpio.0 * * * Como podemos ver es facil T1 es la primera instancia de la letra
gpio.1 * * cuando apagamos todos los pines del pic. T2 cuando encendemos
gpio.1 * * los pines 0;1;2;4 y 5 Luego apagamos los pines 1;4 y 5 dejando
gpio.2 * * * encendidos nada mas los pines 0 y 2 y depues volvemos a encender
gpio.4 * * nuevamente los pines 1;4 y 5 sin apagar el 0 y el 2 y para finalizar
gpio.4 * * apagamos todos y retornamos para mantener la letra en el aire. y
gpio.5 * * ya tenemos nuestra primera letra formada.


Ahora faltan las demas que pueden hacerla ustedes mismos o fijarse en las paginas de jose pino o alexander costa

ahora lo mas facil formar palabras, luego de que formamos todas las letras y dibujos o lo que sea que
agamos simplemente con la condicion inicial llamamos a la subrutina palabra_x
y la formamos de la siguiente manera.

PALABRA_1: nombramiento de la subrutina
PAUSE TEMPR convertimos el valor de tempr en valor de tiempo que tiempo entre palabras
GOSUB LETRA_F que varia dependiendo de la trayectoria velocidad y espacio del circuito
PAUSE TEMPL ejecupamos la subrutina letra_F, pausamos con el timpo establedico para
GOSUB LETRA_O tempL que tambien varia con la trayectoria y espacio que recorre el circuito
PAUSE TEMPL lo mismo con las demas letras al llegar al final llamamos a inicio a ver si hay
GOSUB LETRA_R algun cambio si no se retorna a la subrutina PALABRA_1 y asi hasta que
PAUSE TEMPL varie o cambie le inicio en caso de que excista alguna condicion para que
GOSUB LETRA_O no siga en esta subrutina.
PAUSE TEMPL
GOSUB LETRA_S
PAUSE TEMPL
GOSUB LETRA_D
PAUSE TEMPL
GOSUB LETRA_E
PAUSE TEMPL
GOSUB LETRA_E
PAUSE TEMPL
GOSUB LETRA_L
PAUSE TEMPL
GOSUB LETRA_E
PAUSE TEMPL
GOSUB LETRA_C
PAUSE TEMPL
GOSUB LETRA_T
PAUSE TEMPL
GOSUB LETRA_R
PAUSE TEMPL
GOSUB LETRA_O
PAUSE TEMPL
GOSUB LETRA_N
PAUSE TEMPL
GOSUB LETRA_I
PAUSE TEMPL
GOSUB LETRA_C
PAUSE TEMPL
GOSUB LETRA_A
PAUSE TEMPR
CALL INICIO
GOTO PALABRA_1


Espero que les haya servido de ayuda no se mucho de pic asi que si encuentran algun detalle disculpen
yo tembien soy algo novato a pesar de saber mas o menos siento que aun me falta bastante por aprender
de este mundo les agradezco de antemano sus agradecimientos no es facil describir un programa
a pesar de que es en un lenguaje de alto nivel y sobre todo cuando se trata de pov. les anexo algunas
cosas que le pueden servir de utilidad tampoco soy un genio asi que si me pueden ayudar a mejorar lo que
les anexo se los agradeceria...saludos suerte

PD: no pude cargar el archivo pdf de la guia de pic basic pero consegui una pagina donde explican muy bien
el uso de este programa y tambien desde alli pueden bajar el pdf.
 

Adjuntos

  • tutorial_pov_led_606.pdf
    92 KB · Visitas: 276
  • pov_led2_209.jpg
    pov_led2_209.jpg
    26.5 KB · Visitas: 108
  • pov_led_835.jpg
    pov_led_835.jpg
    18.1 KB · Visitas: 119
funciona con picbasic proc y microcode ese que me nombras no lo he usado si trabaja bajo lenguaje basic debe funcionar

Megustaria me ayudaran un poco con la alimentacion de este circuito a travez de una rolinera, vi en una pagina de internet "que no tengo a la mano ahora", que el circuito puede ser alimentado a travez de una rolinera asi en vez de utilizar pilas se puede conectar directamente a una fuente de poder si alguien tiene alguna idea o teoria al respecto se lo agradeceria...saludos
 
Modificas un motor DC como muestra en esta pagina, los tres cables sales del colector del motor a través de las escobillas, estas van a girar junto al rotor y llegan a un circuito rectificador y filtro a la vez.

http://www.metricmind.com/clock/clock.htm

Yo estaba pensando hacer algún dispositivo electromecánico con electroimanes como un péndulo invertido.
Saludos.
 
Arme un proyecto POV "personalizado" sacando un poco de codigo de cada lado y adaptandolo a los componentes que enia en ese momento,pero me surgio la duda de como conectar un dispositivo que sincronice el inicio del momento en que se muestra el texto, vi por varios lados que usan sensores hall o una parte de un mousede bola pero no termine de entender bien , en concreto mi pregunta es como puedo poner un sensor de efecto hall o unos fototransistores o diodos al pic16f84?.Si es posible quisiera saber tambien como puedo identificar los s. hall para sacarlo de una video que tengo desarmada y estoy por tirar.Gracias
 
Me funciono bien con los Fototransistores el emisor a vss y colector a RA4, coloca el IR led en alguna parte que coinsida. a mi me funciono muy bien aunque con los sensores efecto hall no probe pero debe de ser similar
 

Adjuntos

  • photoir_198.rar
    3 KB · Visitas: 91
  • he_207.png
    he_207.png
    14.9 KB · Visitas: 157
  • ss_19t_112.pdf
    150.3 KB · Visitas: 95
Muchas Gracias, en cuanto pueda le echo un ojo a la video y se lo saco, la resistencia esa de 10k esta calculada para 5v o es indistinto? es que al circuito ahora lo alimento con 3v.Bueno Gracias de nuevo.

Agregado:Acabo de agarrar un mouse para probar por que no estoy donde la video, y encontre q tiene cuatro pares de elementos que no se el nombre exacto.A partir de aca corregime cualquier moco que me pueda mandar OK?, bueno como sabia que uno de estos dos elemento debia ser un diodo emitiendo y un receptor haciendo la contraparte, tome el tester y en la posicion de diodos medi para determinar los pines de cada uno , luego con la ayuda de la webcam determine cual era el emisor, y por ende el receptor.Entonces hasta aca tengo emisor y receptor con los terminales identificado pero empieza el lio de ¿ que tension le pongo al emisor y como conecto el receptor?
 
Consulta? alguien tiene el algoritmo testiado y que funcione? siempre se me queda pegado en algún error, y al ser autodidacta hay cosas que no se que significan y me gustaría compararlos con algún algoritmo ya funcionando, yo al menos estoy trabajando con microcode studio que muestra los errores, pero no da sugerencias o soluciones, ayuda por favor, adjunto mi algoritmo en basic por si alguien puede ayudar o refregar los errores en mi cara, lo que sea para poder aprender, gracias.

pd: uso PIC12f629

Código:
'*****************************************************
'*        Programa Mensajes en el aire                                                *
'*        08/07/2009                                                                            *
'*****************************************************

@ device 12f629,intrc_osc,wdt_off,pwrt_off,mclr_off,bod_off,protect_off 
Pause 500  			'espera 1/2 seg. para estabilizacion del pic

				'SETAG las puertas a la comparación digital

CMCON=7 			'Digital I/O
 

				'Apaga todos los led en gpios
GPIO=%00000000

				'Definicion de variables
SEQ VAR BYTE		'variable de las palabras o frases
TEMPL VAR BYTE		'variable de pausa entre las letras
TEMPR VAR BYTE		'variable de tiempo entre las palabras (retorno)

Clear				'Limpia todas las variables

TEMPL=4			'Pausa entre letras=4, para cualquier palabra
SEQ=0				'cero variables SEQ

INICIO
TRISIO=%00001001		'Flecha GPIO.0 Y GPIO.3 como entradas
IF GPIO.0 = 0 Then		'Selector de clave de secuencia presionada
Pause 400			'Evitar Ondulacion
SEQ=SEQ+1			'Suma 1 a la secuencia de palabra o frase

				' En caso contrario
IF GPIO.3=1 Then INICIO	' si la llave de partida no es presionada va a incio
				'si llave DIS prsionada:
TRISIO=%00001000		'flecha somete GPIO.3 como entrada

IF SEQ=1 Then		'si SEQ=1
TEMPR=50			'flecha pausa de inicio/retorno
GoTo P1			'Va a palabra 1 P1
EndIF

IF SEQ=0 Then INICIO		'Si SEQ=0 va para INICIO

				'Formacion de palabras
P1:
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoTo INICIO

P2:
Pause TEMPR
GoSub LETRA_A
Pause TEMPR
GoSub LETRA_B
Pause TEMPR
GoSub LETRA_C
Pause TEMPR
GoSub LETRA_D
Pause TEMPR
GoSub LETRA_E
Pause TEMPR
GoSub LETRA_F
Pause TEMPR
GoSub LETRA_G
Pause TEMPR
GoTo INICIO

P3:
Pause TEMPR
GoSub LETRA_H
Pause TEMPR
GoSub LETRA_I
Pause TEMPR
GoSub LETRA_J
Pause TEMPR
GoSub LETRA_K
Pause TEMPR
GoSub LETRA_L
Pause TEMPR
GoSub LETRA_M
Pause TEMPR
GoSub LETRA_N
Pause TEMPR
GoTo INICIO

P4:
Pause TEMPR
GoSub LETRA_O
Pause TEMPR
GoSub LETRA_P
Pause TEMPR
GoSub LETRA_Q
Pause TEMPR
GoSub LETRA_R
Pause TEMPR
GoSub LETRA_S
Pause TEMPR
GoSub LETRA_T
Pause TEMPR
GoSub LETRA_U
Pause TEMPR
GoTo INICIO

Letra_A:			'Para Todas las letras, o bit X y referencia como GPIO.3
				'GPIO 54x210 - GPIO.0 o parte superior de las letras
GPIO=%00000000
GPIO=%00110110
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00110110
Pause 2
GPIO=%00000000
Return

LETRA_B:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00000000
Return

LETRA_C:
GPIO=%00000000
GPIO=%00010110
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00000000
Return

LETRA_D:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00000000
Return

LETRA_E:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00000000
Return

LETRA_F:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000001
Pause 2
GPIO=%00000000
Return

LETRA_G:
GPIO=%00000000
GPIO=%00010110
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00010100
Pause 2
GPIO=%00000000
Return

LETRA_H:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000000
Return

LETRA_I:
GPIO=%00000000
GPIO=%00100001
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00000000
Return

LETRA_J:
GPIO=%00000000
GPIO=%00010000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00010111
Pause 2
GPIO=%00000000
Return

LETRA_K:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00000000
Return

LETRA_L:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00000000
Return

LETRA_M:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000010
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000010
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000000
Return

LETRA_N:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000110
Pause 2
GPIO=%00010100
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000000
Return

LETRA_O:
GPIO=%00000000
GPIO=%00010110
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00000000
Return

LETRA_P:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000010
Pause 2
GPIO=%00000000
Return

LETRA_Q:
GPIO=%00000000
GPIO=%00010110
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00110001
Pause 2
GPIO=%00110110
Pause 2
GPIO=%00000000
Return

LETRA_R:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00010101
Pause 2
GPIO=%00100010
Pause 2
GPIO=%00000000
Return

LETRA_S:
GPIO=%00000000
GPIO=%00100010
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00010001
Pause 2
GPIO=%00000000
Return

LETRA_T:
GPIO=%00000000
GPIO=%00000001
Pause 2
GPIO=%00000001
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000001
Pause 2
GPIO=%00000001
Pause 2
GPIO=%00000000
Return

LETRA_U:
GPIO=%00000000
GPIO=%00010111
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00010111
Pause 2
GPIO=%00000000
Return

LETRA_V:
GPIO=%00000000
GPIO=%00000111
Pause 2
GPIO=%00010000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00010000
Pause 2
GPIO=%00000111
Pause 2
GPIO=%00000000
Return

LETRA_W:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00010000
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00010000
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000000
Return

LETRA_X:
GPIO=%00000000
GPIO=%00100001
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00000000
Return

LETRA_Y:
GPIO=%00000000
GPIO=%00000011
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00110000
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000011
Pause 2
GPIO=%00000000
Return

LETRA_Z:
GPIO=%00000000
GPIO=%00110001
Pause 2
GPIO=%00110011
Pause 2
GPIO=%00110000
Pause 2
GPIO=%00100011
Pause 2
GPIO=%00000000
Return

LETRA_CORAZON:
GPIO=%00000000
GPIO=%00000010
Pause 2
GPIO=%00000111
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00110110
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00000111
Pause 2
GPIO=%00000010
Pause 2
GPIO=%00000000
Return

LETRA_FLECHA1:
GPIO=%00000000
GPIO=%00000100
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000000
Return

LETRA_FLECHA2:
GPIO=%00000000
GPIO=%00000100
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000000
Return
 
hola que tal estuve revisando tu algoritmo y esta muy bueno, con respecto a los errores del programa ya te iras a
costumbrabdo a ir decifrandolos, a mi al principio me sacaba canas verdes el programita pero ya con un poco de logica le fui
entendiendo que queria decirme, el problema esta en que tenemos que ir realizando el programa de una palabra a la vez,
eso quiere decir que no podemos simplemente copiar y pegar ya que nos puede pasar que al copiar no se sombree todo lo
que queremos copiar y alli esta el error, lo otro es que todo programa tiene unas normas pautas o leyes las cuales hay que cumplir y llevar a cabo para que pueda funcionar correctamente y nuevamente volvemos a tener un error por causa de la
falta de entrenamiento con respecto al programa, es como cuando compras un cel y no lees el manual de usuario por que te la sabes todas + 1 entonces terminas dañandolo sin haberlo encendido por primera vez..."me ha pasado"jejeje
no lo tomes a mal, solo son consejos por la experiencia que he tenido...
bueno dicho esto te explico


aqui tienes tu algoritmo corregido segun los errores que me dio el programa microcode...

Código:
'***************************************************** 
'*        Programa Mensajes en el aire               * 
'*        08/07/2009                                 * 
'***************************************************** 

@ device pic12f629,intrc_osc,wdt_off,pwrt_off,mclr_off,bod_off,protect_off 

Pause 500           'espera 1/2 seg. para estabilizacion del pic 

            'SETAG las puertas a la comparación digital 

CMCON=7          'Digital I/O 
  

            'Apaga todos los led en gpios 
GPIO=%00000000 

            'Definicion de variables 
SEQ VAR BYTE      'variable de las palabras o frases 
TEMPL VAR BYTE      'variable de pausa entre las letras 
TEMPR VAR BYTE      'variable de tiempo entre las palabras (retorno) 

Clear            'Limpia todas las variables 

TEMPL=4         'Pausa entre letras=4, para cualquier palabra 
SEQ=0            'cero variables SEQ 

INICIO 
TRISIO=%00001001      'Flecha GPIO.0 Y GPIO.3 como entradas 
IF GPIO.0 = 0 Then      'Selector de clave de secuencia presionada 
Pause 400         'Evitar Ondulacion 
SEQ=SEQ+1          'Suma 1 a la secuencia de palabra o frase 
endif             

            ' En caso contrario 
IF GPIO.3=1 Then INICIO   ' si la llave de partida no es presionada va a incio 
            'si llave DIS prsionada: 
TRISIO=%00001000      'flecha somete GPIO.3 como entrada 

IF SEQ=1 Then      'si SEQ=1 
TEMPR=50         'flecha pausa de inicio/retorno 
GoTo P1         'Va a palabra 1 P1 
EndIF 

IF SEQ=0 Then
goto  INICIO
endif                   'Si SEQ=0 va para INICIO 

            'Formacion de palabras 
P1: 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoTo INICIO 

P2: 
Pause TEMPR 
GoSub LETRA_A 
Pause TEMPR 
GoSub LETRA_B 
Pause TEMPR 
GoSub LETRA_C 
Pause TEMPR 
GoSub LETRA_D 
Pause TEMPR 
GoSub LETRA_E 
Pause TEMPR 
GoSub LETRA_F 
Pause TEMPR 
GoSub LETRA_G 
Pause TEMPR 
GoTo INICIO 

P3: 
Pause TEMPR 
GoSub LETRA_H 
Pause TEMPR 
GoSub LETRA_I 
Pause TEMPR 
GoSub LETRA_J 
Pause TEMPR 
GoSub LETRA_K 
Pause TEMPR 
GoSub LETRA_L 
Pause TEMPR 
GoSub LETRA_M 
Pause TEMPR 
GoSub LETRA_N 
Pause TEMPR 
GoTo INICIO 

P4: 
Pause TEMPR 
GoSub LETRA_O 
Pause TEMPR 
GoSub LETRA_P 
Pause TEMPR 
GoSub LETRA_Q 
Pause TEMPR 
GoSub LETRA_R 
Pause TEMPR 
GoSub LETRA_S 
Pause TEMPR 
GoSub LETRA_T 
Pause TEMPR 
GoSub LETRA_U 
Pause TEMPR 
GoTo INICIO 

Letra_A:         'Para Todas las letras, o bit X y referencia como GPIO.3 
            'GPIO 54x210 - GPIO.0 o parte superior de las letras 
GPIO=%00000000 
GPIO=%00110110 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00110110 
Pause 2 
GPIO=%00000000 
Return 

LETRA_B: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_C: 
GPIO=%00000000 
GPIO=%00010110 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_D: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00000000 
Return 

LETRA_E: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00000000 
Return 

LETRA_F: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_G: 
GPIO=%00000000 
GPIO=%00010110 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00010100 
Pause 2 
GPIO=%00000000 
Return 

LETRA_H: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_I: 
GPIO=%00000000 
GPIO=%00100001 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_J: 
GPIO=%00000000 
GPIO=%00010000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00010111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_K: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_L: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00000000 
Return 

LETRA_M: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000010 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000010 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_N: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000110 
Pause 2 
GPIO=%00010100 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_O: 
GPIO=%00000000 
GPIO=%00010110 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00000000 
Return 

LETRA_P: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_Q: 
GPIO=%00000000 
GPIO=%00010110 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00110001 
Pause 2 
GPIO=%00110110 
Pause 2 
GPIO=%00000000 
Return 

LETRA_R: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00010101 
Pause 2 
GPIO=%00100010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_S: 
GPIO=%00000000 
GPIO=%00100010 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00010001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_T: 
GPIO=%00000000 
GPIO=%00000001 
Pause 2 
GPIO=%00000001 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000001 
Pause 2 
GPIO=%00000001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_U: 
GPIO=%00000000 
GPIO=%00010111 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00010111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_V: 
GPIO=%00000000 
GPIO=%00000111 
Pause 2 
GPIO=%00010000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00010000 
Pause 2 
GPIO=%00000111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_W: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00010000 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00010000 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_X: 
GPIO=%00000000 
GPIO=%00100001 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_Y: 
GPIO=%00000000 
GPIO=%00000011 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00110000 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000011 
Pause 2 
GPIO=%00000000 
Return 

LETRA_Z: 
GPIO=%00000000 
GPIO=%00110001 
Pause 2 
GPIO=%00110011 
Pause 2 
GPIO=%00110000 
Pause 2 
GPIO=%00100011 
Pause 2 
GPIO=%00000000 
Return 

LETRA_CORAZON: 
GPIO=%00000000 
GPIO=%00000010 
Pause 2 
GPIO=%00000111 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00110110 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00000111 
Pause 2 
GPIO=%00000010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_FLECHA1: 
GPIO=%00000000 
GPIO=%00000100 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000000 
Return 

LETRA_FLECHA2: 
GPIO=%00000000 
GPIO=%00000100 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000000 
Return

Como puedes ver no he modificado nada esta totalmente igual solo agregue algo...?
revisa bien como utilizas if then y te daras cuenta de los errores que tienes.
suerte me avisas cualquier cosa.
 
saludos; quiero compartir mi programa para mi POV. lo hice em mplab y se le puede poner el mensaje que uno desee pero esta echo para mensaje continuo ya que no tiene control de reinicio del mensaje por eso entre mas largo el mensaje mas radio requerira para desplegarce.

apenas esta en la fase de prueba por lo que si alguien tiene una sugerencia para la velocidad de giro o algo asi sera bienvienbenida :D

Código:
;**************************************************************************************************
;                                   Zona de Datos 

            __CONFIG _CP_OFF & _WDT_OFF &_PWRTE_ON & _XT_OSC   ;Configuraciòn para el grabador
            
            LIST P=16F84A          ; Procesador utilizado
            INCLUDE <P16F84A.INC>  ; Definición de algunos operandos        
;**************************************************************************************************
;                                   Zona de Código
            CBLOCK 0x0C
            ContMensaje        ;identifica la posicion de la letra a cargar
            ContSeg            ;identifica el valor de segmento
            LETRA            ;el valor de la letra para llamar a la secuencia correspondiente
            ENDC

            ORG        0    
Inicio    
        bsf        STATUS,RP0 
        clrf       TRISB      
        movlW      b'00011111'
        movwf      TRISA
        bcf        STATUS,RP0
Resetea 
        clrf    PORTB  
        clrf     ContMensaje
        clrf    LETRA
        movlw    .255
        movwf    ContMensaje     
CargaLetra
        clrf    PCLATH
        clrf    ContSeg
        incf    ContMensaje,F
        call    P3
        movf    ContMensaje,W
        call    Mensaje
        movwf    LETRA        ;reviza que no sea la etiqueta cero (indica el final del mensaje
        sublw    .0
        btfsc    STATUS,Z
        goto    Resetea        ;si es la marca cero se reinicia el mensaje
Determina                    ;si no es la etiqueta cero determina que no sea una letra especial y que sea valida
        movf    LETRA,W
        sublw    ' '
        btfsc    STATUS,Z
        goto    espacio
        movf    LETRA,w
        sublw    '!'
        btfsc    STATUS,Z
        goto    EXCLAMA
        movf    LETRA,W
        sublw    'Ñ'
        btfsc    STATUS,Z
        goto    ÑÑ
;****************** fin de caracteres especiales; verificamos que LETRA sea valido **********************
        movf    LETRA,W
        sublw    'Z'
        btfss    STATUS,C
        goto    NULO
        movlw    '+'            ;determina la letra que es segun relacion con + (43)
        subwf    LETRA,W
        btfss    STATUS,C
        goto    NULO
        clrf    PCLATH
        addwf    PCL,F
;****** seccion de indexeado a la secuencia correspondiente **********
        goto    mas
        goto    NULO
        goto    menos
        nop
        goto    NULO
        goto    cero
        goto    uno
        goto    dos
        goto    tres
        goto    cuatro
        goto    cinco
        goto    seis
        goto    siete
        goto    ocho
        goto    nueve
        nop
        goto    NULO
        goto    face
        goto    igual
        nop
        nop
        goto    NULO
        goto    AA
        goto    BB
        goto    CC
        goto    DD
        goto    EE
        goto    FF
        goto    GG
        goto    HH
        goto    II
        goto    JJ
        goto    KK
        goto    LL
        goto    MM
        goto    NN
        goto    OO
        goto    PP
        goto    QQ
        goto    RR
        goto    SS
        goto    TT
        goto    UU
        goto    VV
        goto    WW
        goto    XX
        goto    YY
        goto    ZZ
;******* fin del direccionamiento; comiensan las secuencias de cada simbolo *******
mas
    call     P1
    movf    ContSeg,w
    call    TabMas
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    mas
menos
    call     P1
    movf    ContSeg,W
    call    TabMenos
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    menos
cero
    call     P1
    movf    ContSeg,w
    call    TabCero
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    cero
uno
    call     P1
    movf    ContSeg,w
    call    TabUno
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    uno
dos
    call     P1
    movf    ContSeg,w
    call    TabDos
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    dos
tres
    call     P1
    movf    ContSeg,w
    call    TabTres
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    tres
cuatro
    call     P1
    movf    ContSeg,w
    call    TabCuatro
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    cuatro
cinco
    call     P1
    movf    ContSeg,w
    call    TabCinco
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    cinco
seis
    call     P1
    movf    ContSeg,w
    call    TabSeis
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    seis
siete
    call     P1
    movf    ContSeg,w
    call    TabSiete
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    siete
ocho
    call     P1
    movf    ContSeg,w
    call    TabOcho
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    ocho
nueve
    call     P1
    movf    ContSeg,w
    call    TabNueve
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    nueve
face
    call     P1
    movf    ContSeg,w
    call    TabFace
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    face
igual
    call     P2
    movf    ContSeg,w
    call    TabIgual
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    igual
AA
    call     P2
    movf    ContSeg,w
    call    TabAA
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    AA
BB
    call     P1
    movf    ContSeg,w
    call    TabBB
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    BB
CC
    call     P2
    movf    ContSeg,w
    call    TabCC
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    CC
DD
    call     P2
    movf    ContSeg,w
    call    TabDD
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    DD
EE
    call     P2
    movf    ContSeg,w
    call    TabEE
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    EE
FF
    call     P2
    movf    ContSeg,w
    call    TabFF
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    FF
GG
    call     P2
    movf    ContSeg,w
    call    TabGG
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    GG
HH
    call     P2
    movf    ContSeg,w
    call    TabHH
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    HH
II
    call     P2
    movf    ContSeg,w
    call    TabII
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    II
JJ
    call     P2
    movf    ContSeg,w
    call    TabJJ
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
;**************** Fin de la pagina 0 respecto al PCL ************
    goto    JJ
KK
    call     P2
    movf    ContSeg,w
    call    TabKK
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    KK
LL
    call     P2
    movf    ContSeg,w
    call    TabLL
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    LL
MM
    call     P2
    movf    ContSeg,w
    call    TabMM
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    MM
NN
    call     P2
    movf    ContSeg,w
    call    TabNN
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    NN
OO
    call     P2
    movf    ContSeg,w
    call    TabOO
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    OO
PP
    call     P2
    movf    ContSeg,w
    call    TabPP
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    PP
QQ
    call     P2
    movf    ContSeg,w
    call    TabQQ
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    QQ
RR
    call     P2
    movf    ContSeg,w
    call    TabRR
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    RR
SS
    call     P2
    movf    ContSeg,w
    call    TabSS
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    SS
TT
    call     P2
    movf    ContSeg,w
    call    TabTT
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    TT
UU
    call     P2
    movf    ContSeg,w
    call    TabUU
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    UU
VV
    call     P2
    movf    ContSeg,w
    call    TabVV
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    VV
WW
    call     P2
    movf    ContSeg,w
    call    TabWW
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    WW
XX
    call     P2
    movf    ContSeg,w
    call    TabXX
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    XX
YY
    call     P2
    movf    ContSeg,w
    call    TabYY
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    YY
ZZ
    call     P2
    movf    ContSeg,w
    call    TabZZ
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    ZZ
NULO
    call     P2
    movf    ContSeg,w
    call    TabNULO
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    NULO
EXCLAMA
    call     P2
    movf    ContSeg,w
    call    TabEX
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    EXCLAMA
espacio
    call     P2
    movlw    .1
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    espacio
ÑÑ
    call     P2
    movf    ContSeg,w
    call    TabÑÑ
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    ÑÑ

DISPLAY
    movwf    PORTB
    call    Retardo_10ms
    incf    ContSeg,F
    movlw    .7
    subwf    ContSeg,W
    return
TabMas
    addwf    PCL,F
    DT .1,.17,.17,.125,.17,.17,.1
TabMenos
    addwf    PCL,F
    DT .1,.17,.17,.17,.17,.17,.1
TabCero
    addwf    PCL,F
    DT .1,.125,.135,.187,.195,.125,.1
TabUno
    addwf    PCL,F
    DT .1,.35,.67,.225,.3,.3,.1
TabDos
    addwf    PCL,F
    DT .1,.103,.139,.145,.147,.99,.1
TabTres
    addwf    PCL,F
    DT .1,.1,.147,.147,.147,.109,.1
TabCuatro
    addwf    PCL,F
    DT .1,.241,.17,.17,.17,.255,.1
TabCinco
    addwf    PCL,F
    DT .1,.243,.147,.147,.147,.143,.1
TabSeis
    addwf    PCL,F
    DT .1,.125,.131,.147,.147,.141,.1
TabSiete
    addwf    PCL,F
    DT .1,.129,.145,.145,.145,.255,.1
TabOcho
    addwf    PCL,F
    DT .1,.109,.147,.147,.147,.109,.1
TabNueve
    addwf    PCL,F
    DT .1,.97,.145,.145,.145,.127,.1
TabFace
    addwf    PCL,F
    DT .1,.109,.99,.11,.99,.109,.1
    nop
    nop
    nop
    nop
    nop
    nop
;**************** FIn de la pagina 1 respecto al PCL ************
TabIgual
    addwf    PCL,F
    DT .1,.41,.41,.41,.41,.41,.1
TabAA
    addwf    PCL,F
    DT .1,.127,.144,.144,.144,.127,.1
TabBB
    addwf    PCL,F
    DT .1,.255,.147,.147,.147,.109,.1
TabCC
    addwf    PCL,F
    DT .1,.255,.131,.131,.131,.131,.1
TabDD
    addwf    PCL,F
    DT .1,.255,.131,.131,.69,.57,.1
TabEE
    addwf    PCL,F
    DT .1,.255,.147,.147,.147,.131,.1
TabFF
    addwf    PCL,F
    DT .1,.255,.145,.145,.129,.129,.1
TabGG
    addwf    PCL,F
    DT .1,.125,.131,.147,.147,.141,.1
TabHH
    addwf    PCL,F
    DT .1,.255,.17,.17,.17,.255,.1
TabII
    addwf    PCL,F
    DT .1,.131,.131,.255,.131,.131,.1
TabJJ
    addwf    PCL,F
    DT .1,.141,.131,.253,.129,.129,.1
TabKK
    addwf    PCL,F
    DT .1,.255,.17,.59,.69,.131,.1
TabLL
    addwf    PCL,F
    DT .1,.255,.3,.3,.3,.1,.1
TabMM
    addwf    PCL,F
    DT .1,.255,.65,.49,.65,.255,.1
TabNN
    addwf    PCL,F
    DT .1,.255,.97,.17,.13,.255,.1
TabOO
    addwf    PCL,F
    DT .1,.125,.131,.131,.131,.125,.1
TabPP
    addwf    PCL,F
    DT .1,.255,.145,.145,.145,.97,.1
TabQQ
    addwf    PCL,F
    DT .1,.125,.131,.139,.135,.125,.1
TabRR
    addwf    PCL,F
    DT .1,.225,.153,.149,.147,.97,.1
TabSS
    addwf    PCL,F
    DT .1,.99,.147,.147,.147,.13,.1
TabTT
    addwf    PCL,F
    DT .1,.129,.129,.225,.129,.129,.1
TabUU
    addwf    PCL,F
    DT .1,.253,.3,.3,.3,.253,.1
TabVV
    addwf    PCL,F
    DT .1,.249,.5,.3,.5,.249,.1
TabWW
    addwf    PCL,F
    DT .1,.255,.5,.25,.5,.255,.1
TabXX
    addwf    PCL,F
    DT .1,.199,.41,.17,.41,.199,.1
TabYY
    addwf    PCL,F
    DT .1,.225,.17,.15,.17,.225,.1
TabZZ
    addwf    PCL,F
    DT .1,.135,.139,.147,.163,.195,.1
TabNULO
    addwf    PCL,F
    DT .1,.109,.69,.1,.69,.109,.1
TabEX
    addwf    PCL,F
    DT .1,.1,.1,.247,.1,.1,.1
TabÑÑ
    addwf    PCL,F
    DT .1,.255,.97,.17,.141,.191,.1
P1
    movlw     .1
    movwf     PCLATH
    return
    nop
    nop
P2
    movlw     .2
    movwf     PCLATH
    return
    nop
    nop
P3
    movlw     .3
    movwf     PCLATH
    return
    nop
    nop
    nop
;**************** FIn de la pagina 2 respecto al PCL ************
Mensaje ;mensaje maximo de 20 caracteres para evitar saturacion
    addwf    PCL,F
    DT    "HOLA",0x00

    INCLUDE <RETARDOS.INC>
Fin
    IF (Fin>0x3FE)
        ERROR    "se supero el espacio maximo de la ROM"
    ENDIF
    END
 
Hola gente, estuve siguiendo en silencio la linea de este foro. Hace 3 semanas me puse a diseñar un POV con un 12F675 y un shift-register (que nos permite mediante 3 patas del pic, obtener 8 salidas independientes) y está quedando genial.
Faltan solo 2 detalles, el primero es, puedo implementar un cabezal de lectora de cassettes como sensor de campo magnetico para sincronizar el micro?
Los leds de montaje superficial funcionan bien para esto?
Por cierto lo estoy haciendo todo en SMD asi que es bastante compacto. Una vez terminado lo publico todo completo
 
Atrás
Arriba