C语言与汇编语言的混合编程课件.ppt

C语言与汇编语言的混合编程课件.ppt

ID:57044144

大小:669.50 KB

页数:27页

时间:2020-07-28

C语言与汇编语言的混合编程课件.ppt_第1页
C语言与汇编语言的混合编程课件.ppt_第2页
C语言与汇编语言的混合编程课件.ppt_第3页
C语言与汇编语言的混合编程课件.ppt_第4页
C语言与汇编语言的混合编程课件.ppt_第5页
资源描述:

《C语言与汇编语言的混合编程课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言与汇编语言的混合编程案例南通开放大学1.混合编程的实现KeilC51编译器支持在C51程序中直接插入汇编语言,也可以调用以汇编语言编写的子程序。1.C51程序中嵌入汇编程序有时需要在C51程序中嵌入用汇编语言编写的一个小程序段,来对硬件进行操作,提高程序的可靠性和灵活性。下面是C51文件中嵌入汇编语言的一般步骤。第一步:通过预编译命令“#pragmaasm”和“#pragmaendasm”在C语言代码中插入汇编语言代码。1.混合编程的实现用C语言程序中插入汇编语言延时程序的方法,编程实现从P1.1引脚输出周期为2ms的方波(设ST

2、C12C5A60S2单片机系统时钟频率为12MHz)#includesbitP1_1=P1^1;voidmain(){while(1){P1_1=1;#pragmaasmMOVR7,#12;2TDEL:MOVR6,#250;2TDJNZR6,$;4TDJNZR7,DEL;4T#pragmaendasmP1_1=0;#pragmaasmMOVR7,#12DEL:MOVR6,#250DJNZR6,$DJNZR7,DEL#pragmaendasm}}1.混合编程的实现(续)第二步:在KeilC51环境下,在Projec

3、t窗口中包含汇编代码的C文件上单击右键,在弹出的快捷菜单中选择“Optionsfor…”命令,再点击选中右边的“GenerateAssemblerSRCFile”和“AssemblerSRCFile”复选框,使检查框由灰色(无效)变成黑色(有效)状态。1.混合编程的实现(续)1.混合编程的实现(续)勾选GenerateAssemblerSRCFile和AssembleSRCFile1.混合编程的实现(续)第三步:根据选择的编译模式,把相应的库文件(如Small模式时,是KeilC51LibC51S.Lib)加入到工程中,该文件必须

4、作为工程的最后文件。如果没有做这一步编译,则会出现如下警告“UNRESOLVEDEXTERNALSYMBOL”。1.混合编程的实现1.混合编程的实现(续)库文件与编译模式的关系如下:C51S.LIB_没有浮点运算的Small模式C51C.LIB_没有浮点运算的Compact模式C51L.LIB_没有浮点运算的Large模式C51FPS.LIB_带浮点运算的Small模式C51FPC.LIB_带浮点运算的Compact模式C51FPL.LIB_带浮点运算的Large模式第四步:编译,生成目标代码。2.C51与汇编函数的相互调用与原理无论是

5、C51调用汇编函数,还是汇编调用C51函数,其操作是完全一致的。当我们需要利用函数进行混合编程时,只需分别用C语言和汇编语言把函数写好,然后在C语言程序(汇编程序)中调用汇编函数(C函数)。也可以先用C语言编写所有的代码,包括需要汇编语言实现的部分,然后采用编译控制指令SRC对需要汇编语言实现的函数进行编译,编译后将产生一个与C文件同名的汇编语言源文件,该文件的扩展名为.SRC,根据需要再对该文件进行精炼、修改。2.1混合项目文件编程混合项目文件编程就是把用C语言编写的程序保存为扩展名为.C的C语言文件,把用汇编语言编写的程序保存为扩展

6、名为.asm、.SRC或者.A51的汇编语言文件,然后把这些文件导入到同一个工程下进行编译连接的方法。在C语言中调用汇编程序时,对被调用函数(汇编语言函数)要在主调函数(C语言函数)所在文件中作出声明,并且对汇编语言程序有以下要求:要使用SEGMENT伪指令定义可再定位的CODE段。要根据不同情况对函数名进行转换,见表1。要使用PUBLIC伪指令将被调用函数说明为外部可用函数。若有参数传递,按照表3所列的规则使用参数。若有返回值,按照表4所列规则存入寄存器。2.1混合项目文件编程(续)编程实现从单片机P1.0引脚输出周期为4ms的方波,

7、同时从P1.1引脚输出周期为8ms的方波(设单片机系统时钟频率为12MHz)。分析:分别用汇编语言和C语言设计3个模块程序如下:模块1:用C语言编写主程序,使P1.1引脚输出周期为8ms的方波;模块2:用C语言编程,使P1.0引脚输出周期为4ms的方波;模块3:用汇编语言编写延时1ms的程序。程序执行时用模块1调用模块2获得8ms方波,模块2调用模块3,并向汇编程序传递字符型参数(x=2),实现2ms延时。3.混合编程模块1(文件名pulse1.c):#include#defineucharunsignedcha

8、rsbitP1_1=P1^1;externvoiddelay4ms(void);//外部函数delay4ms()声明voidmain(){while(1){P1_1=0;delay4ms();//调用模块2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。