Red de conocimiento informático - Conocimiento sistemático - Programación mixta de lenguaje ensamblador y lenguaje C, cómo usar keilC51 para compilar archivos .c y .asm en un archivo HEX, por favor dé algunos consejos, ¡gracias!

Programación mixta de lenguaje ensamblador y lenguaje C, cómo usar keilC51 para compilar archivos .c y .asm en un archivo HEX, por favor dé algunos consejos, ¡gracias!

Permítame darle un ejemplo para su referencia. Hay dos archivos, uno es S.a51 y el otro es M.C. Ambos se agregan al proyecto KEILL para su compilación. Hay dos funciones en el ensamblador; observe cómo los parámetros de C se pasan al ensamblador.

S.A51

$NOMOD51

NOMBRE SENTBYTEUP PR?_SentByteUp?SENTBYTEUP CÓDIGO DEL SEGMENTO DT?_SentByteUp?SENTBYTEUP DATOS DEL SEGMENTO SUPERPUESTOS

PUBLIC _SentByteUp

RSEG ?DT?_SentByteUp?SENTBYTEUP _SentByteUp?BYTE:

px?040: DS 1

px?041: DS 1

RSEG ?PR?_SentByteUp?SENTBYTEUP

_SentByteUp:

USANDO 0

MOV A, R7

LOPU: RRC A

CLR SCKU

MOV DATU, C

SETB SCKU

DJNZ R5, LOPU

RET PR? _SentByteDn?CÓDIGO DE SEGMENTO SENTBYTEDN DT?_SentByteDn?DATOS DEL SEGMENTO SENTBYTEDN SUPERPOSITIVO

PÚBLICO _SentByteDn

RSEG ?DT?_SentByteDn?SENTBYTEDN _SentByteDn?BYTE:

px?042 : DS 1

px?043: DS 1

RSEG ?PR?_SentByteDn?SENTBYTEDN

_SentByteDn:

USANDO 0

MOV A, R7

LOPD: RRC A

CLR SCKD

MOV DATD, C

SETB SCKD

DJNZ R5, LOPD

RET

END

M.C

#include lt;reg51.hgt;

extern void SentByteUp(uchar c, uchar b); //Declarar el uso de funciones externas

extern void SentByteDn(uchar c, uchar b); funciones

void main(void)

{

SentByteDn(a, 8); // Llama a la función ensambladora

SentByteUp( a, 8) ; // Llama a la función ensamblada

}

jinfahua@126.com QQ505308008