Autor Tema: funciones en asm llamadas desde c  (Leído 1700 veces)

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

Desconectado antayhua

  • PIC10
  • *
  • Mensajes: 32
funciones en asm llamadas desde c
« en: 27 de Diciembre de 2017, 23:48:21 »
Saludos a todos, una consulta quiero hacer una funcion en asm e incluirlo en un archivo c y llamarlo desde c, mas o menos asi:

archivo .c

lcd_init();
----------------------------
archivo asm

_Lcd_Init:

;codigo en assembler

L_end_Lcd_Init:
            RETURN
; end of _Lcd_Init

como podria hacerlo, muchas gracias por sus respuestas.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:funciones en asm llamadas desde c
« Respuesta #1 en: 28 de Diciembre de 2017, 09:42:40 »
Va a depender del compilador que estes usando. El mayor problema que tenes es cuando pasas variables y no tocar la memoria casi...

Si lo que queres es para un LCD entonces mejor buscate un driver para LCD.. Es mucho mas corto y mas entendible en C.
Si vas a usar pocas instrucciones por ahi te conviene ponerlo en en linea con la misma funcion
El unico momento que deberias usar ASM con C es cuando necesites gran velocidad o un control grande en tiempos, como el cambio de tareas de un RTOS por ejemplo, bootloader, entre otros

Para XC8 tenes que seguir el
MPLAB XC8 C Compiler User's Guide
http://ww1.microchip.com/downloads/en/DeviceDoc/50002053G.pdf
Pagina 216

Ahi incluso te da un ejemplo, observaras que el ASM tambien cambia, tenes que usar BANKMASK, parentesis, etc. Por eso NO es lo mismo y vas a tener que cambiar bastante.

Con CCS/XC8 creo que es preferible crear una funcion en C y adentro usar los pragma #asm para comenzar con el ASM.

Vuelvo a repetir, no hay necesidad de que te compliques la vida de esta forma si no es necesario ( LCD )


 

anything