在IAR平台建立STC8ASK64S4A12单片机工程

摘要:
为了实现STC8ASK64S4A12微控制器在IAR平台上的开发,我花了几天时间重写了与IAR平台兼容的头文件、链接文件和配置文件,然后成功地在IAR上建立了STC8ASK64S4A12项目,并成功地通过了调试。接下来,我们将详细介绍如何在IAR平台2上建立STC8ASK64S4A12项目。选择左侧的项目,右键单击OPTION,在窗口中的General OPTION下选择Target的Device列,然后选择小图标3。选择添加的STC芯片STC8A8K64S4A11。

转载:http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=168481&page=1#pid737250

 一般我们使用STC单片机都是基于老旧的KEIL v4.0平台,STC官方给的头文件也是只支持keil v4.0平台。我们如果要在其他平台比如IAR上开发STC8ASK64S4A12,就没法实现,网上也没有人做过类似的事情。市面上有不少热门的单片机,比如STM32系列单片机不仅支持keil v5.0平台,而且支持IAR平台,这将对开发者是非常便利的,不同开发平台有不同的优点。   为了实现在IAR平台开发STC8ASK64S4A12单片机,自己花了几天时间重写了兼容IAR平台的头文件、链接文件、配置文件,然后在IAR平台成功实现建立STC8ASK64S4A12工程,并且调试成功通过。接下来详细说明如何在IAR平台建立STC8ASK64S4A12工程。
一、准备工作
1、安装IAR for 8051 10.10.1版本;
2、在IAR设备添加STC单片机类型;
  将附录文件夹devices下的STC文件夹复制到IAR安装的目录D:IAR_8051_108051configdevices中。
3、在IAR添加STC单片机头文件;
  将附录文件夹STC头文件下的ioSTC8.h和ioSTC89xxxx.h复制到IAR目录D:IAR_8051_108051inc中。
单片机类型和头文件都在附件上有,IAR for 8051 10.10.1软件需要自己去下载安装。
二、建立新工程
下面有图文并茂简介在IAR for 8051上建立STC8ASK64S4A12工程的详细过程。我会把自己的工程上传附录文件中。
1、选择菜单project下Create New Project,然后选择Empty project。
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第1张 

2、选择左边的工程,右键选中OPTION,在窗口选中General Option下Target的Device那一栏,选择右边的小图标
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第2张 

3、选中添加好的STC单片,STC8A8K64S4A12。如果找不到STC单片机,需要重新查看准备工作的部分有没有做好
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第3张 

4、在Tgrget中,Data model选中large,calling convertion选择XDATA stack reetrant。
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第4张 

5、在Library Configuration中,Library选择CLIB<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第5张 

6、Linker中勾选图示的选型。
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第6张 
7、勾选图示选型,这样才会生成hex文件。
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第7张 
8、选择菜单project中Edit Configuration,新建一个基于debug的工程,命名为:STC8A8S64S4A12
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第8张 
9、添加头文件的目录,这个是我自己工程的头文件目录
$PROJ_DIR$代表工程的目录    $PROJ_DIR$....Componentsoardinclude代表工程的上一级,再上级一级目录Components下board下include文件夹,一般头文件放在include文件夹内。
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第9张 
10、程序优化等级一般选择Medium,如果选择high会有不少无关变量被IAR全部优化掉,代码所占空间达到最小化,但是调试可能有问题。如果不想某个变量被优化,需要要在变量前加上volatile。
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第10张 
11、这是自己建立工程,利用DS18B20测量温度,并且通过printf函数打印出来。
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第11张 
12、编译后将hex文件烧录到STC8A8K64S4A12单片机里,再用串口打印工具,打印测量温度数据
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第12张 
三、IAR平台的优势
IAR平台对程序的编译效率比较高,编译所花时间比较少,另外IAR平台还有一个高级的代码分析工具:C-STAT Static Analysis,这个工具不同于编译器,它会分析代码潜在的隐患。比如你用malloc函数申请空间,如果没有对申请的指针做NULL判断,就用警告,但是如果直接用编译器编译,是没有这个警告的。这就是这个工具高级的地方,它可以让工程师完善代码,减少隐患。这个是keil v4.0没有的功能。
1、选择C-STAT Static Analysis中Analysis Project
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第13张 
2、分析结果,用malloc()有隐患
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第14张 
3、最后对pBUF指针做非空判断,再分析,就没有警告了
<ignore_js_op>在IAR平台建立STC8ASK64S4A12单片机工程第15张 

