spmc75单片机c和汇编混合编程.pdfVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
spmc75单片机c和汇编混合编程

SPMC75 单片机C 和汇编混合编程 发布:2011-8-21 | 作者:—— | 来源:liubangming | 查看:484 次 | 用户关注: 摘 要:本文主要介绍凌阳16位变频控制单片机SPMC75 系列单片机地C和ASM (汇编)混合编 程的应用。关键词:SPMC75 嵌入式汇编1 引言 支持C语言几乎是所有微控制器程序设计的一项基 本要求,当然SPMC75 系列单片机也不例外。μnSPTM 指令结构的设计就着重考虑对C语言的支持,GCC 就是一种针对μnSPTM 操作平台的ANSI-C编译器。但是在应用中对于程序的设计,特别是C和ASM 混合使用的时候有些地方是需要注意的,在C 中如何嵌入ASM也 摘 要: 本文主要介绍凌阳16 位变频控制单片机SPMC75 系列单片机地C和ASM (汇编)混合编程的应用。 关键词:SPMC75 嵌入式汇编 1 引言 支持C语言几乎是所有微控制器程序设计的一项基本要求,当然SPMC75 系列单片机 也不例外。μnSPTM 指令结构的设计就着重考虑对C语言的支持,GCC 就是一种针对 μnSPTM 操作平台的ANSI-C 编译器。但是在应用中对于程序的设计,特别是C和ASM 混合使用的时候有些地方是需要注意的,在C 中如何嵌入ASM也是一个不可回避的问题。 2 芯片特性简介 SPMC75 系列单片机是由凌阳科技设计开发的16 位微控制器芯片,其内核采用凌阳科 技自主知识产权的μnSP微处理器。SPMC75 系列单片机集成了能产生变频电机驱动的 PWM发生器、多功能捕获比较模块、BLDC 电机驱动专用位置侦测接口、两相增量编码器 接口等硬件模块;以及多功能I/O 口、同步和异步串行口、ADC、定时计数器等功能模块, 利用这些硬件模块支持,SPMC75 可以完成诸如家电用变频驱动器、标准工业变频驱动器、 多环伺服驱动系统等复杂应用。下面介绍SPMC75 系列单片机资源特性: 3 函数调用 3.1 调用协议 模块代码间的调用,是遵循μnSPTM体系的调用协议 (Calling Convention)。所谓调 用协议,是指用于标准子程序之间一个模块与令一个模块的通信约定。即使两个模块是以不 同的语言编写而成。 调用协议是指这样一套法则:它使不同的子程序之间形成一种握手通信接口,并完成一 个子程序到另一个子程序之间的参数传递和控制,以及定义出子程序调用与子程序返回值的 常规规则。 调用协议包括以下相关要素: (1)调用子程序间的参数传递; (2)子程序返回值; (3)调用子程序过程中所用堆栈; (4)用于暂存数据的中间寄存器。 μnSPTM调用协议的内容如下: 1、由于C 编译器产生的所有标号都以下划线 (_)为前缀,而C程序在调用汇编程序时要 求汇编程序名也以下划线 (_)为前缀。 2、参数以相反的顺序 (从右到左)被压入堆栈中。必要时所有的参数都被转换成其在函数 原型中被声明过的数据类型。但如果函数的调用发生在其声明之前,则传递在调用函数里的 参数不会进行任何数据类型转换的。 3、各参数和局部变量在堆栈中的排列如图3-1所示。 4、16-Bit 的返回值放在寄存器R1 中,32-Bit 的返回值存入寄存器R1和R2 中,其中低字 节在R1 中,高字节在R2 中。若要返回结构或指针需要在R1 中存放一个指向结构的指针。 5、编译器会产生prolog/epilog 过程动作来暂存或恢复PC、SR及BP寄存器。汇编器则通 过CALL指令可将PC和SR 自动压入堆栈中,而通过RETF或RETI指令将其自动弹出堆 栈。 6、编译器所认可的指针是16-Bit 的。函数指针实际上并非指向函数的入口地址,而是一个 段地址的向量_function_entry,在该向量的两个连续Word 的数据单元存放的值才是函数的 入口地址。 图3-1 程序调用的堆栈使用 3.2 举例说明 ◆ C程序中调用ASM 函数 【例3-1】 无参数传递的C语言调用ASM 函数。 /**/ /* C 程序 /**/ externvoid F_Function(void); main() { /**/ /* C 程序调用 ASM 函数 /**/ F_Function(); while(1){;} } /**/ /*ASM 程序 /**/ // // Function:void F_Function(void); // -Description:ASM 函数 // -

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档