TDxxxV1.0
如何用 C 来完成 SN8 系
列芯片的程序设计
松翰 易爱华
松翰科技(深圳)有限公司
SONIX TECHNOLOGY CO.,LTD.
1
TDxxxV1.0
内容概览
一、C 与 Assembly 简述
二、SN8 C studio 的安装与使用
2.1 SN8 C studio 的安装
2.2 SN8 C studio 应用实例
三、数据类型与运算
3.1 专有数据类型
3.2 常量与变量
3.3 数据的存储类型与存储结构
四、程序流程控制
4.1 顺序结构
4.2 分支判断结构
4.3 循环控制结构
五、函数
5.1 函数的定义
5.2 函数参数传递与返回值
5.3 函数参数与全局变量
六、结构体、联合在 SN8 C 程序中的应用
6.1 结构体
6.2 联合
七、中断
7.1 中断函数的定义
7.2 中断过程的分析
7.3 中断函数的结构
八、位操作
8.1 位的定义
8.2 位的运算
8.3 位比较在程序流程控制中的应用
九、内嵌汇编
9.1 如何内嵌汇编
9.2 内嵌汇编时变量的传递
十、程序结构
10.1 主函数与子函数
10.2 构建可复用文件
10.3 构建具有实用性的程序
2
TDxxxV1.0
一、C 与 Assembly 简述
Assembly(汇编)的历史已经有半个多世纪了,从计算机的发明那天开始,汇编就注定要与
其结缘,它作为第一种真正意义上的编程语言,在计算机的发展过程中具有无可替代的地位。
汇编具有与机器语言一一对应的高效率,就是由于汇编的高效率,和其紧贴硬件的特性,使其
在半个世纪之后的今天依然是目前开发单片机程序的主流工具之一。但是由于编写汇编代码的工作
量和难度都比较高,并且要求程序员对硬件必须有较深刻的了解,其入门就相对较难。而汇编的写
法各异,不同的程序员编写的代码有着巨大的差异,这就带来了学习的难度,可读性差也成为了其
推广的瓶颈,程序的维护更加艰难。随着程序复杂性的增加,开发团队的形成,应用而生的高级语
言就逐渐取代了其位置。
C 就是高级语言中针对硬件操作最优秀的一种,C 也是基于汇编的,其相互关系如图所示。随
着人们不断的对 C 进行改善,使 C 的效率得到了很大的提升,其编译效率逐渐的逼近汇编。而 C 以
其模块化的编程模式,简洁的代码,良好的可读性和可维护性,成为了另一种单片机开发的主流开
发工具,相比汇编而言,其具有无可比拟的优异性。
C 代码
汇编代码
机器语言
图 1、C 与汇编的关系
SN8 C 是基于标准 C 而又加入 SONIX SN8 系列芯片特征的专用 C,它面对的是 SONIX SN8
系列芯片程序开发,它能产生非常简洁的能直接运行于 SN8 系列芯片的优化代码。具有良好的兼容
性,易学易用,既方便客户开发,又继承了原有汇编的卓越性能。
在本文当中,我们将结合汇编来讲述 C 开发的各方面知识,以期通过对比来加深对芯片的编
程应用的了解,同时,对熟悉 C 的程序员来说,可以更加深入了解芯片;而对于熟悉汇编的程序员
来说,我们可以从对比中找到从汇编到 C 的转换方法。
3
TDxxxV1.0
二、SN8 C studio 的安装与使用
SONIX SN8 系列的芯片是 RISC 内核的高性能芯片。目前,由 SONIX 提供的 SN8
Assembly 仅有 59 条指令,是一种高效的汇编语言,有 S8ASM 和 M2ASM 编译器分别支持其
1 系和 2 系芯片。在此基础上的 SN8 C studio 整合了汇编和 C 的编译器。
1.1、 SN8 C studio 的安装
在得到 SN8 C studio 的安装包后,按照标准的 Windows 程序安装方法安装就可以将软件安装
到机器上。
1.2、SN8 C studio 应用实例
一、 创建一个工作区
与 VC 类似,我们的工程管理模式是以工作区方式来管理,在你准备一个项目的时候,
你首先创建一个属于这个项目的工作区:
1、打开 IDS->文件->新建,单击出现如下界面:
图 2-1 新建对话框
2、单击 workSpace 图标,进入 workspace 创建窗口,单击 Location 编辑框后的按钮,选择你需
要的工作目录,然后输入新建 Workspace 的 name,在这里如下:
4
TDxxxV1.0
图 2-2 新建 Workspace 对话框
3、单击 OK,IDS 的界面生成了工作区的工作界面,出现了 Workspace 窗口和 Output 窗口。同时,
打开目标文件夹,你会发现在你选定的文件夹下面,生成了一个以 Workspace Name 命名的新文件
夹,打开文件夹你可以看到一个新生成的.wsp 文件,这就是新生成的 Workspace 的配置文件:
图 2-3 新生成的 Workspace 配置文件
二、 新建一个工程(Project)
在我们成功创建一个工作区后,你会发现我们的 Workspace 窗口中的 Projiect 数目为 0,接着
我们就要依据项目所用的芯片母体来创建一个工程项目了,跟创建 Workspace 相同,打开菜单中的
文件->新建,单击出现新建窗口,此时默认为新建 Project。在右边的 Project List 窗口中选择你要
使用的芯片母体和要创建的工程类型(一般为普通项目),此时的目标路径 Location 中已经显示为
你刚才建立的 Workspace 目录,建议将工程保存在这个目录下,不修改默认路径。给新建工程取一
个有意义的 Name,在框中输入。这里我们取与 Workspace 相同的名称,新建一个 2700 系列芯片
的普通项目工程,设置如下图所示:
1、单击文件->新建,选择合适的选项:
5
TDxxxV1.0
图 2-4 新建 Project
2、单击 OK。
3、新工程选项配置,在确认建立工程后,出现 Project Setting 对话框,左边的 Project 列表中
默认选中我们刚刚建立的工程,在这里我们只修改 Chip 和 Code Option 项目下的选项,如图所示:
图 2-5 Project Setting 对话框
4、选择正确的芯片:
在 Chip 页中,Definition 文本框中显示系统依据你选定的芯片母体系列而确定的需要调用的芯
6
TDxxxV1.0
片定义文件。Chip List 表列出了当前版本的 IDS 所支持的这一系列的各个芯片,选中其中你需要使
用的芯片母体,Selected 文本框和 Description 文本框相应会自动改变。如图:
图 2-6 选择芯片
5、设置正确的 Code Option 选项和 ICE MODE:
ICE MODE 的设置在 SN8P1xxx 芯片中是用于选择是否是 ICE 仿真模式,在 Code Option 列
表中自动显示选定芯片母体的 Code Option 选项,在 Option Value 项的默认值上单击,出现一个
下拉列表,单击选择合适的选项。如图:
图 2-7 设置正确的 Code Option
6、单击 OK,系统生成一个没有文件的工程,在 Workspace 管理窗口中我们可以看见当前生
成的工程为 Working project,正处被激活状态(工程名称为加粗字体):
7
TDxxxV1.0
图 2-8 新建 Project 的状态被激活
打开相应的文件夹,我们会发现系统生成了很多个新的文件,其中的.prj 文件即为工程文件,
其他的文件为根据我们刚才的设置和不同的芯片生成的配置文件及头文件。
三、 新建文件
完成项目的新建后,我们发现项目管理器 source 文件夹下是空的,没有任何文件,文件就是
我们编程的主要工作了!
1、打开文件->新建菜单,单击出现我们前面看过很多次的 New 对话框,不过比前面多了一个
选项——Files,选择 New 列表中的 Files 选项,单击按钮,对话框如图所示:
图 2-9 新建文件对话框
2、在 File List 中选中需要创建的文件类型,这里我们创建一个 C Source File,给文件命名从
Name 编辑框中输入,存放的地点为刚才的设定位置,默认不做修改。
3、单击 OK 按钮,IDS 打开一个编辑窗口,最大化,显示为刚刚建立的文件名的页,系统允
许我们在这里进行程序的编写。
四、 编写程序
在新建一个文件后,系统自动打开编辑器,并打开一个由用户命名的空文档,它与普通文档相
比较没有什么不同的之处,只不过它可以对 C 的关键字进行高亮显示。在新的文档里编辑程序。
C 本身就是一种模块化的编程语言,SN8C 的编程保持 C 语言的编程风格。
SN8C 所具有的 Non-ANSI C 的特性请参看其他章节,在此不再做描述。
8