DS80C400的Keil C语言编程
文中介绍了如何从Keil的uVision2开发套件着手构建一个DS80C400的C语言应用程序,通过实现一个简单的HTTP服务器演示如何使用DS80C400的ROM功能。所有开发都采用了TINIm400验证模块和包含7.05版C编译器'C51'的Keil uVision2 2.37。
从Keil的uVision2开始
你可以使用Keil uVision2开发套件,构建一个简单的HelloWorld型C语言程序。按照以下步骤完成你的第一个用于DS80C400的C语言应用程序。
选择Project-->Create New Project。 输入项目名称。
屏幕上将出现Select Device for Target对话框。在Data base中选择Dallas Semiconductor和DS80C400。选择Use Extended Linker和Use Extended Assembler。点击OK继续。图1所示为该对话框的正确配置。
图1. 为一个新的Keil uVision2项目选择
将有对话框提示:Copy Dallas 80C390 Startup Code to Project Folder and Add File to Project?选择No。我们将提供自己的启动代码。
当项目窗口在左侧打开时,打开Target 1。右击Source Group 1,并选择Add files to group 'Source Group 1'。在弹出的文件对话框中,将files of type改为Asm Source file。添加文件startup400.a51。该文件可以在http://files.dalsemi.com/tini/ds80c400/c_libraries/HelloWorld.zip上的zip文件中找到。
双击打开文件startup400.a51。找到段声明?C_CPURESET?0。确保代码段声明为400000h。
C_CPURESET?0 SEGMENT CODE AT 400000h
另外,应有一个"DB 'TINI'"行,后跟另一个DB行,带有注释"Target bank"。这样就可以确保应用建立地址为400000h,对应于TINIm400上flash的起始地址。请确认该行为:
DB 40h ; Target bank创建一个新的文件,以"main.c"为文件名来保存。在该文件中写入如下代码:
#include保存文件内容。右击Source Group 1,并添加源文件main.c。现在就将该源文件添加到项目中了。void main(){printf("Test 400 Program\r");while (1){}}
右击左侧的Target 1。选择Options for target 'Target 1'打开选项对话框。第一个选择标签应该为Target。将Memory Model改为Large: variables in XDATA。将Code Rom Size改为Contiguous Mode: 16MB program。选中检查框Use multiple DPTR registers和far memory type support。在Off-chip Code memory项目下加入第一个入口:Start:0x400000,Size:0x80000。在Off-chip XData memory项目下加入一个入口:Start:0x10000,Size:0x4000。图2所示为配置完成的对话框。确认检查框Use On-Chip Arithmetic Accelerator被清除--多线程应用很难共用算术累加器。
![](../img/eep/emb/emb-19057xe5epyi5nwe.jpg)
图2. setp 7目标选项对话框(注意,'Eprom:start' 应为0x400000,最后一个'0'未显示)。
选择Output标签。点击Create HEX File,并在下拉框中选择HEX-386。按F7键建立应用程序。如果每一步都正确完成,建立过程应不产生错误或警告信息。之后会生成一个hex文件。现在就可以将该应用程序装载到你的电路板上了。
将应用实例装载到TINIm400模块
这部分介绍如何使用JavaKit工具将Keil编译器生成的hex文件装载到TINIm400验证模块中。使用JavaKit之前,必须首先安装Java Runtime Environment2 (1.2版以上)和Java Communications API3。JavaKit包含在TINI软件开发包中(TINI Software Development Kit),http://files.dalsemi.com/tini/tini1_11.tgz上提供下载。运行JavaKit的说明可以在TINI Software Development Kit的docs目录下的Running_JavaKit.txt文件中找到。如果你在运行JavaKit时遇到任何技术问题,很可能其他人曾经遇到过类似的问题,这些问题被收集在TINI主题列表中。你可以在http://lists.dalsemi.com/search/search.html上搜索有关该列表的文档。
通过以下命令行建立JavaKit与TINIm400的通话。
java JavaKit -400 -flash 40图3显示了JavaKit窗口。
图3. JavaKit界面。
运行JavaKit后,选择用来与TINIm400进行通信的串口。使用'Open Port'按钮打开该串口。然后按Reset按钮。DS80C400装载器将提示如下信息:
DS80C400 Silicon Software - Copyright (C) 2002 Maxim Integrated ProductsDetailed product information available at http://www.maxim-ic.comWelcome to the TINI DS80C400 Auto Boot Loader 1.0.1>在JavaKit顶部的'File'菜单中,选择Load HEX File as TBIN。找到并选择我们已经创建的helloworld.hex文件。Load HEX File as TBIN选项先将输入的hex文件转换为TBIN文件,然后装载。这样的操作比直接装载hex文件速度快,因为对于同样的数据,ASCII编码的hex文件的尺寸是二进制文件的二倍多。
用户程序装载后,有两种执行方法。由于程序装载到存储区40中,所以你可以直接键入:
> B40> X要选择存储区40,并在运行这里的代码,也可以键入:
> E这将使ROM查找可执行代码,有一个特殊标记符用来表示当前存储区中有可执行代码。该标记符由字符'TINI'和紧随其后的当前区号组成。它位于当前区的地址0002处。我们的HelloWorld程序对于此标记符的声明在startup400.a51文件中如下所示:
C_STARTUP: SJMP STARTUP1DB 'TINI' ; Tag for TINI Environment 1.02c; or later (ignored in 1.02b)DB 40h ; Target bank注意SJMP STARTUP1语句位于40区的地址0000处。由于sjmp语句占两个字节,所以紧随其后的执行标记{'T', 'I', 'N', 'I', 40h}位于地址0002。当键入'E'时,ROM在FEh存储区中向下查找可执行代码。如果键入'E'后执行了其他代码,就说明ROM在高于 400000h (装载你的代码的位置)的地址处找到了执行标记,你可能需要找到该标记,并删除该存储区中的内容。
- 用IAR编译器开发DS80C400(12-16)
- Proteus软件仿真与Keil的单片机系统设计(09-08)
- 基于AT89C51单片机的量程自切换频率计(01-25)
- ARM菜鸟:JLINK与JTAG的区别(03-01)
- 基于单片机的可测温式电子万年历(03-02)
- Matlab/RTW实时仿真与嵌入式系统开发(02-03)