新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DS80C400的Keil C语言编程

DS80C400的Keil C语言编程

作者:时间:2012-02-01来源:网络收藏

有关指针传递的说明
文档提供了用8051汇编自己编写可从你的C程序中调用的方法的途径。如果你选择这样做,请注意,由C程序传递到8051汇编的指针在 DS80C390和中不是立即可用的。因为传统的8051架构是16位的,指针由两字节的指针和一字节的存储类型组成。当采用 Dallas的24位8051微控制器时,存储类型字节为指针高字节所用,但采用一种变化的形式。在当前版本的编译器中,高指针字节有其高位设置并被递增1。以下来自rom_offsets.inc的宏在Dallas Semiconductor库中被用于纠正被更改的指针。

      FIXKEILPOINTER  MACRO DIRECT_DPXLOCAL  must_be_nullmov    a, DIRECT_DPXjz     must_be_nulldec    aanl    a, #7Fhmov    DIRECT_DPX, amust_be_null:ENDM
Keil编译器通过寄存器r3:r2:r1 (r3是存储类型字节) 或XDATA存储区传递指针。该宏将工作于任何寄存器或其他直接存储器值,传给它存储类型字节,它会在同一位置返回高指针字节。以下代码演示了它的用法:
      ;; Keil passes pointers as r3:r2:r1...;---- Variable 'buffer1?972' assigned to Register 'R1/R2/R3' ----;FIXKEILPOINTER r3;; r3:r2:r1 is now usable as a pointer value.;;; ...or in XDATA.;---- use dpx1:dph1:dpl1 for buffer pointer ----;mov     dptr, #buffer2?1078GETXmov     dpx1, ainc     dptrGETXmov     dph1, ainc     dptrGETXmov     dpl1, aFIXKEILPOINTER   dpx1;; Data pointer 1 is now usable as a pointer.;
注意,还有一种与FIXKEILPOINTER宏相反的情况,可以使函数将其所需的指针转换为Keil编译器生成代码可以理解的形式。在此情况下,可以用UNFIXKEILPOINTER宏。这个宏的用法和FIXKEILPOINTER宏相同。一点不同是,当你从一个用汇编写的方法中返回一个指针时,指针必须保存在寄存器r3, r2和r1中,高指针字节在r3中。因此,在退出一个需要返回指针的函数前,它必须调用宏:
      UNFIXKEILPOINTER r3ret; End of the assembly function
保持你的Keil为最新版本
Keil会随时发布对其uVision2工具套件的更新版本。网站http://www.keil.com/update/上有关于最新版本的C51编译器和uVision2 IDE的信息。从该网页你可以选择你需要的下载,并看到所发生的变化。

更新应该是一个可执行的InstallShield。应用将显示一个标题为Setup uVision2的窗口。选择Update Current Installation选项执行更新。程序可以检测你当前的安装目录,点击Next继续。在下一屏上选择是否要保留原来的uVision2配置,并再次点击Next。最后,确认你选择的选项并开始安装。

结论
Keil C编译器和Dallas Semiconductor提供的库允许用C编写的应用也可方便地使用以前只能通过TINI的Java环境访问的功能和函数。C语言程序现在可以访问网栈、存储管理器、进程调度器、文件系统,以及网络微控制器的许多其他特性。另外,与TINI运行环境相比,用C语言编写的应用程序为用户代码和数据提供了更多的空间。使用C语言的开发者可轻易编写出极为精简的应用,有充裕的速度速度、能力、代码空间来应付各种问题。

参考文献
1 App Note 609: Internet Speaker with the DS80C400 Silicon Software

2 Download at http://java.sun.com/j2se/downloads.html

3 Download at http://java.sun.com/products/javacomm/

4 The High-Speed Micro User's Guide Supplement for the DS80C400 can be found at http://pdfserv.maxim-ic.com/arpdf/Design/DS80C400UG.pdf

c语言相关文章:c语言教程



上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