四、STC单片机在IAR平台的不足点
1、虽然IAR平台支持多种烧录器,但是没有基于IAR平台的STC单片机在线仿真工具和在线烧录器,程序烧录还是要用STC官方给的STC-ISP烧录程序。这种情况下,调试程序一般用printf函数外加串口来监控程序运行状态。
五、后记
本人也是从接触STC单片机入门的,STC给单片机初学者提供一个良好的学习平台,我这次的移植,也是希望能够多一个编译平台玩STC单片机,不再局限于keil平台。不同平台移植不容易,希望能得到大家的支持,共同完善。

全部资料51hei下载地址:
本主题由 admin 执行 审核通过
<ignore_js_op>
在IAR平台建立STC8ASK64S4A12单片机工程第16张

IAR平台建立工程准备文件.rar

34.59 KB, 下载次数: 23

准备文件

<ignore_js_op>
在IAR平台建立STC8ASK64S4A12单片机工程第16张

STC8A8K64S4A12.rar

226.62 KB, 下载次数: 14

图示例子工程文件

<ignore_js_op>
在IAR平台建立STC8ASK64S4A12单片机工程第16张

图片文件.rar

732.66 KB, 下载次数: 4

如果看不到图片,就看图片附件,序号对应好了

免责声明:文章转载自《在IAR平台建立STC8ASK64S4A12单片机工程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringMvc流程Systemd 入门教程:实战篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JS反混淆——构造可知DeviceToken、nouce与token

清空所有cookies后打开任意一本书的详情页,打开控制台中的Network。如下图所示,浏览器发出的第一个XHR请求为/bind,其中DeviceToken,nonce,Token均为POST中提交的数据。 找到访问网页的请求,如下图所示,返回头中没有出现set-cookie字段,可以判断DeviceToken,nonce,Token均为js生成的。...

webpack3 + vue 添加 serviceWorker

新的vue脚手架已经可以自带pwa了,本文主要针对旧版的webpack。 先装三个插件: $npm i register-service-worker sw-precache-webpack-plugin webpack-pwa-manifest --save-dev 因为pwa主要用于生产,我们来动手改造 build/webpack.prod.conf....

js异步处理

js处理异步的几种方式 Javascript语言的执行环境是"单线程"(single thread,就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推)。 这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(...

js 处理 xml对象和String字符串之间的转换

/** * xml工具 * xml对象和String字符串之间的转换 * ///convert string to xml object (将字符串转换成xml对象) function string2XML(xmlString) { //所有浏览器统一用这种方式处理(因为高版本的浏览器都支持) let parser = new DOM...

用JS添加和删除class类名

下面介绍一下如何给一个节点添加和删除class名 添加:节点.classList.add("类名"); 删除:节点.classList.remove("类名"); 以tab切换为例: 在写tab切换的时候,通常我们会给选中的tab设置不同的样式,常用的方法是给被选中的tab新增一个class名,然后改这个class名的样式。 比如 起一个class名叫“a...

JS动态创建表格比较【转】

目标:生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号 方法一:使用createElement生成表格,使用insertRow和insertCell方法生成行列,单元格的内容使用innerHTML属性进行填充。 方法二:使用createElement生成表格,使用CreateElement方法生成行列,单元格的内容使用了createTex...