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 p>
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