当前位置:首页 > 单片机 > 单片机
[导读] DS80C400微控制器ROM的功能可由8051汇编语言、C或Java?编写的程序访问。通过使用ROM功能和由Maxim开发的软件库能够构建多种应用程序。本应用笔记阐述了如何使用8051 IAR Embedded Workbench?来建立DS

DS80C400微控制器ROM的功能可由8051汇编语言、C或Java?编写的程序访问。通过使用ROM功能和由Maxim开发的软件库能够构建多种应用程序。本应用笔记阐述了如何使用8051 IAR Embedded Workbench?来建立DS80C400的C语言应用程序。通过一个简单的HTTP服务器示例来演示DS80C400的ROM功能。

DS80C400微控制器的ROM包含多种功能,可通过由8051汇编语言、C或Java编写的程序访问。DS80C400的ROM功能提供成熟的MxTNI?网栈、进程调度和存储器管理,是开始构建C和汇编程序的最佳选择。对于简单程序,可以用汇编语言轻松实现。对于更复杂的程序,C语言可以充分利用Dallas SEMIconductor提供的ROM组件和软件库。这些软件库帮助您利用Keil ?Vision2?、SDCC和IAR 8051编译器构建应用程序。

本应用笔记阐述了如何开始使用8051 IAR Embedded Workbench?来创建DS80C400的C语言应用程序。通过一个简单的HTTP服务器演示如何使用DS80C400的ROM功能。所有开发都采用TINIm400验证模块和包含6.11A版本C编译器的8051 IAR Embedded Workbench.

从8051 IAR Embedded Workbench开始

本节阐述如何使用IAR Embedded Workbench套件创建一个C语言编写的Hello World程序,即您的第一个DS80C400 C应用程序。

1.安装IAR Embedded Workbench

2.选择File→New→WorksPACe,在工作空间窗口,输入workspace名称appnote

3.选择Project→Create New Project.在出现的对话框中,输入项目名称hellowworld,并确定选择了8051作为工具链

4.当左侧的项目窗口打开时,选择Project→Add Files…在弹出的对话框中,将files of type改为汇编程序文件。添加文件Cstartup.s51,该文件可在Download的zip文件中找到

5.双击并打开文件Cstartup.s51.找到程序段声明RSEG CSTART:CODE:ROOT(0)。这是代码段的开始。变量段的起始地址在link51ew_400.xcl中声明。代码的开始在文件中的0x400000h进行声明。另外,应有一个DB 'TINI'行,后跟另一个DB, high(?INIT)',带有注释Target Bank.这样就可以确保应用程序对应于TINIm400 flash的起始地址

6.建立新文件main.c.在该文件中写入如下代码:

#include

#include

void main ()

{

printf("Test program using IAR compiler");

while (1)

{

}

保存文件内容。通过选择Project→Add Files,然后在文件对话框中选择main.c,这样就把刚建立的文件加入到项目hellowworld中。确定加入的文件就是您建立的文件main.c;因为在默认目录中很有可能存在另一个具有相同名字的文件

7.同样,将文件low_level_init.s51和putchar.c加入到项目中。low_level_init.s51文件包含初级DS80C400初始化程序;putchar.c文件包含将字符输出至默认控制台的初级程序

8.从ftp://ftp.dalsemi.com/pub/tini/ds80c400/c_libraries/iar/bin/init.zip复制ROM initialization库文件,并将其解压缩到相同目录下。将rominit.r51库文件添加到项目中

9.在编译Hello_World应用程序之前,我们需要配置IAR工具链来满足DS80C400的目标要求

1)。选择Project→Options→General

单击Target标签并浏览,在Derivative中选择DS80C400.将Extended stack at:对应的地址值改为0xFFDC00.这是因为IAR起始代码重新定位DS80C400硬件堆栈至0xFFDC00.对应这些设置请参考图1.

单击Data Pointer标签。选择Number of DPTRs = 1.这是因为由Dallas SemIConductor所提供的库文件是在该选项下产生。

图1. 选择新的IAR 8051项目Target选项

2)选择Project-Options→Options→ICC8051

单击Code标签。选择Optimizations下的Size和None.

单击List标签。选择Output List File和Output assembler File.

单击Preprocessor标签。在include路径中放入以下程序:

$TOOLKIT_DIR$INC

$TOOLKIT_DIR$INCCLIB

$TOOLKIT_DIR$SRClib

$TOOLKIT_DIR$srclibclib

include

上面最后一行是库的头文件(*.h)所处的include路径。确定头文件在上面指定的路径中。$TOOLKIT_DIR$与IAR安装路径有关(例如,c:/program files/iar systEMS/embedded workbench 3.n/8051)。

3)选择Project→Options→A8051

单击List标签。选中Output List File.

单击Preprocessor标签,在include路径中放入以下程序:

