Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/05/2014 #1


Ensamblador, PIC 18F2550 y goto+1
Buenos días a todos,

Hace unos días me puse a programar un PIC 18F2550 en ensamblador. Hice un programa que encendiera y apagara un LED conectado a cualquier pin del puerto A.

Para el retardo use una rutina generada mediante esta página: http://www.golovchenko.org/cgi-bin/delay

Supongo que la han usado o han usado alguna similar y como sabrán para ese tipo de rutinas es muy frecuente utilizar instrucciones goto $+1. Pues bien al momento de compilar el código en MPLAB el linker (mplink) daba un error y no compilaba. El error era algo relacionado con el goto pero no era nada claro.

Empezé a hacer pruebas y cambié cada goto para que apuntara hacia una etiqueta en lugar de $+1 y así si funcionó.

Lo que me queda de esta experiencia es que los PIC 18F no permiten el uso del operador $+x. Ustedes qué creen? Les ha pasado esto que expongo aqui con anterioridad?
04/05/2014 #2

Avatar de papirrin

Lo que me queda de esta experiencia es que los PIC 18F no permiten el uso del operador $+x. Ustedes qué creen? Les ha pasado esto que expongo aqui con anterioridad?
a mi tambien me paso lo mismo con un 18F2550. lo unico que hice para corregirlo fue poner etiquetas.
04/05/2014 #3


Si, lo mismo hice yo. Es una lástima porque usar $+x era muy sencillo.
04/05/2014 #4

Avatar de Daniel Meza

Lo que sucede es que la arquitectura PIC18X utiliza dos bytes para cada instrucción (por ello la necesidad de que el contador de programa siempre finalice en 0). En vez de poner "goto $+.1" pongan "goto $+.2" y verán que funciona. Saludos
04/05/2014 #5

Avatar de ByAxel

También usen [ BRA ] para eso.
BRA $ + 2
BRA $ - 2

Ojo que son de a 2 por cada instrucción ya que las instruciones son de 16bits en un PIC de 8 bits.
04/05/2014 #6


Gracias Daniel Meza y ByAxel por la aclaración. Probé el programa usando goto $+2 y funcionó correctamente.

Después de leer sus explicaciones revisé la hoja de datos del PIC y en la sección 5.2.3 claramente dice que el contador de programa siempre avanza de 2 en 2. Al final mi problema era falta de documentación

Aunque ahora que se como funciona casi prefiero seguir usando etiquetas porque si no terminan siendo más confusos los programas.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.