SAM8系列单片机及其软件设计

[09-12 18:12:54]   来源:http://www.88dzw.com  单片机学习   阅读:8663

文章摘要: C语言编译器也是编译中断函数时会自动保护所用到的寄存器(包括R10-R15),状态寄存器FLAGS的保护也是在中断处理过程中自动完成的。中断过程中用到的寄存器都使用PUSH Rn的指令进行保护,而采用POP Rn指令恢复。当用IRET指令自动恢复状态寄存器FLAGS时,可以从中断中返回。 &n bsp; 3.2 对汇编语言函数的约定 对于一个可以被C语言函数调用的汇编程序来说,使用时必须满足以下3点: 1)符合C语言参数传递规则; 2)有PUBLIC函数入口标志; 3)在C语言函数中用extern声音为外部函数。

SAM8系列单片机及其软件设计,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com

       C语言编译器也是编译中断函数时会自动保护所用到的寄存器(包括R10-R15),状态寄存器FLAGS的保护也是在中断处理过程中自动完成的。中断过程中用到的寄存器都使用PUSH Rn的指令进行保护,而采用POP Rn指令恢复。当用IRET指令自动恢复状态寄存器FLAGS时,可以从中断中返回。

&n

bsp;      3.2 对汇编语言函数的约定


       对于一个可以被C语言函数调用的汇编程序来说,使用时必须满足以下3点:

       1)符合C语言参数传递规则;

       2)有PUBLIC函数入口标志;

       3)在C语言函数中用extern声音为外部函数。

       参加传递规则和C语言函数一样,所不同的是,要在汇编语言函数编写过程中具体体现出来。

       4 应用实例

       明确了以上调用规则,混合编程就比较容易了,归纳起来有以下几点:

       1)在C语言源文件中用“extern”关键字导入被汇编语言源文件导出的标号;

       2)在汇编语言源文件用“PUBLIC”关键字把标号导出到C语言源文件;

       3)在汇编语言中用“EXTERN”关键字导入被C语言函数源文件导出的关键字;

       4)用C语言把标号导出给汇编语言,这一步不需要关键字;

       5)把编辑好的C语言和汇编语言源文件导入设计系统,并用各自调用函数的指令调用。

       下面以笔者在校音器设计中用到的2个例子来具体说明。

       4.1 C语言和汇编语言相互调用

       在该例中,用C语言函数main()调用汇编语言函数get_rand()以得到一个随机数,接着,用汇编语言函数get_rand()调用C语言库函数rand()再得到一个整型机随机数,然后用调用C语言函数mult()的方法把这个随机值的高位乘以main()函数传递给自己的实参,同时把乘积值返回给main()参数。

       4.2 汇编语言写中断服务程序

       为了提高系统响应速度,设计时往往要求中断服务程序的执行时间较短,执行速度较快。因此,最好的方法就是用汇编语言编写中断服务程序。但要注意以下2点:

       1)中断函数不传递参数和返回结果;

       2)中断过程中用到的寄存器都要进行保护。 

             5 结束语

       以上方法已经应用于笔者参与设计的校音器设计中并取得良好的效果。但也要注意调试过程中编译器选项的设置对程序运行结果有一定的影响,因此,对SAM8系统中不同的核,一定要选用不同的内核版本号,否则,寄存器传递的参数可能会错位,从而导致参数传递错误,给调试带来不便。


       2 S3C825A的软件开发环境

       2.1 在线仿真器OPENic i500


       AIJIsysterm公司为三星SAM8系列单片机提供了一套有效的在线仿真器——OPENice i500,该仿真器可以运行在windows 95/98/2000/NT等操作系统下,具有可选的CPU时钟资源(最高可达80MHz)和高达64kbyte的仿真代码存储器,同时内嵌功能强大的代码编辑器,可支持基于RS232的高速代码下载(最高下载速度可达115200b/s),同时支持C语言编译/调试(IAREW,CSPY),因此,应用此仿

上一页  [1] [2] [3] [4]  下一页


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习

《SAM8系列单片机及其软件设计》相关文章

分类导航
最新更新
热门排行