TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: dj_johann en 24 de Marzo de 2007, 12:36:39
-
Q tal?
He estado tratando de compilar mi trabajo. Sin embargo cada vez que intento un "build all" me aparecen 8 errores como el mencionado abajo:
Error[113] C:\HORNO MICROONDAS 2007\HORNO MICROONDAS 2007.ASM 134 : Symbol not previously defined (sonido)
[...]
Halting build on first failure as requested.
La diferencia entre este error y los otros 7 es el nombre que se encuentra entre paréntesis y la línea....
Ahora bien, "sonido" es el nombre que le puse a una subrutina. Cuando hago clic sobre el error me envía directo a una línea que es:
CALL sonido
¿QUÉ ESTÁ SUCEDIENDO? ¿Por qué asume que "sonido" es un registro general y no el nombre de una etiqueta de una subrutina? NOTA: el código fuente está ordenado y tabulado.
A continuación le dejo fragmentos del ASM para que me entiendan...
list P=16f877A ; Procesador utilizado, lista de la directiva para definir el procesador
#include <p16F877A.inc> ; Definición de los operandos utilizados
[...]
BCF estado, banco ; Cambia a banco 0
BCF intcon, gie ; Deshabilita TODAS las interrupciones
BCF intcon, toif ; Borra el banderín de desbordamiento del TMR0
CALL sonido ; suena un beep de encendido,con RETARDO
[...]
END
[...]
sonido BSF puertod,buzzer ; Enciende el beeper
CALL RETARDO ; Llama a la subrutina de temporizacion RETARDO
CALL RETARDO ; La vuelve a llamar por otros 125 ms mas
CALL RETARDO ; Llama a la subrutina de temporizacion RETARDO
CALL RETARDO ; La vuelve a llamar por otros 125 ms mas
BCF puertod,buzzer ; Apaga el beeper
RETURN
GRACIAS DE ANTEMANO POR SU AYUDA!
ADJUNTO EL ASM COMPLETO
-
Hola dj_johann, hace tiempo que no programo en ASM pero si no recuerdo mal... tu error está en que no puedes poner código más allá de la etiqueta END que define el final de tu programa; por tanto, como el compilador no tiene en cuenta estas lineas, no encuentra la etiqueta "sonido".
Saludos!
-
Tienes razón. Así fue que solucioné la cosa gracias a la ayudita de PAO!!!
Hay que colocar todas las subrutinas entre ORG 05h y el "inicio" y por último va en END