MSP430是一款16位的单片机,它具有超低功耗、丰富的片内外围模块、多样的可选型号、软件对硬件的灵活控制能力等优点。因此特别适合于以电池为电源的应用场合或手持设备,目前在国内主要应用于三表系统和消防设备方面。MSP430单片机的开发软件较常用的是IAR公司的IAR Embedded Workbench集成开发环境,它可以编辑、汇编和编译汇编语言和C语言源文件,并且其C语言和汇编语言具有相同格式的头文件,给开发带来了灵活性。C语言具有编程简单,可以移植等优点,但是产生代码较长,对硬件的直接控制能力相对较弱;汇编语言产生的代码较小,控制硬件灵活,但是可读性差,移植困难,因此为了发挥各自优点,产生高速度、高效率的代码混合编程是最好的选择。
1
1.1 寄存器应用
1.2 堆栈结构和参数传递
1.3 中断函数
2
2.1
2.2 中断函数
3 混合编程
4 应用实例
4.1
4.1.1
/**************************************************************/
/*
文件名:c_source.c
/*
C语言和汇编语言混合编程,C源程序
/*
这段源程序调用汇编语言函数get_rand()
/* 注意工程必需包含汇编语言源文件
"asm_source.s43"
/**************************************************************/
#include
<MSP430x14x.h>
extern unsigned long get_rand(unsigned char
seed);
/****************************************************************/
/*
主函数
/****************************************************************/
void main( void )
{
// === 系统初始化 ==========================================
// === 系统初始化结束========================================
}
// === 主程序结束 ==================================================
/******************************************************************/
/* 乘法子程序,供汇编语言函数调用 */
/******************************************************************/
unsigned long mult(int x , int y)
{
}
// === 乘法子程序结束 ================================================
4.1.2 汇编语言源程序
; ******************************************************************
; 文件名: asm_source.s43
; C语言和汇编语言混合编程,汇编语言源程序
; 这段源程序调用两个C语言函数,标准库函数rand()和用户自定义函数mult()
; *******************************************************************
;====================================================================
; get_rand
;====================================================================
get_rand;
END
4.2 汇编语言编写中断服务程序
4.2.1
/********************************************************************/
/*
文件名:c_main.c
/*
C语言和汇编语言混合编程,C源程序
/* 这段源程序被看门狗定时器中断后执行汇编语言函数编写的中断服务程序 */
/* 注意工程必需包含汇编语言源文件
"wdt_int.s43"
/********************************************************************/
#include <MSP430x14x.h> /*
/********************************************************************/
/*主函数
/********************************************************************/
void main( void )
{
// === 系统初始化 =============================================
// === 系统初始化结束===========================================
}
// === 主函数结束 ==============================================
4.2.2 汇编语言中断服务程序
;**********************************************************************
; 文件名: wdt_int.s43
; C语言和汇编语言混合编程,汇编语言源程序
; 看门狗定时器中断服务程序
;***********************************************************************
;
; 看门狗定时器中断服务程序
;================================================================
;================================================================
;================================================================
END
5 结束语
插入表情