
C51里面,汇编语言跟C语言可以互相调用,这我都试验过的,C调用汇编,汇编调用C!!!要这么做的话,汇编语言必须严格遵守Keil的格式,需要加入很多控制语句,一点都不能省(我曾经用C调用汇编,少了一个字符,编译的时候提示一个警告,没在意,结果编译通过,程序不能运行);其次就是参数传递的问题,建议楼主在百度文库里面搜索《Cx51 编译器 用户手册》中文,403页,可以下载,看第六章,里面讲的是参数的传递规则,还有C调用汇编的方法,关于汇编调用C,可以看\Keil\C51\LIB里面的STARTUPA51文件,这是C语言的启动文件,典型的汇编语言调用C函数(只不过这个函数的名字叫 main 呵呵),然后模仿它的写法在里面根据前面讲的参数传递规则加入需要传递的参数就好了。
注意:汇编调用C的话,必须要在汇编程序里面初始化堆栈指针SP,因为C语言肯定会用到堆栈。
PS:C语言多简单啊,比汇编简单多了,会汇编得人学C很容易的,我就是先学的汇编,建议LZ学习C语言
高级数控编程:子程序调用及编程举例
一次装夹加工多个形状相同或刀具运动轨迹相同的零件,即一个零件有重复加工部分的情况下,为了简化加工程序,把重复轨迹的程序段独立编成一程序进行反复调用, 这重复轨迹的程序称为子程序,而调用子程序的程序称主程序。
子程序的调用
子程序的`调用方法如图1-2所示。需要注意的是,子程序还可以调用另外的子程序。从主程序中被调用出的子程序称一重子程序,共可调用四重子程序,如图1-3所示。
在子程序中调用子程序与在主程序中调用子程序方法一致。
格式:M98 P L ;
说明:P:子程序名;
L:重复调用次数,省略重复次数,则认为重复调用次数为1次;
例:M98 P123 L3;
表示程序号为123的子程序被连续调用3次,如图1-4所示。
子程序中必须用M99指令结束子程序并返回主程序。
应用举例:
加工如图1-5所示轮廓,以知刀具起始位置为(0,0,100),切深为10mm,试编制程序。
图1-6
相关知识点:
●在使用子程序编程时,应注意主、子程序使用不同的编程方式。一般主程序中使用G90指令,而子程序使用G91指令,避免刀具在同一位置加工。
●当子程序中使用M99指令指定顺序号时,子程序结束时并不返回到调用子程序程序段的下一程序段,而是返回到M99指令指定的顺序号的程序段,并执行该程序段。
编程举例:如图1-6所示。
子程序执行完以后,执行主程序顺序号为18的程序段。
;这样给你说吧。当单片机运行起来的时候是高速运转你while(1)里面的程序。但是这样是不够的,比如你想把某个信号传递给单片机让它处理,比如说:你按了某个键来控制某个灯的亮灭,这时候就需要单片机来响应你的动作,响应的方式就是中断。也就是说你在主程序中完成了某个中断的触发条件时,当达到这个条件时程序就会跳转到中断服务函数中去,执行完中断服务函数中的程序后再返回主程序中继续循环执行。你说的调用其实不太正确,中断服务函数只能触发,它是由单片机内特定的某些寄存器的标志位控制的,当这些满足触发条件的时候,标志位被硬件置1,然后自动执行你编写的中断服务函数。
说的不是很清楚,请见谅,中断是单片机内最重要的功能之一,与之对应的还有定时器(这是单片机的心脏),这些内容在51里面都是很简单的,但是到了32位单片机里面会变得特别复杂。
希望这些内容能给你一些帮助。
以上就是关于汇编程序嵌入C程序全部的内容,包括:汇编程序嵌入C程序、高级数控编程:子程序调用及编程举例、mcs-51单片机程序中可以直接调用中断服务程序吗为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)