430单片机中C语言与汇编语言混合编程本文引用的示例

图片[1]-430单片机中C语言与汇编语言混合编程本文引用的示例-4747i站长资讯

430单片机C语言与汇编语言混合编程

本文引用地址:

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

本例中,C语言函数main()调用汇编语言函数()得到一个随机数;汇编语言()首先调用C语言标准库函数rand()得到一个整数随机值,然后使用C语言调用函数mult()的方法,将这个随机值乘以传递给的实际参数main() 函数,并将相乘后的值返回给 main() 函数。

1.1C语言源文件

#

长(字符种子);

无效的主要(无效)

{

炭种子;

长期价值;

// ===系统初始化============================================ =

IFG1 = 0;

= WDTPW+;

P1DIR = 0xff;

// ===系统初始化结束========================================== =

种子 = 0x55;

价值=(种子);

而(1);

}

// ===主程序结束 ========================================== == ========

长乘法(整数 x ,整数 y)

{

(x*y);

}

// ===乘法子程序结束 =========================================== = =======

1.2 汇编语言源程序

; ****************************************************** **************

;文件名:.s43

; C语言和汇编语言混合编程,汇编语言源程序

;本源程序调用了两个C语言函数,标准库函数rand()和用户自定义函数mult()

; ****************************************************** ******************

# “。H”; 头文件

名称

兰特;C语言标准库函数rand()

多;.c 中的用户定义函数

;=================================================== === =====================

;

;=================================================== === =====================

;导出函数名到C语言函数

RSEG 代码

;

推R11;正常寄存器推送保护

mov.b R12, R11; C函数传递的实际参数在R12中,发送到R16暂存

呼叫#rand; 调用 C 函数 rand()

;函数值在R12中以整数形式返回

; rand() 函数值作为 mult() 函数的第一个参数

; 发送到 R12 进行参数传递

移动 R11,R14; C函数传递的实参作为mult()函数的第二个参数

; 发送到 R14 进行参数传递

调用#mult; 在 R12/R13 寄存器对中返回的 mult() 值

弹出R11;出栈恢复寄存器内容

ret

结尾

2.用汇编语言编写的中断服务程序

为了提高整个系统的响应速度c语言子函数调用,要求中断服务程序的执行时间更短,执行速度更快,所以最好的办法是用汇编语言编写中断服务程序。但要注意:1、中断服务程序不能有参数传递和返回值。2、中断服务程序中使用的所有寄存器都需要保护。本例中看门狗定时器的中断服务程序用汇编语言编写,主程序用C语言编写。

2.1C语言主程序

#

无效的主要(无效)

{

// ===系统初始化 ============================================ == ==

IFG1=0;

=;

P1DIR = 0x01;

IFG1 &= ~;

IE1 |= WDTIE;

_EINT();

// ===系统初始化结束========================================== === =

while(1);/*主程序是一个无限循环

}

// ===主函数结束 ========================================== == ====

2.2 汇编语言中断服务程序

;************************************************ * *******************

;文件名:.s43

; C语言和汇编语言混合编程,汇编语言源程序

; 看门狗定时器中断服务程序

;************************************************ * ********************

名称

# “。H”; 头文件

;=================================================== === ==============

; 看门狗定时器中断服务程序

;=================================================== === ===============

;导出函数名到C语言函数

RSEG 代码

xor.b #001h,&P1OUT;触发P1.0c语言子函数调用,led通断转换

视网膜;中断返回

;=================================================== === ===============

(1);中断向量段

;=================================================== === ===============

组织机构

德国之声

结尾

图片[2]-430单片机中C语言与汇编语言混合编程本文引用的示例-4747i站长资讯

文章来源:http://www.eepw.com.cn/article/201611/322505.htm

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享