转载: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_10\8051\config\devices中。
3、在IAR添加STC单片机头文件;
  将附录文件夹STC头文件下的ioSTC8.h和ioSTC89xxxx.h复制到IAR目录D:\IAR_8051_10\8051\inc中。
单片机类型和头文件都在附件上有,IAR for 8051 10.10.1软件需要自己去下载安装。
二、建立新工程
下面有图文并茂简介在IAR for 8051上建立STC8ASK64S4A12工程的详细过程。我会把自己的工程上传附录文件中。
1、选择菜单project下Create New Project,然后选择Empty project。
<ignore_js_op>

2、选择左边的工程,右键选中OPTION,在窗口选中General Option下Target的Device那一栏,选择右边的小图标
<ignore_js_op>

3、选中添加好的STC单片,STC8A8K64S4A12。如果找不到STC单片机,需要重新查看准备工作的部分有没有做好
<ignore_js_op>

4、在Tgrget中,Data model选中large,calling convertion选择XDATA stack reetrant。
<ignore_js_op>

5、在Library Configuration中,Library选择CLIB<ignore_js_op>

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

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

全部资料51hei下载地址:

<ignore_js_op>

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

34.59 KB, 下载次数: 23

准备文件

<ignore_js_op>

STC8A8K64S4A12.rar

226.62 KB, 下载次数: 14

图示例子工程文件

<ignore_js_op>

图片文件.rar

732.66 KB, 下载次数: 4

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

在IAR平台建立STC8ASK64S4A12单片机工程的更多相关文章

  1. 基于IAR平台FreeRTOS移植

     开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...

  2. 关于Quartus构建nios软核以及eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解

    这不是一篇构建nios的教程,而是遇到的各种问题以及解决方法.至于构建教程,网上一大把,我推荐正点原子的FPGA教程,比较新,比较详细,通俗易懂!!! 这里以一个点亮LED灯的Nios软核为例,很明显 ...

  3. 使用keil建立标准STM32工程模版(图文详细版!)

    1.   模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当 ...

  4. CCS5 建立SYS/BIOS工程时报错“cannot find file "./configPkg/linker.cmd" bios”的解决方法

    CCS5 建立SYS/BIOS工程时报错“cannot find file "./configPkg/linker.cmd" bios”的解决方法 报错 #10008-D cann ...

  5. MyGui笔记(1)建立第一个工程

    记录下学习 MyGui的一些笔记,从建立第一个工程开始. 步骤: 1.右键MYGUI解决方案,添加→新建项目,选择“Win32 项目”,名称为:TestHello.下一步,勾选“空项目”. 2.设置工 ...

  6. struts2讲义----建立一个struts2工程

    建立一个Struts2 工程 Ø 1在MyEclipse中新建web工程 Ø 2在struts-2.2.1.1-all\struts-2.2.1.1解压struts2-blank.war( 最基础的示 ...

  7. 学习STM32F769DK-OTA例程之百度云平台建立MQTT服务器

    @2019-04-17 [小记] 百度云平台建立MQTT服务器时需要设置权限组,否则连接失败

  8. Keil uVision4 创建51单片机工程

    Keil uVision4 创建51单片机工程 版权声明:未经授权,严禁转载! 在学习51单片机的过程当中,我们需要使用 Keil uVision4 来创建一个项目,今天就来图示一下创建的流程. 首先 ...

  9. 【建项目】eclipse maven建立多模块工程

    在工作的时候,大多时候都是用Maven来管理项目,可是一般我们都知道怎么用maven管理工程,却不知道通过Maven自己来建立多模块工程.于是自己抽时间,在网上找些资料,做了起来. 建立简单的Mave ...

随机推荐

  1. Unsafe API介绍及其使用

      废话 个人理解:java 出现的原因之一,就是对内存的管理:在c/c++,内存可以随心使用,超高的性能也伴有极高的风险:java极大的规避了这种风险,却也降低了程序运行的性能:那么java是否提供 ...

  2. C基础 带你手写 redis adlist 双向链表

    引言 - 导航栏目 有些朋友可能对 redis 充满着数不尽的求知欲, 也许是 redis 属于工作, 交流(面试)的大头戏, 不得不 ... 而自己当下对于 redis 只是停留在会用层面, 细节层 ...

  3. scala基础题--面向对象2

    练习2:根据下图实现类.在TestCylinder类中创建Cylinder类的对象,设置圆柱的底面半径和高,并输出圆柱的体积 import scala.beans.BeanProperty objec ...

  4. springboot yml配置文件注入值

    1.编写javabean: package com.example.springboot.bean; import org.springframework.boot.context.propertie ...

  5. 单词uranolite陨石uranolite英语

    陨石(uranolite)是指来自地球以外太阳系其他天体的碎片,绝大多数来自位于火星和木星之间的小行星,少数来自月球(40块)和火星(40块).全世界已收集到4万多块陨石样品,石陨石主要成分是硅酸盐. ...

  6. Rdlc Mail Label

    1.创建报表服务器项目RDLML. 2.新建共享数据源DataMailLabel,设置到数据库AdventureWorks的连接,并为报表指定相应的访问凭据. 3.选择Name.Color.Thumb ...

  7. golang 源码文件

    Go源码文件分三个种类: 1)命令源码文件:如果一个源码文件被声明属于main代码包,且该文件代码中包含无参数声明和结果声明的main函数,则它就是命令源码文件.命令源码文件可以通过go run命令直 ...

  8. 用Python程序温度转换实例

    实例:温度转换 (1)分析问题:利用程序进行温度转换,由用户输入温度值,程序给出输出结果:通过语音识别,图像识别等方法自动监听并获得温度信息发布渠道(如收音机.电视机)给出的温度播报源数据,再由程序装 ...

  9. 腾讯java面试经验 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.腾讯等公司offer,岗位是Java后端开发,因为发展原因最终选择去了腾讯,入职一年时间了,也成为了面试官,之 ...

  10. vue-cli2和3中的config

    最近在网上找了个vue搭建的后台管理的框架,在使用的时候发现没有了config和build文件夹,所以当时就蒙圈了,以为是作者自己改了什么东西,所以感觉自己不知道从何下手了,不过通过查资料发现原来是v ...