Autor Tema: Llamadas a subrutinas  (Leído 1584 veces)

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

Desconectado rmoreno

  • PIC10
  • *
  • Mensajes: 3
Llamadas a subrutinas
« en: 09 de Febrero de 2006, 08:36:00 »
Hola Amigos del foro, es la primera vez que escribo pero me da mucho gusto encontrar personas que gustan de estos microcontroladores para hacer sus diseños, y les platico una duda que me surgió, para hacer unas pruebas de respuesta visual para la carrera de Ingeniería biomédica de la universidad del valle de México en el D.F. me pidieron un circuito con 12 leds, ocho rutinas y cuatro velocidades diferentes, la cantidad de leds la resolví con un decodificador 1 de 16, pero el problema se me presentó cuando al asignar lo tiempos de retardo para las diferentes velocidades usaba una llamada a una tabla "call tabla", el programa saltaba a la tabla pero una vez que sumaba el PCL con un valor asignado, desviaba el flujo a otro punto del programa que nada tenía que ver con la tabla o el regreso de subrutina o extracción de la pila, etc, resolví el problema poniendo la rutina tabla antes de la etiqueta main, la pregunta es si alguien sabe por que sucedió eso, es la segunda vez que me pasa, la primera fué con un 12C508, pero ahí sí me indicaba que pusiera la rutina arriba y no hasta abajo como normalmento lo hago, uso Ensamblador con MPLAB y un JDM programmer con el IC-prog. Gracias

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
RE: Llamadas a subrutinas
« Respuesta #1 en: 09 de Febrero de 2006, 09:11:00 »
Hola rmoreno, las tablas de la forma que tú las usas se deben ubicar en las primeras 256 posiciones de memoria de programa, esto es porque tú al cargar el registro PCL solo le introduces 8 bits o sea que solo puedes direccionar 256 posiciones, por ese motivo las tablas van a continuación de los comandos org 0 y org 4 , lo ultimo que normalmente se coloca en la lista de un programa es el programa principal, o sea que primero los re-direccionamiento de las posiciones de arranque y reset, luego las tablas , después las sub-rutinas y por ultimo el programa principal.

Espero te sea de utilidad.

Un saludo, y suerte.

Atte. CARLOS

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado rmoreno

  • PIC10
  • *
  • Mensajes: 3
RE: Llamadas a subrutinas
« Respuesta #2 en: 09 de Febrero de 2006, 09:33:00 »
Gracias Chaly29, por eso deben ir al principio del programa, lo bueno es que lo resolví anoche antes de entregar el cicuito pero solo me quedó la duda. Ahora entiendo que es por el ancho de 1 byte del PCL, espero colaborar un poco más en lo posible con ustedes.


 

anything