您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 如何用C来完成SN8系列芯片的程序设计
TDxxxV1.01如何用C来完成SN8系列芯片的程序设计松翰易爱华松翰科技(深圳)有限公司SONIXTECHNOLOGYCO.,LTD.TDxxxV1.02内容概览一、C与Assembly简述二、SN8Cstudio的安装与使用2.1SN8Cstudio的安装2.2SN8Cstudio应用实例三、数据类型与运算3.1专有数据类型3.2常量与变量3.3数据的存储类型与存储结构四、程序流程控制4.1顺序结构4.2分支判断结构4.3循环控制结构五、函数5.1函数的定义5.2函数参数传递与返回值5.3函数参数与全局变量六、结构体、联合在SN8C程序中的应用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构建具有实用性的程序TDxxxV1.03一、C与Assembly简述Assembly(汇编)的历史已经有半个多世纪了,从计算机的发明那天开始,汇编就注定要与其结缘,它作为第一种真正意义上的编程语言,在计算机的发展过程中具有无可替代的地位。汇编具有与机器语言一一对应的高效率,就是由于汇编的高效率,和其紧贴硬件的特性,使其在半个世纪之后的今天依然是目前开发单片机程序的主流工具之一。但是由于编写汇编代码的工作量和难度都比较高,并且要求程序员对硬件必须有较深刻的了解,其入门就相对较难。而汇编的写法各异,不同的程序员编写的代码有着巨大的差异,这就带来了学习的难度,可读性差也成为了其推广的瓶颈,程序的维护更加艰难。随着程序复杂性的增加,开发团队的形成,应用而生的高级语言就逐渐取代了其位置。C就是高级语言中针对硬件操作最优秀的一种,C也是基于汇编的,其相互关系如图所示。随着人们不断的对C进行改善,使C的效率得到了很大的提升,其编译效率逐渐的逼近汇编。而C以其模块化的编程模式,简洁的代码,良好的可读性和可维护性,成为了另一种单片机开发的主流开发工具,相比汇编而言,其具有无可比拟的优异性。图1、C与汇编的关系SN8C是基于标准C而又加入SONIXSN8系列芯片特征的专用C,它面对的是SONIXSN8系列芯片程序开发,它能产生非常简洁的能直接运行于SN8系列芯片的优化代码。具有良好的兼容性,易学易用,既方便客户开发,又继承了原有汇编的卓越性能。在本文当中,我们将结合汇编来讲述C开发的各方面知识,以期通过对比来加深对芯片的编程应用的了解,同时,对熟悉C的程序员来说,可以更加深入了解芯片;而对于熟悉汇编的程序员来说,我们可以从对比中找到从汇编到C的转换方法。机器语言汇编代码C代码TDxxxV1.04二、SN8Cstudio的安装与使用SONIXSN8系列的芯片是RISC内核的高性能芯片。目前,由SONIX提供的SN8Assembly仅有59条指令,是一种高效的汇编语言,有S8ASM和M2ASM编译器分别支持其1系和2系芯片。在此基础上的SN8Cstudio整合了汇编和C的编译器,1.1、SN8Cstudio的安装在得到SN8Cstudio的安装包后,按照标准的Windows程序安装方法安装就可以将软件安装到机器上。1.2、SN8Cstudio应用实例一、创建一个工作区与VC类似,我们的工程管理模式是以工作区方式来管理,在你准备一个项目的时候,你首先创建一个属于这个项目的工作区:1、打开IDS-文件-新建,单击出现如下界面:TDxxxV1.05图2-1新建对话框2、单击workSpace图标,进入workspace创建窗口,单击Location编辑框后的按钮,选择你需要的工作目录,然后输入新建Workspace的name,在这里如下:图2-2新建Workspace对话框3、单击OK,IDS的界面生成了工作区的工作界面,出现了Workspace窗口和Output窗口。同时,打开目标文件夹,你会发现在你选定的文件夹下面,生成了一个以WorkspaceName命名的新文件夹,打开文件夹你可以看到一个新生成的.wsp文件,这就是新生成的Workspace的配置文件:图2-3新生成的Workspace配置文件二、新建一个工程(Project)在我们成功创建一个工作区后,你会发现我们的Workspace窗口中的Projiect数目为0,接着我们就要依据项目所用的芯片母体来创建一个工程项目了,跟创建Workspace相同,打开菜单中的文件-新建,单击出现新建窗口,此时默认为新建Project。在右边的ProjectList窗口中选择你要使用的芯片母体和要创建的工程类型(一般为普通项目),此时的目标路径Location中已经显示为你刚才建立的Workspace目录,建议将工程保存在这个目录下,不修改默认路径。给新建工程取一个有意义的Name,在框中输入。这里我们取与Workspace相同的名称,新建一个2700系列芯片的普通项目工程,设置如下图所示:1、单击文件-新建,选择合适的选项:TDxxxV1.06图2-4新建Project2、单击OK。3、新工程选项配置,在确认建立工程后,出现ProjectSetting对话框,左边的Project列表中默认选中我们刚刚建立的工程,在这里我们只修改Chip和CodeOption项目下的选项,如图所示:图2-5ProjectSetting对话框TDxxxV1.074、选择正确的芯片:在Chip页中,Definition文本框中显示系统依据你选定的芯片母体系列而确定的需要调用的芯片定义文件。ChipList表列出了当前版本的IDS所支持的这一系列的各个芯片,选中其中你需要使用的芯片母体,Selected文本框和Description文本框相应会自动改变。如图:图2-6选择芯片5、设置正确的CodeOption选项和ICEMODE:ICEMODE的设置在SN8P1xxx芯片中是用于选择是否是ICE仿真模式,在CodeOption列表中自动显示选定芯片母体的CodeOption选项,在OptionValue项的默认值上单击,出现一个下拉列表,单击选择合适的选项。如图:图2-7设置正确的CodeOptionTDxxxV1.086、单击OK,系统生成一个没有文件的工程,在Workspace管理窗口中我们可以看见当前生成的工程为Workingproject,正处被激活状态(工程名称为加粗字体):图2-8新建Project的状态被激活打开相应的文件夹,我们会发现系统生成了很多个新的文件,其中的.prj文件即为工程文件,其他的文件为根据我们刚才的设置和不同的芯片生成的配置文件及头文件。三、新建文件完成项目的新建后,我们发现项目管理器source文件夹下是空的,没有任何文件,文件就是我们编程的主要工作了!1、打开文件-新建菜单,单击出现我们前面看过很多次的New对话框,不过比前面多了一个选项——Files,选择New列表中的Files选项,单击按钮,对话框如图所示:图2-9新建文件对话框2、在FileList中选中需要创建的文件类型,这里我们创建一个CSourceFile,给文件命名从Name编辑框中输入,存放的地点为刚才的设定位置,默认不做修改。3、单击OK按钮,IDS打开一个编辑窗口,最大化,显示为刚刚建立的文件名的页,系统允许我们在这里进行程序的编写。四、编写程序TDxxxV1.09在新建一个文件后,系统自动打开编辑器,并打开一个由用户命名的空文档,它与普通文档相比较没有什么不同的之处,只不过它可以对C的关键字进行高亮显示。在新的文档里编辑程序。C本身就是一种模块化的编程语言,SN8C的编程保持C语言的编程风格。SN8C所具有的Non-ANSIC的特性请参看其他章节,在此不再做描述。下面是一个简单的C程序举例。例2:/********************************************************************FileName:SN8C_Ex.c*PostBy:Dragon.Yi*Date:2005/09/23*TestHistory:V1.00.220*describe:test2708interrupt********************************************************************/#includesn8p2708a.hstructword{unsignedfint:1;unsigned:7;}intword;unsignedinttc0cvalue=0x64;unsignedintaccbuf=0x00;unsignedintpflagbuf=0;__interruptintserv(void){//Thedatawillautostore!_bCLR(&INTRQ,5);TC0C=tc0cvalue;intword.fint=1;}voidinitIO(void);voidinitINT(void);voidmain(void){STKP=0x07;initIO();initINT();while(1){if(intword.fint!=0){P1=0x00;TDxxxV1.010P2=0x00;P3=0x00;P4=0x00;P5=0x00;P0=0x00;}else{P0=0xff;P1=0xff;P2=0xff;P3=0xff;P4=0xff;P5=0xff;}}}voidinitIO(void){P0M=0xFF;P1M=0xFF;P2M=0xFF;P3M=0xFF;P4M=0xFF;P5M=0xFF;}voidinitINT(void){INTRQ=0x00;INTEN=0x00;TC0M=0x00;TC0M=0x20;TC0C=0x64;_bCLR(&INTRQ,5);_bSET(&INTEN,5);_bSET(&TC0M,7);_bSET(&STKP,7);}注:程序只作为程序架构提供参考!五、调试程序TDxxxV1.011在完成代码编辑后,想要马上顺利运行基本上是不可能的,每一个程序都有经过调试的过程,程序的调试在IDS中非常方便,IDS有全面的可视化的调试工具。你可以在程序中设置断点,在程序中按自己的需求来运行。可以根据不同的需求来进行调试。1、compile和Build完成代码的编辑后,首先要进行Compile,在菜单Build-Compilecurrentfile单击或在工具栏中单击Compile按钮和单击快捷键Ctrl+F7均可以启动系统的Compile程序。Compile程序会检查代码中存在的语法错误和软件设置错误,然后在Output窗口表列出来,用户可以根据表列出来的提示,对程序进行修改。若是语法错误,在列表中双击选项,系统会自动将光标移动到相对应的代码行,方便你的检查和修改。Compile通过后,进行Build,同样有3种方式可以启动Build程序,Build程序生成运行所需要的一些文件,同时检查硬件配置和连接错误,用户必须根据提示对程序进行修改才能顺利通过。2、选择仿真方式单击进入Project-setting,出现我们前面已经熟悉的projectsetting对话框,当前显示的是General页,在primarysetting组下面找到复选项usesimulate。如果选中该选项,则程序就在系统提供的虚拟仿真器上仿真并显示相应结果;若不选中该选项,则程序必须在相应系列的仿真器上进行程序调试仿真。这里我们先选择它。3、进入调试模式完成compile和build之后,进入菜单Debug-beginDebug,单击菜单项或直接按快捷键F5或在图标选项中选择按钮单击都可进入调试模式,进入调试模式后,系统界面变成如下图:图2-11调试程序界面系统界面出现Ramwindow、Watchwindow、variablewindow、Registerwindow
本文标题:如何用C来完成SN8系列芯片的程序设计
链接地址:https://www.777doc.com/doc-2481706 .html