$TOOLKIT_DIR$INC

$TOOLKIT_DIR$srclib

include

上面最后一行是库的头文件(*.h; *.inc)所处的include路径。确定头文件在上面指定的路径中。

4)。选择Project-→Options→XLINK

单击Output标签

在Output file中,选择Override default,并将文本文件名改为hello_world.hex.

在Format中,选择Other,并从选项中选择Intel Extended.详情请参考图2.

单击List标签。选择Generate Linker Listing.

单击include标签,参考图3.

选择Ignore CSTARTUP in Library.

单击Override default,将文件名改为$TOOLKIT_DIR$configlnk51ew_400.xcl. $TOOLKIT_DIR$与IAR安装路径有关(例如,c:/program files/iar systems/embedded workbench 3.n/8051)。确定文件lnk51ew_400.xcl和lnk_base_400.xcl在指定的路径中。可在zip文件Download中找到这些文件。

图2. 选择新的IAR 8051项目的XLINK Output选项。

图3. 选择新的IAR 8051项目的XLINK Include选项。

建立Hello_World应用程序。如果正确完成了每一步,建立过程应不会出现错误或警告信息;之后会在/debug/exe目录中产生hello_world.hex.如果你的项目配置为Release,那么hex文件将在/release/exe目录中产生。

现在已经生成了可执行文件,我们需要将应用程序装载到TINIm400模块中并运行。

将示例应用程序装载到TINIm400模块:

本节说明如何使用Maxim/Dallas Semiconductor提供的Microcontroller Tool Kit (MTK)工具将IAR编译器生成的hex文件装载到TINIm400验证模块中。目前可用的MTK版本仅支持Windows.如果您的开发环境不是Windows?,需要使用JavaKit应用程序来装载和执行应用程序。要使用JavaKit,您必须具备Java Runtime Environment? (版本至少为1.2),并且安装了Java Communications API?.JavaKit工具包含在MxTNI软件开发包中。请下载MxTNI SDK.在撰写本文时,发布的最新固件版本是1.15.运行JavaKit的指导说明可在TINI SDK docs目录下的Running_JavaKit.txt文件中找到。如果您在运行MTK或JavaKit时遇到问题,可能其他人已经遇到过类似问题并已在Dallas Semiconductor讨论组公布。您可以在讨论组搜索现有文章(和新发表的文章)。

在此可下载最新版本的应用程序。要安装MTK,请运行安装文件并按照提示操作。成功安装后,将会添加一个新的菜单组:Start→All Programs→Dallas Semiconductor MTK.MTK启动后,会出现图4. 所示的对话框。

图4. 启动时 MTK选项。

选择TINI选项,以操作TINIm400评估板。

选择了TINI之后,会打开MTK主窗口。从Options→Configure Serial Port菜单选项中选择您用来与TINIm400通信的串口。然后,选择Tini→Tini Options 菜单,就会出现下面的对话框。选择DSTINIm400按钮,配置MTK用于和TINIm400板通讯。图5显示了带有DSTINIm400按钮的对话框。

图5. 选择TINIm400配置选项。

选择Tini→Open COMx在xxx baud菜单选项打开串口。接着选择Tini→Reset 选项复位评估板。会出现DS80C400的装载提示,如下所示:

DS80C400SILiconSOFtware - Copyright (C) 2002 Maxim Integrated Products

DetaiLEDproduct information available at http://www.maxim-ic.com

Welcome to the TINI DS80C400 Auto Boot Loader 1.0.1

>

从File菜单中选择Load HEX File.找到并选择我们刚才生成的hello_world.hex文件。加载程序后,有两种方法运行它。因为我们将程序加载到40区,您可以输入:

> B40

> X

要选择40区并运行那里的代码,您也可以输入:

> E

这会使ROM查找可执行代码。它查找一个标识当前区具有可执行代码的特定标签。此标签由文本'TINI'和随后的当前区号码组成,并位于当前区的0x0002地址。应用程序的起始代码采用下面几行声明该标签:

?VECTOR_TABLE:

sjmp ?INIT

DB 'TINI' ; Tag for TINI Environment 1.02c

; or later (ignored in 1.02b)

DB high(?INIT) ; Target bank

注意sjmp ?INIT语句位于0x40区的0x0000地址。其后紧跟着可执行标签{ 'T', 'I', 'N', 'I', 0h},由于sjmp语句为两个字节,所以该标签地址位于0x0002处。当您键入E时,ROM从C0h区开始向下搜索可执行代码。如果您键入E时,执行了其它代码,则意味着ROM在一个比您的代码装载位置0x400000更高的地址找到了一个可执行标签。如果出现这种情况,您可能需要找到此标签的位置,并删除那个区的内容。

与ROM以及IAR ROM库接口

在高

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