版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SN8CSN8CSN8CSN8CUSERSONiXreservestherighttomakechangewithoutfurthernoticetoanyproductshereintoimprovereliability,functionordesign.SONiXdoesnotassumeanyliabilityarisingoutoftheapplicationoruseofanyproductorcircuitdescribedherein;neitherdoesitconveyanylicenseunderitspatentrightsnortherightsofothers.SONiXproductsarenotdesigned,intended,orauthorizedforusascomponentsinsystemsintended,forsurgicalimplantintothebody,orotherapplicationsintendedtosupportorsustainlife,orforanyotherapplicationinwhichthefailureoftheSONiXproductcouldcreateasituationwherepersonalinjuryordeathmayoccur.ShouldBuyerpurchaseoruseSONiXproductsforanysuchunintendedorunauthorizedapplication.BuyershallindemnifyandholdSONiXanditsofficers,employees,subsidiaries,affiliatesanddistributorsharmlessagainstallclaims,cost,damages,andexpenses,andreasonableattorneyfeesarisingoutof,directlyorindirectly,anyclaimofpersonalinjuryordeathassociatedwithsuchunintendedorunauthorizeduseevenifsuchclaimallegesthatSONiXwasnegligentregardingthedesignormanufactureofthepart.SONiXTECHNOLOGYCO.,SN8CAMENDMESONiXTECHNOLOGYCO.,VERV1.0firstVERAddtheSN8CAMENDMESONiXTECHNOLOGYCO.,VERV1.0firstVERAddthefollowingpartstothe8.4SONiXGenericMacroAssemblerRequirements&Specification12LCDDesigner13KeyboardVERModifiedthesampleprograms’VERUpdated“KeyboardEditor”VER “8.4SONiXGenericMacroAssembler Specification”intoChinese.VERUpdateversionnumberaccordingtonewVERLCDKeyboardVERAddanew9.5RPTFileSN8CStudioUserTableofTableof 第一部分SN8CStudioUserTableofTableof 第一部分集成开发环 1.简 系统概 系统配置需 安 硬件安 软件安 应用实 创建一个新工作 创建一个新项 创建一个新文 编辑代 编译链接(COMPILINGANDBUILDING 3.6调 设置断 跟踪程序执 输出文 菜单与工具 FILE菜单和工具 EDIT菜单和工具 VIEW菜单和工具 BUILD菜单和工具 DEBUG菜单和工具 TOOL菜 WINDOW菜 HELP菜 界面预 工作区窗 Project File 输出窗 Build消息窗 SONiXTECHNOLOGYCO.,SN8CStudioUser5.2.2调试消息窗 在文件中查找窗SN8CStudioUser5.2.2调试消息窗 在文件中查找窗 错误/警告信息窗 消息窗口弹出菜 调试视图(DEBUG 监视窗口(WatchWindow 变量窗口(VariableWindow 内存跟踪显示窗口(MemoryWindo 5.3.4寄存器显示窗口(RegisterWindow 6.工程设 工程管理器(PROJECT 建立一个新项 OpenandClosea 管理源文 创建一个新的源文 添加源文 6.2.3删除原文 6.3设置工 常规设 芯片设 目录设 汇编器设 连接设 CodeOption设 编译项 6.4.2链 创建(BUILD)项 调试项 第二部分开发语言和开发工 7.SN8C C源程序的结构特 79C语言的字符 C语言词 数据类 常量与变 数据的存储类型与存储结 Bank 基本运算符和表达 算术运算符与算术表达 89关系运算符与关系表达 89辑运算符与逻辑表达 位操作运算 赋值运算符与赋值表达 SONiXTECHNOLOGYCO.,SN8CStudioUser条件运算 SN8CStudioUser条件运算 逗号运算 指针运算 求字节数运算 特殊运算 优先级和结合 程序流程控 顺序结 选择结 循环结 7.5数 数组类型说 数组元素的表示方 7.6指 RAM/ROM指 Generic指 7.7函 函数定 函数参数传 变量的作用 函数参数与全局变 结构体、联合在SN8C程序中的应 7.8.1结构 7.8.2联合 7.9中 中断函数的定义 中断过程的分 中断函数的结 7.10位操 位的定 位的运 位比较在程序流程控制中的应 7.11预处 7.11.1概 7.11.2宏定 文件包 条件编 内嵌汇 如何内嵌汇 内嵌汇编时变量的传 7.13其 7.14SN8C自定义 8. 8.1SN8汇编语 标 操作 8.1.3注 8.1.4芯片保留 SONiXTECHNOLOGYCO.,SN8CStudioUser数值表达 算SN8CStudioUser数值表达 算术运算 8.2伪指 8.2.1程序开始和结 用户定义标 8.2.3变 8.2.4段定 字节数据定 数据定 位运算函 编译伪指 SONIX宏汇编需求及规 8.4.1简 需 架 PARTI宏处理 命令行选 功 保留 辅助指令及伪指 标示 整数常量和常量表达 运算 语 程序开始和结 自定义标 条件指 3宏应 PARTII可移植汇 命令行选 功 指定目标处理 段指 地 数据的定义和使 通过Public和External使用符 程序流程控 定义标 定义过 支持数据覆 记录存储空间 可重定位表达 5兼容 PARTIII处理器设 19处理器设 8.4.5PARTIVBNF语 Assembly SONiXTECHNOLOGYCO.,SN8CStudioUser9.链接和调 链接程SN8CStudioUser9.链接和调 链接程序做了什么 链接选 功能介 Dump用 MAPFILE格 RPT文件格 ERRORANDWARNING消 SINGLE 10. 软件模 LCDSIMULATOR使用说 LCDSimulator 使用方法说 FontEdit 10.2.3示 10.2.4LCDSimulator使用注意事 11.SONiX8-bitMCU’sUTP简 SONIX8-BITMCU’S UTP2X简 硬件连 UTP驱动程序安 UTP使用注意事 12LCD 12.1简 LCD面板属 228主用户界 点矩阵组件属 位图组件属 文字组件属 组合位图组件属 12.4菜 12.5工具 SONiXTECHNOLOGYCO.,SN8CStudioUser错误信 SN8CStudioUser错误信 异常处 生成LCD文 模拟示 13Keyboard KEYBOARDEDITOR简 KEYBOARDEDITOR菜 File菜 Edit菜 View菜 Align菜 Key菜 Chip菜 About菜 右击在模拟按钮上的弹出式菜 KEYBOARD工具栏按 文件按钮 Key设置按钮 Align按钮 BITMAPPING及KEYMATRIX原理及使用范 BitMapping按钮原 添加BitMapping按 KeyMatrix按钮原 添加KeyMatrix按 注意事 附录 SONiXTECHNOLOGYCO.,SN8CStudioUser第一部分集成开发环境1.简介1.1系统概览SN8CStudioUser第一部分集成开发环境1.简介1.1系统概览方便易用。本文将讲述如何建立一个SN8芯片开发应用的操作环境。SN8CStudioSONiX8-bitMCU设计的一个高性能且完整的开发环境。该系统由方便用户快速应用SONiX8-bitMCU系列芯片所必需的软硬件工具合并组成。其中最主要的部分是SN8CStudio,它提供了强大的工程编译和调试功能;其次是SN8ICE,提供在线仿真。就软件方面而言,SN8CStudio为用户提供了良好的工作平台使用户在使用过程中更轻松,方便。Windows的用户环境。SN8-ICE硬件的所有基本功能对仿真器可用。本手册中包含了更多的SN8CStudio的详细信息。SONiXSONiXSN8CStudio仿真程序指令实时仿真。硬件:容易安装和使用;软件:基于Windows的软件源程序调试;多个源程序文件的工作平台(C语言源程序文件汇SONiXTECHNOLOGYCO.,SN8C系统配置需SN8C系统配置需具有Pentium-II以上或兼容的处理器的PCWindows-98,Windows2000,WindowsXP操作系统内存最小为16MSONiXTECHNOLOGYCO.,SN8CStudioUser2.安装2.1硬件安装SN8CStudioUser2.安装2.1硬件安装ICESN8-ICE连到一起。用并口线将ICE连到主机上。ICELED2.2软件安装SONiXSN8CStudio的软件安装包,解压缩后你可以得到一个Figure2-SN8CStudioFigure2-SONiXTECHNOLOGYCO.,SN8CFigure2-3InstallationNextSN8CFigure2-3InstallationNextCancelFigure2-装请单击Next按钮。SONiXTECHNOLOGYCO.,SN8CFigure2-SN8CFigure2-Figure2-Install按钮将开始软件安装,软件会自动安装到系统当中。在安装过程中,在对话框当中会显SONiXTECHNOLOGYCO.,SN8CFigure2-最后,SN8SN8CFigure2-最后,SN8CStudioFinish按Figure2-SONiXTECHNOLOGYCO.,SN8CFigure2-SN8CFigure2-SONiXTECHNOLOGYCO.,SN8CStudioUser3.应用实例SN8CSN8CStudioUser3.应用实例SN8CStudio3.1创建一个新工作Figure3-1创建新工作SONiXTECHNOLOGYCO.,SN8CFigure3-OKSN8CFigure3-OK按钮,出现工作区窗口和输出窗口。打开目标文件夹,你会发现刚才被定义的子文件夹,其中包含一个新创建的.wsp配置文件。Figure3-SONiXTECHNOLOGYCO.,SN8CStudioUser3.2创建一个新项在文件菜单中选择新建命令,SN8CStudioSN8CStudioUser3.2创建一个新项在文件菜单中选择新建命令,SN8CStudio将默认创建一个新工程。在弹出的新建对话框中的工程列表窗口中选择合适的芯片母体。SN8CStudio将自动在地址栏内显示当前创建的工作区目录。通OKFigure3-4建立正确的项目类SONiXTECHNOLOGYCO.,SN8CFigure3-5项目SN8CFigure3-5项目Figure3-6芯片设置ICESONiXTECHNOLOGYCO.,SN8CFigure3-7设置CodeSN8CFigure3-7设置CodeOption选项OKWorkspace管理窗口中出现当前创建的工程,处在被Figure3-8工程管理窗SN8CStudio生成了一些新文件。其中.pfj文件为工程文件,其它的为工SONiXTECHNOLOGYCO.,SN8CStudioUser3.3创建一个新文SN8CStudioUser3.3创建一个新文FilesC源OK按钮,SN8CStudio将Figure3-9CrateaSourceSONiXTECHNOLOGYCO.,SN8CStudioUser3.4编辑代码SN8CStudioUser3.4编辑代码Main.asmSONiXTECHNOLOGYCO., chipSN8P2604 segment codeat call ;initialcpuregistercpu ...call ;interfacebetweeninterruptandmaincall SN8CSONiXSN8CSONiXTECHNOLOGYCO.,chip keyinbuf0 ;bit0>key ;bit1>key ;bit2>key ;bit3>key ;bit4>key ;bit5>key ;bit6>key ;bit7>key ds 1 ;bit0>run_key ;bit0>key;bit1>pin;bit7>cleankey keyBoard ;scankey call ;readintoincall ;readintocheckcall ;readintoconvert ;scanSN8CSONiXSN8CSONiXTECHNOLOGYCO., ;scan keyinbuf ;inspectthekeystation checkkeyinbufAND ; ;confirmthedepressingofkeys ;if ;processwithakey, ;wait ;check ;whetherhavefinishedeliminating;keybouncetime=0,copychkbufintocuvbuf ;finishedeliminatingflutterandstorethekeystation ;cleartheflagofkeyprocessing keychk90 ;dealwitheliminatingflutter ;setkey ;constantofeliminatingflutter comparekeycvtand andfindthe SN8CSONiXSN8CSONiXTECHNOLOGYCO., ;Checkthenewpressedkeyfrom ;judgethekey1_p call ;runthe Csource*FileName:TestHistory:SN8CSONiXSN8CSONiXTECHNOLOGYCO., describe:test2708*#include<sn8p2708a.h>structunsignedfint:1;unsigned:7;unsignedintaccbuf=0x00;unsignedintpflagbuf=0;interrupt //Thedatawillautointword.fint=1;}voidinitIO(void);voidinitINT(void);void{{{}{}}}void{SN8CSONiXSN8CSONiXTECHNOLOGYCO.,}void{}SN8CStudioUser3.5编译SN8CStudioUser3.5编译链接(CompilingandBuildCompilecurrentfileCompileCtrl+F7SONiXTECHNOLOGYCO.,SN8CStudioUser3.6调试在‘Debug’菜单中选择‘BeginDebug’命令或直接点击工具栏中的SN8CStudioUser3.6调试在‘Debug’菜单中选择‘BeginDebug’命令或直接点击工具栏中的Figure3-10调试界面监视窗口(SN8CStudioFigure3-11监视窗SONiXTECHNOLOGYCO.,SN8CStudioUser3变量窗寄存器窗SN8CStudioUser3变量窗寄存器窗Figure3-12寄存器窗口堆栈窗Figure3-13堆栈窗口内存窗汇编分析窗口CSONiXTECHNOLOGYCO.,SN8CStudioUser3.7设置断点SN8CStudioUser3.7设置断点Breakpoint命令(F9)就可以在程序中设置断点,程序将运行到断点处停Figure3-断点SONiXTECHNOLOGYCO.,SN8CStudioUser3.8跟SN8CStudioUser3.8跟踪程序SONiXTECHNOLOGYCO.,SN8CStudioUser3.9输出文件仿真SN8CStudioUser3.9输出文件仿真结Debug按钮或快捷键进入调试状态,即可在所连硬件上看到程序运行结果。如果没有出现预期的输出烧录文档SN8CStudio将自动在默认目录下生成烧录文档.sn8SONiXTECHNOLOGYCO.,SN8CStudioUser4.菜单与工具栏应用工具栏按钮可以更加快捷地执行命令。快捷键也可以快捷地执行SN8CStudio命令。SN8CSN8CStudioUser4.菜单与工具栏应用工具栏按钮可以更加快捷地执行命令。快捷键也可以快捷地执行SN8CStudio命令。SN8CStudio4.1File菜单和工FileSN8CStudio所有相关文件的菜单项。为了和其他应用程序菜单一致,此菜Figure4-1FileFigure4-2File工具栏可以通过该选项下拉菜单项新建Project/Workspace或者资源文件。单击File->New->NewProject/WorkspaceProjectWorkspace的类型:SONiXTECHNOLOGYCO.,SN8CFigure4-3(a):SN8CFigure4-3(a):NewProject/Workspace对话FileNew->NewFileSONiXTECHNOLOGYCO.,SN8CFigure4-3(b):NewFileSN8CFigure4-3(b):NewFile对话框Figure4-4Open对话框SONiXTECHNOLOGYCO.,SN8C打开工作Figure4-5Openworkspace对话框保SN8C打开工作Figure4-5Openworkspace对话框保存工作关闭工作另存为全部保SONiXTECHNOLOGYCO.,SN8C打印设打印预最近使SN8C打印设打印预最近使用的文件最近使用的工作区SN8CSONiXTECHNOLOGYCO.,SN8C菜单和工具栏4.2Figure4-6Edit菜单Figure4-7SN8C菜单和工具栏4.2Figure4-6Edit菜单Figure4-7SONiXTECHNOLOGYCO.,SN8C在文件中查找SN8C在文件中查找SONiXTECHNOLOGYCO.,SN8CStudioUser4.3View菜单和工ViewFigure4-8(a)View菜单工具栏SN8CStudioUser4.3View菜单和工ViewFigure4-8(a)View菜单工具栏5个下拉菜单,他们的功能分别如相应菜单项所列出的命令所示。把状态栏工作区Figure4-8(b)Debug菜单项下拉菜单SONiXTECHNOLOGYCO.,SN8C4.4Build菜单和工Build菜单提供创建可执行文件等所需的命令,BuildFigure4- Build工具栏Figure4-10SN8C4.4Build菜单和工Build菜单提供创建可执行文件等所需的命令,BuildFigure4- Build工具栏Figure4-10Build菜单编译当前文件创建工重建工全部创全部重新创建清除全部工程SONiXTECHNOLOGYCO.,SN8CSN8CSONiXTECHNOLOGYCO.,SN8CStudioUser4.5Debug菜单和工Figure4-11DebugSN8CStudioUser4.5Debug菜单和工Figure4-11Debug菜单Figure4-12Debug工具栏调试(BeginDebug退出调试(ExitSONiXTECHNOLOGYCO.,SN8CStudioUser运行(Run重启(Restart, 暂停(Pause单步SN8CStudioUser运行(Run重启(Restart, 暂停(Pause单步执行(Stepinto单步跳过(StepOverCALL单步跳出(StepOut的所有指令,并且PC指向CALL指令后面的下一条指令。运行到光标处(RuntoCursor,Ctrl+自动单步执行(Animatestep自动单步跳过(Animatestep停止自动运行( 添加断点(ToggleSONiXTECHNOLOGYCO.,SN8C断点(breakpoints,SN8C断点(breakpoints, Figure4-13设置断点对话框MemoryFigure4-14RAM空间设置对话框SONiXTECHNOLOGYCO.,SN8CStartAddressSN8CStartAddress:设置要处理的RAM段起始地址。Length:输入所要处理的RAM地址段长度。FillfromFileBINRAMSavetoFileRAMBINFillbyDataRAMSONiXTECHNOLOGYCO.,SN8C4.6Tool菜单用户设SN8C4.6Tool菜单用户设参数选Figure4-15Tool菜单SONiXTECHNOLOGYCO.,SN8C4.7WindowSN8C4.7Window菜单SONiXTECHNOLOGYCO.,SN8C4.8HelpSN8C4.8Help菜单SONiXTECHNOLOGYCO.,SN8CStudioUser5.界面预览SN8CSN8CStudioUser5.界面预览SN8CStudioSN8CStudio时,窗口中心的工4-1SN8CStudioFigure5–1SN8C打开后的界面4-2WindowsSN8CStudio窗SONiXTECHNOLOGYCO.,SN8CFigure5SN8CFigure5–2SN8C工程窗口界面SONiXTECHNOLOGYCO.,SN8CStudioUser5.1工作区窗口上角的closex”)按钮SN8CStudioUser5.1工作区窗口上角的closex”)按钮也可以通过取消视图菜单中对workspace的选中来实现。选择视图菜单中的workspace显示工程视窗。5.1.1ProjectFigure5-3工程视图Figure5-4工程视图弹出菜设置工作工程删除工保存工SONiXTECHNOLOGYCO.,SN8CStudioUser5.1.2FileFigureSN8CStudioUser5.1.2FileFigure5-5文件视图窗口1.工作区中弹出菜Figure5-6工作区弹添加工SONiXTECHNOLOGYCO.,SN8C2.工程项弹出菜Figure5-7工程项弹出建立工作工程SN8C2.工程项弹出菜Figure5-7工程项弹出建立工作工程新建文件添加文删除工保存工SONiXTECHNOLOGYCO.,SN8C重SN8C重排文SONiXTECHNOLOGYCO.,SN8CStudioUser5.2输出窗口SN8CStudioUser5.2输出窗口Figure5-8输出窗口5.2.1Build消息版本号,和产生的文件名称和位置,详细阅读这些信息对Debug会有很大的帮助。Figure5-9Build消息窗5.2.2调试消息5.2.3在文件中查找SONiXTECHNOLOGYCO.,SN8CFigure5-10FindInFiles消息窗5.2.4错误/警告信息窗口SN8CFigure5-10FindInFiles消息窗5.2.4错误/警告信息窗口SN8CStudio中将所有的错误和警告信息单独提出并显示在错误/警告信息窗口中。您可以方便快捷5.2.5消息窗口弹出Figure5-11消息窗口弹出菜SONiXTECHNOLOGYCO.,SN8CStudioUser另存为5.3调试视图SN8CStudioUser另存为5.3调试视图(Debug试模式下成功建立应用程序后,PC指针将指向源程序的第一行执行指令。此时,SN8CStudio已经Figure5-12调试窗口SONiXTECHNOLOGYCO.,SN8CStudioUser5.3.1监视窗口(Watch3个部分来放置不同的标签,有足够的置、地址以及值都将被显示出来。通过弹出菜单中的Radix选项可以更改数据的显示进制数等。SN8CStudioUser5.3.1监视窗口(Watch3个部分来放置不同的标签,有足够的置、地址以及值都将被显示出来。通过弹出菜单中的Radix选项可以更改数据的显示进制数等。Figure5-13监视窗口Figure5-14弹出进制数SONiXTECHNOLOGYCO.,SN8CStudioUser5.3.2变量窗口(Variable变量窗口将自动显示当前正在使用的局部变量的值。这在C源程序中是十分有意义的。显示进制方Figure5-15SN8CStudioUser5.3.2变量窗口(Variable变量窗口将自动显示当前正在使用的局部变量的值。这在C源程序中是十分有意义的。显示进制方Figure5-15变量窗Figure5-16弹出菜十六进十进制二进制5.3.3内存跟踪显示窗口(Memory内存窗中显示程序数据存储器空间的内容。调试时可以直接修改RAM窗口的数据,所有数值以十SONiXTECHNOLOGYCO.,SN8CFigure5- 内存跟踪显示Figure5-SN8CFigure5- 内存跟踪显示Figure5-18弹出菜ASCII5.3.4寄存器显示窗口(RegisterSONiXTECHNOLOGYCO.,SN8CStudioUserFigure5- 寄存窗口SN8CStudioUserFigure5- 寄存窗口Figure5-弹出进制数SONiXTECHNOLOGYCO.,SN8CStudioUser6.工程设计SN8CStudioSN8CStudioUser6.工程设计SN8CStudio6.1工程管理器(Project6.1.1建立一个新项第一步Figure6-1建立一个新工SONiXTECHNOLOGYCO.,SN8CStudioUser第二步第三步第四步SN8CStudioUser第二步第三步第四步Figure6-2创建一个新项目SONiXTECHNOLOGYCO.,SN8CStudioUserSN8CStudioUser6.1.2OpenandCloseaCloseSONiXTECHNOLOGYCO.,SN8CStudioUser6.2管理源文件New,Edit分别对已经打开的工程源程序文件进行添加和删除。源文件按次序显SN8CStudioUser6.2管理源文件New,Edit分别对已经打开的工程源程序文件进行添加和删除。源文件按次序显6.2.1创建一个新的源Figure6- 创建新文件汇编文件(Assemb SONiXTECHNOLOGYCO.,SN8CStudioUserC源文件(CSourceC头文件(HeaderSN8CStudioUserC源文件(CSourceC头文件(Header文本文件(Text二进制文件(BinaryOK按钮将文件添加到工程。当所选源文件成功被添加,其文件名将显示在工程文件的列6.2.2添加源文件用户也可以右击工作区窗口的活动工程选择‘AddFiles’将已经存在的文件添加到选中的工程中。新6.2.3删除原文件Studio链接文工具定义文件SONiXTECHNOLOGYCO.,SN8C6.3设置工程6.3.1常规设Figure6- 常SN8C6.3设置工程6.3.1常规设Figure6- 常规设置基本设常规Build记录设调试窗SONiXTECHNOLOGYCO.,SN8C高级设SN8C高级设SONiXTECHNOLOGYCO.,SN8CStudioUser6.3.2芯片设Description窗口显示被选中芯片的描述。ICFigureSN8CStudioUser6.3.2芯片设Description窗口显示被选中芯片的描述。ICFigure6-芯片6.3.3目录设标准库设置标准(系统定义)INI文件中定义的版本附加路径和库SONiXTECHNOLOGYCO.,SN8CFigure6-目录SN8CFigure6-目录6.3.4汇编器设Figure6-7汇编器设置SONiXTECHNOLOGYCO.,SN8CStudioUser列表文6.3.5连接设SN8CStudioUser列表文6.3.5连接设MAP文件map文件并显示其准确路径。SN8CStudiomap文件定义与工程相同的扩展名.mapfile。每个输出文件的默认文件名与源文件的相同,但文件扩展名不同。Figure6-8连接设置SONiXTECHNOLOGYCO.,SN8C6.3.6CodeOptionSN8C6.3.6CodeOption设置Figure6- CodeOption设置选择“禁用”。文本列表框内罗列了包括程序加密、CPU频率、高速时钟、看门狗、复位引脚和杂讯CodeOption选项(注:依不同芯片会显示不同的选项)。单击相应的选SONiXTECHNOLOGYCO.,SN8CStudioUser6.4编译项目6.4.1SN8CStudioUser6.4编译项目6.4.1编译器检测并列出当前被编译文件中的错误和警告,此错误和警告信息显示在输出窗口。双击那些Figure6-10编译过程描述6.4.2链接SONiXTECHNOLOGYCO.,SN8CStudioUser6.4.3SN8CStudioUser6.4.3MakeMake,即编译器可以生成一个新的Figure6-11文件被修改的提SONiXTECHNOLOGYCO.,SN8CStudioUser6.5创建(Build)SN8CStudioUser6.5创建(Build)项SONiXTECHNOLOGYCO.,SN8CStudioUser6.6调试项目文件描述ROM中字段和标号的位置。输出文件:用SN8CStudioUser6.6调试项目文件描述ROM中字段和标号的位置。输出文件:用于调试二进制文件原始的可执行二进制文件Map文件:由链接生成,描述符号地址和字段地址列表文件由汇编程序生成开始调程序跟设置断IO口的信息。设置断点有两种方法:一种在文本编辑器里直在一条指令处设置有效断点,仿真器或ICE将在执行此条指令之前停止运行。也就是说,这条指令退出调完成程序调试后,单击‘ExitDebug’SONiXTECHNOLOGYCO.,SN8CStudioUser第二部开发语言和开发工具SN8C7.1.1CSN8CStudioUser第二部开发语言和开发工具SN8C7.1.1C源程序的main源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源{}括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,7.1.2C语言的字字符是组成语言的最基本的元素。C语言字符集由字母,数字,空格,标点和特殊字符组成。在字0~910个7.1.3C语言词汇CSONiXTECHNOLOGYCO.,SN8CStudioUser 标识符由用户自定义。C规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并C不SN8CStudioUser 标识符由用户自定义。C规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器在标识符中,大小写是有区别的。例如BOOKbook2.关键字键字相同。C语言的关键字分为以下几类:预处理命令字:用于表示一个预处理命令。如前面各例中用到的include。7-3.运算C语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。运算SONiXTECHNOLOGYCO.,RelatedInterruptMemoryMemory#progmaBank3ss*T出现非法字符-3x以减号开bowy-1出现非法字符-(减号a,x,3x,BOOKSN8CStudioUser4.分隔符SN8CStudioUser4.分隔符inta;inta;Cinta当成一个标识符处理,其5.常量C6.注释符块注释:C语言的注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译SONiXTECHNOLOGYCO.,SN8CStudioUser7.2数据类型SN8CC8-bit单片机,所以必然会考虑数据类型的定义方法和长度。在这些方面,SN8C有它自己的专有的定义特征和数据长度,在使用时一定要7-2数据类型长度定义7.2.1常量与变量SN8CStudioUser7.2数据类型SN8CC8-bit单片机,所以必然会考虑数据类型的定义方法和长度。在这些方面,SN8C有它自己的专有的定义特征和数据长度,在使用时一定要7-2数据类型长度定义7.2.1常量与变量Ram非常小,有时会显得很紧张。所以系统为了节省空间会将一些表格等放在系统的ROM中。而我们直接命名的常量,则由编译器自动将其替换为所需要的值,这些工SONiXTECHNOLOGYCO., #224;t0interupttime ;3cooksatDataRangeoftheSignedchar(short、1Unsignedchar(short、1Signed2Unsigned2float421SN8CStudioUserEQU关键字,在编译过程中,程序里但凡出现了EQU前面的字段都会被其后面的值直接代替,因此,很方便地减轻SN8CSN8CStudioUserEQU关键字,在编译过程中,程序里但凡出现了EQU前面的字段都会被其后面的值直接代替,因此,很方便地减轻SN8CDWword,它是存放在.code段里面的,通过表头地SN8C在讲到表的处理之前,必须先提一提变量定义关键字的问题。SN8C定义一个变量时,可以指明它所放置的地方(RAMROM),分别用关键字RAM和ROM来指定存放的地点,如:ROMSONiXTECHNOLOGYCO.,unsignedlongROM {UnsignedintRAM //将变量存放在RAMStorethevariablesinRAMunsignedintUnsignedintROMromVariable; //将变量ROMStorethevariablesinROMROMunsignedintromVariable2; dw0000hdw ;A-dw dw dw dw dw dw //3cooksatSN8CStudioUser这是一个与上面的汇编表完全相同的表,我们将它存放在ROM中,通过调用数组来查表,这在temp1、temp2、temp3、temp4、led_dpSN8CStudioUser这是一个与上面的汇编表完全相同的表,我们将它存放在ROM中,通过调用数组来查表,这在temp1、temp2、temp3、temp4、led_dp、step6ByteRAM空间,那么程序当中就可以通过变量名对该变量的空间进行读写。当然在汇编中你也可以用一个变量名来访问两个或多个RAM空间,这类似于查表的操作,其定义如下:job_modejob_mode和job_mode+1来读写定义的两个存储单元,以此类推power_modeRAM空间定义的变量可以通过相同的方法来定义。可见,SN8AssemblerDS关键字来申请需要的变量空间,空间一旦被申请,就在整个程序流RAM本身就很少的单片机而言,不SN8CCompiler是在不同的位置定义就行了,这与标准C所规定的方法是一样的,后面再详细讨论。...;SN8CSONiXTECHNOLOGYCO., ;currentSN8CStudioUserSN8CStudioUser8-bitByteC这样的高级语言,不管使用何种数据类型,虽然某一行程序从字面上看,其操作十分简单,然而,实际上系统的C编译器需要用一系列机器指令对其复杂的变量类型、数据类型的进行处理。相同的一行语句,变量选择的类型不同,处理时就会产生很大的差别,产生的代码更是差别很多。特别是当使用浮点变量时,将明显地赠加运算时间和程序的长度。当程序必须保证运算精度时,C编译器将调用相应的C程序时往往会使用大量的、不C编译器相应地增加所调用的库函数以处理大量增加的变量类型,并最而对于有符号与无符号的变量类型。在编写程序时,如果使用signed和unsigned两种数据类型,那么SONiXTECHNOLOGYCO.,unsignedinttemp1;unsignedinttemp2;unsignedinttemp3;unsignedinttemp4;unsignedintunsignedintstep; //Currentstatusunsignedlongjob_mode;unsignedlongfloatinttemp1_1; //Signedinttypelongtemp2_2;SN8CStudioUseruchar代替unsignedcharuintunsignedintSN8CStudioUseruchar代替unsignedcharuintunsignedint数据的存储类型与存储结构在前面分析查表类型数据定义的时候已经提到了数据在单片机里的存储,会分为ROMRAM两会分别用关键字.code和.data来预先声明。128ByteUser80H~FFHisforsystemMoreUser7-1、RAMSN8P系列单片机的通用RAM区的大小依不同的芯片而不同,但都是按BANK来划分,每一个BANK00H~FFHBank080H~FFH的空间都是留给系统专用的系统SONiXTECHNOLOGYCO.,GeneralSystem#defineuintunsignedintPleasechoosethedatatypeswhichneedlessmemoryiftheycanaccomplishthefunctionsallright.ThiswillbringusprofitwhenweusetheRAMmemoryandimprovetheefficiencyofcodegenerating.Theunsignedtypesarepreferred,andthiscanavoidsomeerrors,asthedatainsidethechipishandledasunsignedtype.Attention!Clanguageiscase-sensitive,andarulefornamingthevariablesshouldbefollowedatthebeginning.Humpnotationisagoodchoice,butassemblerprogrammersmaynotbeaccustomedtoitatthebeginning.SN8CStudioUserRAM区的数据结构,在定义一个变量时,我们前面已经提到可以用RAM和ROMRAM当中,因而RAMCRAM里了,缺省项给我们带来了很RAM存储区内,80H~FFHSN8CStudioUserRAM区的数据结构,在定义一个变量时,我们前面已经提到可以用RAM和ROMRAM当中,因而RAMCRAM里了,缺省项给我们带来了很RAM存储区内,80H~FFH别对应了芯片内部的资源,SN8C针对这部分的系统资源,对这些寄存器进行了定义,其定义的形#include7.2.3BankSN8PRAMBANKSONiXTECHNOLOGYCO., (*((RAMunsignedint*)0x80)) (*((RAMunsignedint*)0x81)) (*((RAMunsignedint*)0x82)) (*((RAMunsignedint*)0x83)) (*((RAMunsignedint*)0x84)) (*((RAMunsignedint*)0x85)) (*((RAMunsignedint*)0x86))unsignedinttemp1;unsignedintRAMRAMunsignedintunsignedlongunsignedlongRAMRAMunsignedlongfloatfloatRAMRAMfloatint //SignedintRAMtemp1-RAMtemp1-longSN8CStudioUserRAMBANKnSN8CStudioUserRAMBANKnRAMBANKSONiXTECHNOLOGYCO.,//followingvariablesareallstaticor//wherethe“n”isthebanknumber//“default”meansdecidedbyintX=123;//XisinbankstaticintY=123;//Yisinbank//fromnowon,allnewdefinedstaticorglobalvariableswill//locatedbySN8CStudioUser 基本运算符和表达式CC语言功能十分完善。这也是C语言的主要特点之一。C算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便SN8CStudioUser 基本运算符和表达式CC语言功能十分完善。这也是C语言的主要特点之一。C算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便因此也增加了C语言的复杂性。 算术运算符与算术表达式 关系运算符与关系表达式、大于等于a+b>c-d,x>3/2,'a'+1(b>c),a!=(c==d)5>0的值为“真”1。(a=3)>(b=5)3>50SIIk==j==i+5,根据k==j0==i+5,也不成立,故表达式。 辑运算符与逻辑表达式逻辑运算符C语言中提供了三种逻辑运算符&&与运算||或运算 !非运算与运算符&&和或运算符||均为双目运算符。具有左结合性。非运算符!为单目运算符,具有右结合性。逻辑运算的值” 运算&&参与运算的两个量都为真时,结果才为真,否则为假。例如,5>0&&4>2,5>0为真,4>2也为真,相与的结果也为真。SONiXTECHNOLOGYCO., (x+r)*8- (++i)-(j++)+(k--SN8CStudioUser运算||5>0||5>8,5>0SN8CStudioUser运算||5>0||5>8,5>0还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”53均为非“0”5&&3的值为“真”,即为1。a&&b&&c逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”7.3.4位操作运算参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右(>>)六种7.3.5赋值运算符与赋值表赋值运算符用于赋值运算,分为简单赋值(=)、复合算术赋值*=和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。简单赋值运算符和表达式简单赋值运算符记为“=”。由=可理解为C中,把“=”定义为运算符,从而5a,8ba,bxx13。因此如x=8;a=b=c=5;都是赋值语句,在前面各例中我们已大量使用过了。SONiXTECHNOLOGYCO.,SN8CStudioUser型赋予整型,舍去小数部分。前面的例2.9(小数部分的值为0)量的低八位中,高八位为0。SN8CStudioUser型赋予整型,舍去小数部分。前面的例2.9(小数部分的值为0)量的低八位中,高八位为0。复合赋值符及表达式在赋值符“=”+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。构成复合赋值表达式的一般形式为:变量双目运算符=表达式它等效于变量=变量运算符表达式例如:7.3.6条件运算符12maxa>b)?a:babamax,否则把b赋予max。条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此maxabab可以去掉括号而写为max=a>b?a:bSONiXTECHNOLOGYCO.,Onecanmax=(a>b)?a:bif(a>b)max=a;elsemax=b; a=a+5 r=r%pSN8CStudioUser 7.3.7逗号运算符用于把若干表达式组合成一个表达式(,)达式,称为逗号表达式。1SN8CStudioUser 7.3.7逗号运算符用于把若干表达式组合成一个表达式(,)达式,称为逗号表达式。122的值作本例中,y2的值,x是第一个表达式的值。对于逗号表121,(表2,…表达式n整个逗号表达式的值等于表达式n的值。7.3.8指针运算符用于取内容(*)和取地址(&)7.3.9求字节数运算用于计算数据类型所占的字节数(sizeof)7.3.10特殊有括号(),下标[],成员(→,.)SONiXTECHNOLOGYCO.,void{inta=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf("y=%d,x=%d",y,}a<--2,b<--4,c<--6,x<--0,y<--x<--a+b,y<---SN8CStudioUser7.3.11优先级和结合性规定的结合方向处理。C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术SN8CStudioUser7.3.11优先级和结合性规定的结合方向处理。C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右即先左后右。如有表达式x-y+z则y应先与号结左的结合方向称为“右结合性”x=y=z,由于“=”的右结C7-SONiXTECHNOLOGYCO.,()[]->leftto!~++--(类型)+-*rightto*/leftto+leftto<<leftto >leftto==leftto&leftto^leftto|lefttolefttorighttorightto=+=-=*=/=%=&=|=<<=lefttoSN8CStudioUser7.4程序流程7.4.1顺序结构顺序结构是程序最基本的流程,其语句顺序执行,SN8CStudioUser7.4程序流程7.4.1顺序结构顺序结构是程序最基本的流程,其语句顺序执行,PCCPU内部处理指令的初始图7-2SequentialProgramFlowing性和时间性,如图中的A操作的发展方向只有一个,即接下来就是B操作,中间既没有反复也没有曲折变化,B一定发生在A的后面。C语言的实现:(微波炉开机初始化SONiXTECHNOLOGYCO.,key_bibi_f=1; //Beeponcewhenelectrifiedmenu_disp_h=0xf0U; //Display“0:00”whenelectrifiedmenu_disp_l=0;disp5=BA操作SN8CStudioUserSN8Assembler7.4.2选择结构ifSN8CStudioUserSN8Assembler7.4.2选择结构if语句if的if语句有三种基本形式。1.if(表达式)2.if-elseif(表达式12。其过程可表示为下图SONiXTECHNOLOGYCO., ;Beeponcewhen ;Display“0:00”whenelectrified SN8C图7-3ConditionalProgramFlowingC语言实现:(BCDSN8C图7-3ConditionalProgramFlowingC语言实现:(BCD码调整SN8SONiXTECHNOLOGYCO., ;If(result_buf>{result_buf=input+}{result_buf=}PB操A操SN8CStudioUserb0bts为标志为来判断,比如用SUB指令将其转化成FCFZ标志位进行判断ASN8CStudioUserb0bts为标志为来判断,比如用SUB指令将其转化成FCFZ标志位进行判断A行多分支结构流程ifif-else-if语句,其一n。图7-4:SerialmultipliedbranchesflowingSONiXTECHNOLOGYCO.,YNIsP1Y IsP2YNIsPn elseif(condition2)statement2;elseif(condition3)statement3;…elseif(conditionm)statementm;statementSN8CCif,elseSN8CCif,elseif问:SN8ASMSONiXTECHNOLOGYCO., jmpbuzzer10mov movbuzzer_time,a mova,@buzzer_not3 movbuzzer_not,a jmpbuzzer40 jmpbuzzer20mov movbuzzer_time,a ;Lengthofbeepsmova,@buzzer_not1 movbuzzer_not,a ;Sign-reversetimes.jmpbuzzer40 jmpbuzzer30mov movbuzzer_time,a mova,@buzzer_not2 ;#4.mov ;Sign-reverse{buzzer_time=d_buzzer_time1; //Lengthofbeeps,200ms.buzzer_not=d_buzzer_not3; //Leeptimes,#1}else {buzzer_time=d_buzzer_time2; //Lengthofbeeps,500msbuzzer_not=d_buzzer_not1; //Beeptimes,#10}else {buzzer_time=d_buzzer_time2; //lengthofbeeps,500msbuzzer_not=d_buzzer_not1; //Beeptimes,#4} Key-pressbeeprequest Cook-finishedbeeprequestflag. ;Segmentshiftbeeprequestflagkey-pressbeeps:200ms/oncesegmentshiftbeeps:500ms/twiceSN8CStudioUserifif)if(b)0,即为SN8CStudioUserifif)if(b)0,即为“真”if(a=5)…;中表达式的值永合法的。又如,有程序段:if在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。if语句的嵌ififififif语句意if和else的配对问题。例如:SONiXTECHNOLOGYCO.,}}jmpSN8CStudioUserIsit:SN8CStudioUserIsit:if(condition为了避免这种二义性,C语言规定,elseif配对,因此对上述例子应按前一种并行多分支结构流程Cswitch图7-5ParallelmultipliedbranchesflowingSONiXTECHNOLOGYCO.,caseconstantexpression1:statement1;caseconstantexpression2:…caseconstantexpressionn:statementP= P= P= P= SN8CStudioUser如casedefaultSN8CStudioUser如casedefaultcasecase后,允许有多个语句,可以不用{}casedefaultdefaultSONiXTECHNOLOGYCO.,mov ;=0pressbuttononcetosettime.jmpks82 jmpks83 jmp ;endtime ;Querytime.jmpks85 ;Pressbuttontojmpks86 {case0: //PressbuttononcetosettimecaseONE_PRESS_CLOCK_KEY_C://PresstwicetosettheminutescaseTWO_PRESS_CLOCK_KEY_C://PressforthethirdtimetoendtimesettingcaseBESPOKE_ING_C //Pressbuttontoquerypre-setcaseSELECT_TIME_C: //Setflagbespoke_f=1if(job_mode1==DEFROST_MODE_C)break;elsecaseSTART_ING_C: //Queryfortherunningtimeif(job_mode1==DEFROST_MODE_C)ks86();break;}default:statement}SN8CStudioUser7.4.3循环结构循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到C语言提供了多种7-“While”loopflowingSN8CStudioUser7.4.3循环结构循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到C语言提供了多种7-“While”loopflowingThewhilewhilewhile(表达式)语句SONiXTECHNOLOGYCO.,tempbuf=0;while(tempbuf==15){++tempbuf;}//DelayNIsPYA SN8CStudioUserWhilewhilewhile语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(0)即可继续循环。循环体如包括有一个以上的语句,则必须用SN8CStudioUserWhilewhilewhile语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(0)即可继续循环。循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。whilea=5没有其它中止循环的手段,因此该循环将无休止地进行下去,形成死循环。4.whilewhiledo-while语句do-whiledo-while(0)则继续循环,SONiXTECHNOLOGYCO.,main(){intwhile(a=5){printf("%d} ; SN8CN7-“Do…while”loopflowingDo…whileCDo…whileSN8CN7-“Do…while”loopflowingDo…whileCDo…whiledo-whileif语句,while而在do-whiledo-whilewhiledowhile之间的循环体由多个语句组成时,也必须用{}do-whilewhiledo-whilewhiledo-whiledo-while至少要执行一次循环体。而while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。while语句和do-whileSONiXTECHNOLOGYCO., ;Selectbank ;Set@YZaddressfrom ;Clear@YZ ;z=z-1,skipnextifz=0.jmpClrRAM10 mova,#00Hunsignedint*pyz=(unsignedint*)0x7f;*pyz --YIsPASN8CStudioUserfor语句for语句是C语言所提供的功能更SN8CStudioUserfor语句for语句是C语言所提供的功能更强,使用更广泛的一种循环语句。其一般形式为for(init-statement;condition;expression)表达式1 通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量表达式 表达式 一般形式中的“语句”即为循环体语句。for12的值,若值为真(0)表达式2和表达式,3则可能计算多次。循环体可能多次执行,也可能一次都不执行。(1for语句中的各表达式都可省略,但分号间隔符不能少。如:for(;表达式;表达式)省去了表达式1。for(表达式;;表达式)省去了表达式2。for;;省去了全部表达式。(2在循环变量已赋初值时,可省去表达式1。如省去表达式2或表达3则将造成无限循环,这(3).循环体可以是空语句 forwhile,do-whileSONiXTECHNOLOGYCO.,(1)…}(2)…SN8CStudioUser常流向,可以使用转移语句。在C语言中提供了4种转移语句:goto,break,continueandreturn SN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 场地租赁面试题目及参考答案
- 乡村医生年终述职报告(9篇)
- 安全消防知识测验题与答案
- 2025-2026学年新疆石河子数学四下期中复习检测试题(含答案解析)
- 消息写作考试题目及答案解析
- 2025-2026学年张家口市宣化县三年级数学下学期期中质量跟踪监视试题(含答案)
- 特殊工种模拟考试题目及完整答案
- 2025-2026学年山东省潍坊安丘市、高密市三年级数学下学期期中考试试题含答案
- FBI独特心态测试题及参考答案
- (新)债务催收委托代理合同(2026版)
- 2026 年消防文员笔试题库及答案
- 2026年黄冈中小学教师选调笔试真题(附答案)
- 制剂室专业知识培训课件
- 景观石吊装方案
- 门店装修设计手册
- 代加工砂石合同模板
- 重大事故隐患判定标准培训记录、培训效果评估
- 我的祖国合唱简谱
- 预防接种工作规范(2023年版)解读课件
- 医务科依法执业自查表
- 2024届贵阳市2023年11月普通高中高三年级质量监测物理试卷(含答案)
评论
0/150
提交评论