Programación Específica > Microcontroladores

 Rutinas En Ensamblador

(1/3) > >>

sspiegel:
Hola a todos,

Estoy tratando de utilizar rutinas escritas en ensamblador desde un fichero escrito en C, pero no logro que funcione. Esto es lo que he provado:

uno.c :

#include "rut1.h"

extern void Inici(void);

void main()
{
  Inicio();
}
----------------------------------------------
rut1.h :

extern void Inicio(void);
----------------------------------------------
rut1.asm :

PUBLIC _Inicio

_DATA   SEGMENT WORD PUBLIC 'DATA'
_DATA   ENDS

_BSS    SEGMENT WORD PUBLIC 'BSS'
_BSS    ENDS

DGROUP  GROUP   _DATA, _BSS

ASSUME cs:RUTINAS, ds:DGROUP

RUTINAS SEGMENT BYTE PUBLIC 'CODE'

_Inicio   PROC FAR  
               ; aqui va el codigo en asm
               ret
_Inicio ENDP

RUTINAS ENDS
----------------------------------------------

Al compilar con CCS C me señala la palabra "extern" del fichero rut1.h y me da el error: "A #DEVICE required before this line"

Alguien sabe como se tiene que hacer para usar rutinas en asm desde C?
Saludos y gracias,

Fran

lalo_soft:
asegurate que en el archivo *.h al que C primero apunta este esto

#include <16f873A.h> //esto cambia segun el micro que usas

#device *=16; // esto significa que el compilador agrerara el codigo de soporte para manejar los registro del micro como si estuvieran en un direccionamiento lineal (no por bancos)

sspiegel:
Hola a todos,

Gracias lalo_soft por el consejo. Se ha solucionado el problema del "Device". Ahora lo que dice es "Funcion usada pero no definida: Inicio" (en ingles) dentro del fichero uno.c

Si dentro del fichero rut1.h cambio "extern" por "public" el error es otro: "esperando un ("

¿Cómo soleis hacerlo para poner diferentes funciones en ficheros separados?
Saludos,
Fran

lalo_soft:
no me queda claro tu problema puntual.

sspiegel:
Hola,

Lo que pretendo hacer es crear unas librerias y poder usarlas desde otro fichero, pero no encuentro la manera. El compilador de C que uso es el CCS C.

Saludos y gracias

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa