新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > MSP430 单片机C语言和汇编语言混合编程

MSP430 单片机C语言和汇编语言混合编程

作者:时间:2012-03-19来源:网络收藏

3

明确了以上约定,就非常容易。基本做法是:
(1)C源文件用‘extren’关键字导入被源文件导出的标号。
(2)源文件用‘PUBLIC’关键字把标号导出给C语言源文件。
(3)源文件用‘EXTREN’关键字导入被C语言源文件导出的标号。
(4)C语言源文件把标号导出给汇编语言文件,则不需要关键字。
(5)把写好的C语言源文件和汇编语言源文件加入工程,并用各自调用函数的指令调用即可。

4 应用实例

4.1 C 语言函数和汇编语言函数相互调用

在这个示例中C语言函数main()调用汇编语言函数get_rand()以得到一个随机数;汇编语言函数get_rand()首先调用C语言的标准库函数rand()得到一个整型随机值,然后用调用C语言函数mult()的方法把这个随机值乘以main()函数传递给自己的实参,并把乘积值返回给 main()函数。

4.1.1 C语言源文件
/**************************************************************/
/* 文件名:c_source.c 2003-01-05 */
/* C语言和汇编语言,C源程序 */
/* 这段源程序调用汇编语言函数get_rand() */
/* 注意工程必需包含汇编语言源文件 asm_source.s43 */
/**************************************************************/
#include x14x.h> /* 头文件 */
extern unsigned long get_rand(unsigned char seed); /* 汇编语言函数原型声明 */
/****************************************************************/
/* 主函数 */
/****************************************************************/
void main( void )
{
unsigned char seed; /* 局部变量定义*/
unsigned long value;
// === 系统初始化 ==========================================
IFG1 = 0; /* 清除中断标志1 */
WDTCTL = WDTPW+WDTHOLD; /* 停止看门狗 */
P1DIR = 0xff;
// === 系统初始化结束========================================

seed = 0x55;
value = get_rand(seed); /* 调用汇编语言函数get_rand()得到一个随机数 */
while(1); /*程序结束*/
}
// === 主程序结束 ==================================================
/******************************************************************/
/* 乘法子程序,供汇编语言函数调用 */
/******************************************************************/
unsigned long mult(int x , int y)
{
return (x *y); /*x乘y */
}
// === 乘法子程序结束 ================================================

c语言相关文章:c语言教程




评论


相关推荐

技术专区

关闭