Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: riki en 01 de Octubre de 2009, 10:56:29
Título: problemas con tablas
Publicado por: riki en 01 de Octubre de 2009, 10:56:29
hola muchachos, como han estado, deseo me ayuden esta vez en un problema que tengo con tablas, me aparece que tengo overflow en la instruccion call, y no puedo simular con porteus a consecuencia, uso tablas para mostrar numeros en un display de leds 8 por 8, son como 80 bytes los que envio al pic 16f84, con un codigo que cree para envio I2C, que puede estar pasando, desde ya muchas gracias, les adjunto el codigo fuente en asm,
Título: Re: problemas con tablas
Publicado por: isfan en 01 de Octubre de 2009, 19:06:18
Hola depurate mejor el código, ya en el codigo veo un call dentro de otro call, es lo que se llama anidamiento, el 16f84 soporta un maximo de 8 al que hace 9 se te desborda es decir no puedes hacer 8 call uno dentro del otro
Título: Re: problemas con tablas
Publicado por: juan47 en 02 de Octubre de 2009, 07:01:27
Hola un saludo a todos Si, tienes un desvordamiento de la pila ,no causado por codigo, sino porque se supera el valor de la tabla Simulalo con MPLAB dejalo un momento en funcion run ,dale a la pausa y despues a paso a paso veras que te va de una instruccion goto INICIO ,al principio del programa y en consecuencia a los primeros pasos para comenzar a leer la tabla cargando PCL con el valor de la linea goto INICIO Espero que te sirva de ayuda Un saludo
Título: Re: problemas con tablas
Publicado por: tapi8 en 02 de Octubre de 2009, 07:26:39
No tienes problemas con los CALL, creo, ya que haces return de cada vez. No te tienes que preocupar del PCLATH el prgrama solo llega a la posicion 0F3, esto lo puedes ver en el disassembly listing del menu view, de todas maneras con la tabla al principio tampoco los deberias tener. El programa esta muy desordenado y es dificil analizarlo, ya es complicado ver programas hechos por otro y si estan desordenados mas. deberias poner al principio del programa estas directivas:
LIST P=16F84A, ; usar PIC 16F84A #include <p16f84A.inc>
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC ; code protec off ; power up timer on ; watchdog off ; oscilador XT Para no tener que definir tu los SFR y solo definir tus registros.Aqui es este subforo hay un par de programas para hacer esto qe estas haciendo, y finalizados con exito, ademas tienen explicaciones de Brunof, que te aseguro que son muy buenas echales un vistazo. Me gusto mucho tu sistema de envio de datos te lo has currado Todo este trozo de codigo no lo ejecuta al tener el punto y coma delante lo asume como comentarios.
Título: Re: problemas con tablas
Publicado por: tapi8 en 02 de Octubre de 2009, 07:58:45
Si señor lo que te dice Juan es cierto, en el contador tienes que tener en cuenta hasta que numero va a llegar y empezar de nuevo, o en el final de la tabla hacer lo que se hace en esta
BCD7SEG: addwf PCL,1 ; Se incrementa el contador del programa retlw 0x3F retlw 0x06 retlw 0x5B retlw 0x4F retlw 0x66 retlw 0x6D retlw 0x7D retlw 0x07 retlw 0xFF retlw 0x6F clrf contador ; al desbordar hace esto retlw 0x3F
Título: Re: problemas con tablas
Publicado por: riki en 02 de Octubre de 2009, 12:46:24
muy bien, voy a revisar nuevamente mi programa, si hay un call de mas voy a tratar de solucionarlo, muchas gracias muchachos, ahh, y si en verdad reconozco que sy un poco desordenado, voy a ordenar el programa, ademas tienen muy pocos comentarios, estas seguro de que hay un call de mas...
Título: Re: problemas con tablas
Publicado por: riki en 02 de Octubre de 2009, 12:53:48
eso del codigo en comentario es simplemente para deshabilitar algo que hice de mas, no hay problema con eso, si os call estan bien, y tampoco tiene problemas el pclath, que podria estar pasando
Título: Re: problemas con tablas
Publicado por: Leon Pic en 02 de Octubre de 2009, 13:21:30
Además de pedirte que ordenes un poco el programa, tienes que colocar las posiciones de memoria que ocupar el programa mediante org.
Te falta org 0x00 que es el vector de interrupción. Al no haberlo declarado, cuando ensambles en programa, la instrucción que ocupa este línea (0x00 de la memoria de programa) es la instrucción bsf estado,5 (debido a la directiva #define banco1).
Código: ASM
#define banco0 bcf estado,5
#define banco1 bsf estado,5
banco1
clrf porta
clrf portb
banco0
movlw .255
movwf portb
movlw .50
movwf comparar_contador
clear_contador clrf contador
goto inicio
Tienes que organizarlo de esta manera:
Código: ASM
#define banco0 bcf estado,5
#define banco1 bsf estado,5
org 0x00
goto inicio
org 0x04
banco1
clrf porta
clrf portb
banco0
movlw .255
movwf portb
movlw .50
movwf comparar_contador
clear_contador clrf contador
Título: Re: problemas con tablas
Publicado por: tapi8 en 02 de Octubre de 2009, 13:46:16
Lo que esta pasando "principalmente" es lo que dice Juan47 que la tabla se desborda cuando el programa llega al final de ella la primera vez, donde incremantas contador, te debes asegurar que no se desborde, o como te puse yo en la tabla, al final de ella debes resetear el contador y comenzar de nuevo. Lo que te dice Leon_pic tambien es cierto, el pregrama debe empezar con GOTO INICIO en ORG 0X00 y no deberia tener instrucciones antes de ella.
Título: Re: problemas con tablas
Publicado por: juan47 en 09 de Octubre de 2009, 08:00:29
Hola un saludo La tabla se desborda devido a la siguienta instruccion: subwf contador Al no decir en progrma donde quieres que deje el resultado el MPLAB por deferencia te lo deja en el mismo registro subwf contador,1 deberias poner subwf contador ,0 para que no te modificara dicho registro Solo con esto no te funciona el programa puesto que como te han descrito los compañeros falta un poco de organizacion Si efectuas unos cambios dentro de la estructura del programa ,no de instrucciones ,veras que el resultado sera satisfactorio Sin saber que mas decir mando un saludo
Título: Re: problemas con tablas
Publicado por: riki en 11 de Octubre de 2009, 18:23:16
si eso es, la tabla se desborda por esta instruccion, subwf contador, en verdad no se bien porque, podrian aclararme el tema, despues de poner como me dijiste juan47, volvio a desbordarse pero con mas lentitud, le hice algunos cambios en contador, cambie de valor y funciono, en verdad no hiba a lograr saber el error si no fuera por ustedes, gracias, solo les pido mas explicacion al respecto, puedo programar, y no teng mucho orden en los programas pero nose mucho de porque se desborda
Título: Re: problemas con tablas
Publicado por: juan47 en 12 de Octubre de 2009, 14:30:01
Hola un saludo a todos. Intentare esplicartelo tal y como yo lo veo (espero que algun amable compañero corrija si cometo algun error) La tabla tiene 50 lineas o datos para visualizar,en el programa que nos has facilitado pones hasta load5 load6 y load7 estan anulados esto significa que lo que seria la fila 7y8 nose encenderian solo se llegan a encender desde la fila 1 a 6 En consecuencia si haces un poco de calculo te daras cuenta que la tabla, osea el ultimo dato de la tabla, no te termina en load5 (que seria la fila 6)y en consecuencia no llega a hacer la comparacion entre comparar_contador y contador,siguiendo el programa e incrementando contador con lo cual se sale de la tabla. Tambien comentarte que comparar_contador no debes cargarlo con .50 ,si que hay 50 datos en la tabla pero no empieza en el 0 tienes que restarle 1 a los 50 puesto que hay una operacion addwf pcl,1 deberias cargarlo con 49 No se si te he ayudado ,espero que algun compañero con mas experiencia que yo sepa esplicartelo con mas detalle Un saludo
Título: Re: problemas con tablas
Publicado por: riki en 14 de Octubre de 2009, 12:36:12
muchas gracias juan, me sirvio bastante tu explicacion, ya puedo leer la tabla con el 16f84, esta tabla tiene 248 datos, ahora mi problema es que tengo otra tabla de 200 datos que quiero leer y no puedo, segun leí es el pclath que me falta direccionar, pero aun tengo mis dudas de que este tipo de pic se pueda direccionar, al simular el pic simplemente vuelve a leer la primera tabla ignorando la segunda, creo que con este micro solo puedo leer el contenido de una tabla, es cierto?? o estoy mal?? gracias desde ya
Título: Re: problemas con tablas
Publicado por: BrunoF en 14 de Octubre de 2009, 13:20:41
Título: Re: problemas con tablas
Publicado por: riki en 19 de Octubre de 2009, 19:33:57
gracias en verdad, esta muy interesante el tutorial que enviaste, muy bueno, me sirvio mucho, voy a seguir investigando y voy a ir probando, aunque sigo con algunas dudas voy a aclararlas leyendo un poco mas, se que es eso lo que me falta, pero de todos modos se que cuento con ustedes, gracias y ml¡il gracias