【摘要】:1)用内嵌汇编法写汇编语句有时,程序要采用汇编语句来设计,C51编译器支持图1-1所示的3种方法来写汇编语句。4)C51本征函数与程序设计单片机指令系统中的一些指令用C语言不容易编写,但这些语句在程序设计时又很有用。表1-3C51常用本征函数本征函数调用例子如下:_nop_函数设计延时程序,每次调用占1个指令周期。图1-3流水灯程序设计中用循环移位本征函数与正常语言设计对比
1)用内嵌汇编法写汇编语句
有时,程序要采用汇编语句来设计,C51编译器支持图1-1所示的3种方法来写汇编语句。
图1-1 C程序内嵌汇编书写形式
2)C程序调用汇编程序
C程序调用汇编程序时,会按参数传递规则把输入参数准备好,再去运行汇编程序。调用过程如图1-2所示。
图1-2 C语言调用汇编程序的过程
3)汇编程序编写与调用
用纯汇编语句写的程序也可以调用C语言程序,这里需注意两点:(1)汇编语句一般要按段的方式编写;(2)程序调用时,要先按参数存储规则准备好参数,再调用C语言子程序。
汇编程序的编写规则请大家参考A51编程规则说明,这里就不再论述。(www.xing528.com)
4)C51本征函数与程序设计
单片机指令系统中的一些指令用C语言不容易编写,但这些语句在程序设计时又很有用。这时我们可以用C51提供的本征函数来高效使用这些指令,达到优化程序的目的。调用这些函数时,是把函数对应用指令直接嵌入调用函数中,而不是用ACALL中的各LCALL指令调用。C51提供的本征函数如表1-3所示。
表1-3 C51常用本征函数
本征函数调用例子如下:
(1)_nop_(void)函数设计延时程序,每次调用占1个指令周期。
(2)用移位函数设计程序。
C语言中的“≪”和“≫”能进行移位操作,但新移入的数都是0,也不能实现循环移动。在设计流水灯程序中,用本征函数进行设计会更简单,如图1-3所示。
图1-3 流水灯程序设计中用循环移位本征函数与正常语言设计对比
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。