4.1 SPCE061A编程基础4.1 SPCE061A编程基础.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Sunplus SPCE061A 微控制器 SPCE061A编程基础 大纲 汇编语言程序的应用举例分析 C语言程序的应用举例分析 堆栈、函数调用参数传递 FLASH读写操作 汇编语言程序的应用举例分析 我们通过程序实现1-100累加和来学习基于SPCE061A单片机的汇编语言编制程序方法、单步调试程序方法、查看结果方法 汇编语言的程序结构 顺序结构 分支结构 循环结构 程序代码分析 μ’nSP的数制及其后缀规定 单步调试程序 查看程序结果 C语言程序的应用举例分析 程序:实现1-100累加和 程序代码分析 C语言的程序结构 顺序结构 分支结构 循环结构 看门狗 SPCE061A的清狗周期为0.75S; Watchdog计时时钟来源:4Hz时基; 清看门狗操作寄存器: P_Watchdog_Clear(0x7012H) 清狗操作: 在每个0.75S的清狗周期里P_Watchdog_Clear写入0x0001。 程序中清看门狗 汇编程序: …… R1 = 0x0001 [P_Watchdog_Clear] = R1 …… C语言: *P_Watchdog_Clear=0x0001 堆栈在函数传递方面的应用 堆栈的含义 堆栈是在内存RAM区专门开辟出来的按 照“先进后出”原则进行数据存取的一种 工作方式。 堆栈的作用 主要用于子程序调用及返回和中断处理 断点的保护及返回。 SPCE061A的堆栈 实例分析 C程序中调用汇编函数 汇编程序中调用C函数(过程) C和汇编的函数相互调用 函数调用协议 指不同的子程序代码之间形成的一种握手通讯接口,并完成一个子程序到另外一个子程序的参数传递和控制,以及定义出子程序调用与子程序返回值的规则 函数调用协议 参数传递 堆栈维护及其排列 函数返回值 寄存器数据暂存方式 C程序中调用汇编函数 堆栈的变化 C程序中调用汇编函数 观察结果 打开Memory,Watch和Rigester三个调试窗口 汇编程序中调用C函数(过程) 堆栈的变化 汇编程序中调用C函数 C程序在调用汇编函数结论 C程序在调用汇编函数时的参数传递是将参数按照从右到左的顺序依次压入堆栈,然后才将PC和SR寄存器的值压入堆栈 汇编程序调用C函数结论 汇编程序调用C函数时的参数传递也是按照从右到左的顺序需要编程者自己在汇编程序里面将参数入栈,最先入栈的参数是C函数最右边的参数,最后入栈的参数才是C函数最左边的参数 片内Flash 程序存储器 32K字的Flash被划分为128个页(每个页存储容量为256个字),它们在CPU正常运行状态下均可通过程序擦除或写入。 程序对Flash的操作主要是通过寄存器0x7555 P_Flash_Ctrl以及目标Flash的操作;这样可以对Flash进行页擦除、写入一字、写入多字的动作。 FLASH操作对寄存器的操作 程序对Flash的操作主要是通0x7555单元寄存器P_Flash_Ctrl以及目标地址Flash的操作;这样可以对Flash进行页擦除、写入一字、写入多字的动作。 对命令字的不同组合,形成对FLASH的不同操作。 FLASH操作实例 凌阳科技大学计划网站: 凌阳科技大学计划邮箱: E_mail: unsp@ 凌阳科技大学计划客服中心: Tel: 0102911 凌阳科技大学计划技术支持中心: Tel: 0102919 写一字的流程图 写一个字 向指定单元写入多个字 顺序写多个字 擦除一页 凌阳科技教育推广中心竭诚为您服务 由于C编译器产生的所有标号都以下划线(_)为前缀,因而在C中定义的函数在汇编程序中必须以下划线为前缀,即若在C中定义函数Function(),其在汇编程序中的标号必须为_Function(). 函数调用协议包涵以下四个方面的相关要素。 1.1?????????? 参数传递 参数以相反的顺序(从右到左)被压入堆栈。必要时所有的参数都被转换成其在函数原型中声明过的数据类型。但是如果函数的参数调用发生在其声明之前,则传递在调用中的参数是不会被进行任何数据类型转换的。 1.2?????????? 堆栈维护及其排列 unSP的堆栈范围限制在2K字的RAM内,即其地址范围从0x7FF到0x0000的存储器范围中,在系统复位之后,SP初始化为0x07FF。在函数调用后程序返回时注意将压入堆栈中的参数弹出堆栈。 1.3?????????? 函数返回值 16位的返回值存放在寄存器R1中,32位的返回值放在R1 和R2中,其中高字在R2中,低字在R1中。若要返回一个结构则需在R1中存放一个指向结构的指针。 1.4?????????? 寄存器数据暂存方式 编译器会产生prolog/

您可能关注的文档

文档评论(0)

pkaokqunw + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档