版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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 第一部分集成開(kāi)發(fā)環(huán) 1.簡(jiǎn) 系統(tǒng)概 系統(tǒng)配置需 安 硬件安 軟件安 應(yīng)用實(shí) 創(chuàng)建一個(gè)新工作 創(chuàng)建一個(gè)新項(xiàng) 創(chuàng)建一個(gè)新文 編輯代 編譯鏈接(COMPILINGANDBUILDING 3.6調(diào) 設(shè)置斷 跟蹤程序執(zhí) 輸出文 菜單與工具 FILE菜單和工具 EDIT菜單和工具 VIEW菜單和工具 BUILD菜單和工具 DEBUG菜單和工具 TOOL菜 WINDOW菜 HELP菜 界面預(yù) 工作區(qū)窗 Project File 輸出窗 Build消息窗 SONiXTECHNOLOGYCO.,SN8CStudioUser5.2.2調(diào)試消息窗 在文件中查找窗SN8CStudioUser5.2.2調(diào)試消息窗 在文件中查找窗 錯(cuò)誤/警告信息窗 消息窗口彈出菜 調(diào)試視圖(DEBUG 監(jiān)視窗口(WatchWindow 變量窗口(VariableWindow 內(nèi)存跟蹤顯示窗口(MemoryWindo 5.3.4寄存器顯示窗口(RegisterWindow 6.工程設(shè) 工程管理器(PROJECT 建立一個(gè)新項(xiàng) OpenandClosea 管理源文 創(chuàng)建一個(gè)新的源文 添加源文 6.2.3刪除原文 6.3設(shè)置工 常規(guī)設(shè) 芯片設(shè) 目錄設(shè) 匯編器設(shè) 連接設(shè) CodeOption設(shè) 編譯項(xiàng) 6.4.2鏈 創(chuàng)建(BUILD)項(xiàng) 調(diào)試項(xiàng) 第二部分開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)工 7.SN8C C源程序的結(jié)構(gòu)特 79C語(yǔ)言的字符 C語(yǔ)言詞 數(shù)據(jù)類 常量與變 數(shù)據(jù)的存儲(chǔ)類型與存儲(chǔ)結(jié) Bank 基本運(yùn)算符和表達(dá) 算術(shù)運(yùn)算符與算術(shù)表達(dá) 89關(guān)系運(yùn)算符與關(guān)系表達(dá) 89輯運(yùn)算符與邏輯表達(dá) 位操作運(yùn)算 賦值運(yùn)算符與賦值表達(dá) SONiXTECHNOLOGYCO.,SN8CStudioUser條件運(yùn)算 SN8CStudioUser條件運(yùn)算 逗號(hào)運(yùn)算 指針運(yùn)算 求字節(jié)數(shù)運(yùn)算 特殊運(yùn)算 優(yōu)先級(jí)和結(jié)合 程序流程控 順序結(jié) 選擇結(jié) 循環(huán)結(jié) 7.5數(shù) 數(shù)組類型說(shuō) 數(shù)組元素的表示方 7.6指 RAM/ROM指 Generic指 7.7函 函數(shù)定 函數(shù)參數(shù)傳 變量的作用 函數(shù)參數(shù)與全局變 結(jié)構(gòu)體、聯(lián)合在SN8C程序中的應(yīng) 7.8.1結(jié)構(gòu) 7.8.2聯(lián)合 7.9中 中斷函數(shù)的定義 中斷過(guò)程的分 中斷函數(shù)的結(jié) 7.10位操 位的定 位的運(yùn) 位比較在程序流程控制中的應(yīng) 7.11預(yù)處 7.11.1概 7.11.2宏定 文件包 條件編 內(nèi)嵌匯 如何內(nèi)嵌匯 內(nèi)嵌匯編時(shí)變量的傳 7.13其 7.14SN8C自定義 8. 8.1SN8匯編語(yǔ) 標(biāo) 操作 8.1.3注 8.1.4芯片保留 SONiXTECHNOLOGYCO.,SN8CStudioUser數(shù)值表達(dá) 算SN8CStudioUser數(shù)值表達(dá) 算術(shù)運(yùn)算 8.2偽指 8.2.1程序開(kāi)始和結(jié) 用戶定義標(biāo) 8.2.3變 8.2.4段定 字節(jié)數(shù)據(jù)定 數(shù)據(jù)定 位運(yùn)算函 編譯偽指 SONIX宏匯編需求及規(guī) 8.4.1簡(jiǎn) 需 架 PARTI宏處理 命令行選 功 保留 輔助指令及偽指 標(biāo)示 整數(shù)常量和常量表達(dá) 運(yùn)算 語(yǔ) 程序開(kāi)始和結(jié) 自定義標(biāo) 條件指 3宏應(yīng) PARTII可移植匯 命令行選 功 指定目標(biāo)處理 段指 地 數(shù)據(jù)的定義和使 通過(guò)Public和External使用符 程序流程控 定義標(biāo) 定義過(guò) 支持?jǐn)?shù)據(jù)覆 記錄存儲(chǔ)空間 可重定位表達(dá) 5兼容 PARTIII處理器設(shè) 19處理器設(shè) 8.4.5PARTIVBNF語(yǔ) Assembly SONiXTECHNOLOGYCO.,SN8CStudioUser9.鏈接和調(diào) 鏈接程SN8CStudioUser9.鏈接和調(diào) 鏈接程序做了什么 鏈接選 功能介 Dump用 MAPFILE格 RPT文件格 ERRORANDWARNING消 SINGLE 10. 軟件模 LCDSIMULATOR使用說(shuō) LCDSimulator 使用方法說(shuō) FontEdit 10.2.3示 10.2.4LCDSimulator使用注意事 11.SONiX8-bitMCU’sUTP簡(jiǎn) SONIX8-BITMCU’S UTP2X簡(jiǎn) 硬件連 UTP驅(qū)動(dòng)程序安 UTP使用注意事 12LCD 12.1簡(jiǎn) LCD面板屬 228主用戶界 點(diǎn)矩陣組件屬 位圖組件屬 文字組件屬 組合位圖組件屬 12.4菜 12.5工具 SONiXTECHNOLOGYCO.,SN8CStudioUser錯(cuò)誤信 SN8CStudioUser錯(cuò)誤信 異常處 生成LCD文 模擬示 13Keyboard KEYBOARDEDITOR簡(jiǎn) KEYBOARDEDITOR菜 File菜 Edit菜 View菜 Align菜 Key菜 Chip菜 About菜 右擊在模擬按鈕上的彈出式菜 KEYBOARD工具欄按 文件按鈕 Key設(shè)置按鈕 Align按鈕 BITMAPPING及KEYMATRIX原理及使用范 BitMapping按鈕原 添加BitMapping按 KeyMatrix按鈕原 添加KeyMatrix按 注意事 附錄 SONiXTECHNOLOGYCO.,SN8CStudioUser第一部分集成開(kāi)發(fā)環(huán)境1.簡(jiǎn)介1.1系統(tǒng)概覽SN8CStudioUser第一部分集成開(kāi)發(fā)環(huán)境1.簡(jiǎn)介1.1系統(tǒng)概覽方便易用。本文將講述如何建立一個(gè)SN8芯片開(kāi)發(fā)應(yīng)用的操作環(huán)境。SN8CStudioSONiX8-bitMCU設(shè)計(jì)的一個(gè)高性能且完整的開(kāi)發(fā)環(huán)境。該系統(tǒng)由方便用戶快速應(yīng)用SONiX8-bitMCU系列芯片所必需的軟硬件工具合并組成。其中最主要的部分是SN8CStudio,它提供了強(qiáng)大的工程編譯和調(diào)試功能;其次是SN8ICE,提供在線仿真。就軟件方面而言,SN8CStudio為用戶提供了良好的工作平臺(tái)使用戶在使用過(guò)程中更輕松,方便。Windows的用戶環(huán)境。SN8-ICE硬件的所有基本功能對(duì)仿真器可用。本手冊(cè)中包含了更多的SN8CStudio的詳細(xì)信息。SONiXSONiXSN8CStudio仿真程序指令實(shí)時(shí)仿真。硬件:容易安裝和使用;軟件:基于Windows的軟件源程序調(diào)試;多個(gè)源程序文件的工作平臺(tái)(C語(yǔ)言源程序文件匯SONiXTECHNOLOGYCO.,SN8C系統(tǒng)配置需SN8C系統(tǒng)配置需具有Pentium-II以上或兼容的處理器的PCWindows-98,Windows2000,WindowsXP操作系統(tǒng)內(nèi)存最小為16MSONiXTECHNOLOGYCO.,SN8CStudioUser2.安裝2.1硬件安裝SN8CStudioUser2.安裝2.1硬件安裝ICESN8-ICE連到一起。用并口線將ICE連到主機(jī)上。ICELED2.2軟件安裝SONiXSN8CStudio的軟件安裝包,解壓縮后你可以得到一個(gè)Figure2-SN8CStudioFigure2-SONiXTECHNOLOGYCO.,SN8CFigure2-3InstallationNextSN8CFigure2-3InstallationNextCancelFigure2-裝請(qǐng)單擊Next按鈕。SONiXTECHNOLOGYCO.,SN8CFigure2-SN8CFigure2-Figure2-Install按鈕將開(kāi)始軟件安裝,軟件會(huì)自動(dòng)安裝到系統(tǒng)當(dāng)中。在安裝過(guò)程中,在對(duì)話框當(dāng)中會(huì)顯SONiXTECHNOLOGYCO.,SN8CFigure2-最后,SN8SN8CFigure2-最后,SN8CStudioFinish按Figure2-SONiXTECHNOLOGYCO.,SN8CFigure2-SN8CFigure2-SONiXTECHNOLOGYCO.,SN8CStudioUser3.應(yīng)用實(shí)例SN8CSN8CStudioUser3.應(yīng)用實(shí)例SN8CStudio3.1創(chuàng)建一個(gè)新工作Figure3-1創(chuàng)建新工作SONiXTECHNOLOGYCO.,SN8CFigure3-OKSN8CFigure3-OK按鈕,出現(xiàn)工作區(qū)窗口和輸出窗口。打開(kāi)目標(biāo)文件夾,你會(huì)發(fā)現(xiàn)剛才被定義的子文件夾,其中包含一個(gè)新創(chuàng)建的.wsp配置文件。Figure3-SONiXTECHNOLOGYCO.,SN8CStudioUser3.2創(chuàng)建一個(gè)新項(xiàng)在文件菜單中選擇新建命令,SN8CStudioSN8CStudioUser3.2創(chuàng)建一個(gè)新項(xiàng)在文件菜單中選擇新建命令,SN8CStudio將默認(rèn)創(chuàng)建一個(gè)新工程。在彈出的新建對(duì)話框中的工程列表窗口中選擇合適的芯片母體。SN8CStudio將自動(dòng)在地址欄內(nèi)顯示當(dāng)前創(chuàng)建的工作區(qū)目錄。通OKFigure3-4建立正確的項(xiàng)目類SONiXTECHNOLOGYCO.,SN8CFigure3-5項(xiàng)目SN8CFigure3-5項(xiàng)目Figure3-6芯片設(shè)置ICESONiXTECHNOLOGYCO.,SN8CFigure3-7設(shè)置CodeSN8CFigure3-7設(shè)置CodeOption選項(xiàng)OKWorkspace管理窗口中出現(xiàn)當(dāng)前創(chuàng)建的工程,處在被Figure3-8工程管理窗SN8CStudio生成了一些新文件。其中.pfj文件為工程文件,其它的為工SONiXTECHNOLOGYCO.,SN8CStudioUser3.3創(chuàng)建一個(gè)新文SN8CStudioUser3.3創(chuàng)建一個(gè)新文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調(diào)試在‘Debug’菜單中選擇‘BeginDebug’命令或直接點(diǎn)擊工具欄中的SN8CStudioUser3.6調(diào)試在‘Debug’菜單中選擇‘BeginDebug’命令或直接點(diǎn)擊工具欄中的Figure3-10調(diào)試界面監(jiān)視窗口(SN8CStudioFigure3-11監(jiān)視窗SONiXTECHNOLOGYCO.,SN8CStudioUser3變量窗寄存器窗SN8CStudioUser3變量窗寄存器窗Figure3-12寄存器窗口堆棧窗Figure3-13堆棧窗口內(nèi)存窗匯編分析窗口CSONiXTECHNOLOGYCO.,SN8CStudioUser3.7設(shè)置斷點(diǎn)SN8CStudioUser3.7設(shè)置斷點(diǎn)Breakpoint命令(F9)就可以在程序中設(shè)置斷點(diǎn),程序?qū)⑦\(yùn)行到斷點(diǎn)處停Figure3-斷點(diǎn)SONiXTECHNOLOGYCO.,SN8CStudioUser3.8跟SN8CStudioUser3.8跟蹤程序SONiXTECHNOLOGYCO.,SN8CStudioUser3.9輸出文件仿真SN8CStudioUser3.9輸出文件仿真結(jié)Debug按鈕或快捷鍵進(jìn)入調(diào)試狀態(tài),即可在所連硬件上看到程序運(yùn)行結(jié)果。如果沒(méi)有出現(xiàn)預(yù)期的輸出燒錄文檔SN8CStudio將自動(dòng)在默認(rèn)目錄下生成燒錄文檔.sn8SONiXTECHNOLOGYCO.,SN8CStudioUser4.菜單與工具欄應(yīng)用工具欄按鈕可以更加快捷地執(zhí)行命令??旖萱I也可以快捷地執(zhí)行SN8CStudio命令。SN8CSN8CStudioUser4.菜單與工具欄應(yīng)用工具欄按鈕可以更加快捷地執(zhí)行命令??旖萱I也可以快捷地執(zhí)行SN8CStudio命令。SN8CStudio4.1File菜單和工FileSN8CStudio所有相關(guān)文件的菜單項(xiàng)。為了和其他應(yīng)用程序菜單一致,此菜Figure4-1FileFigure4-2File工具欄可以通過(guò)該選項(xiàng)下拉菜單項(xiàng)新建Project/Workspace或者資源文件。單擊File->New->NewProject/WorkspaceProjectWorkspace的類型:SONiXTECHNOLOGYCO.,SN8CFigure4-3(a):SN8CFigure4-3(a):NewProject/Workspace對(duì)話FileNew->NewFileSONiXTECHNOLOGYCO.,SN8CFigure4-3(b):NewFileSN8CFigure4-3(b):NewFile對(duì)話框Figure4-4Open對(duì)話框SONiXTECHNOLOGYCO.,SN8C打開(kāi)工作Figure4-5Openworkspace對(duì)話框保SN8C打開(kāi)工作Figure4-5Openworkspace對(duì)話框保存工作關(guān)閉工作另存為全部保SONiXTECHNOLOGYCO.,SN8C打印設(shè)打印預(yù)最近使SN8C打印設(shè)打印預(yù)最近使用的文件最近使用的工作區(qū)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個(gè)下拉菜單,他們的功能分別如相應(yīng)菜單項(xiàng)所列出的命令所示。把狀態(tài)欄工作區(qū)Figure4-8(b)Debug菜單項(xiàng)下拉菜單SONiXTECHNOLOGYCO.,SN8C4.4Build菜單和工Build菜單提供創(chuàng)建可執(zhí)行文件等所需的命令,BuildFigure4- Build工具欄Figure4-10SN8C4.4Build菜單和工Build菜單提供創(chuàng)建可執(zhí)行文件等所需的命令,BuildFigure4- Build工具欄Figure4-10Build菜單編譯當(dāng)前文件創(chuàng)建工重建工全部創(chuàng)全部重新創(chuàng)建清除全部工程SONiXTECHNOLOGYCO.,SN8CSN8CSONiXTECHNOLOGYCO.,SN8CStudioUser4.5Debug菜單和工Figure4-11DebugSN8CStudioUser4.5Debug菜單和工Figure4-11Debug菜單Figure4-12Debug工具欄調(diào)試(BeginDebug退出調(diào)試(ExitSONiXTECHNOLOGYCO.,SN8CStudioUser運(yùn)行(Run重啟(Restart, 暫停(Pause單步SN8CStudioUser運(yùn)行(Run重啟(Restart, 暫停(Pause單步執(zhí)行(Stepinto單步跳過(guò)(StepOverCALL單步跳出(StepOut的所有指令,并且PC指向CALL指令后面的下一條指令。運(yùn)行到光標(biāo)處(RuntoCursor,Ctrl+自動(dòng)單步執(zhí)行(Animatestep自動(dòng)單步跳過(guò)(Animatestep停止自動(dòng)運(yùn)行( 添加斷點(diǎn)(ToggleSONiXTECHNOLOGYCO.,SN8C斷點(diǎn)(breakpoints,SN8C斷點(diǎn)(breakpoints, Figure4-13設(shè)置斷點(diǎn)對(duì)話框MemoryFigure4-14RAM空間設(shè)置對(duì)話框SONiXTECHNOLOGYCO.,SN8CStartAddressSN8CStartAddress:設(shè)置要處理的RAM段起始地址。Length:輸入所要處理的RAM地址段長(zhǎng)度。FillfromFileBINRAMSavetoFileRAMBINFillbyDataRAMSONiXTECHNOLOGYCO.,SN8C4.6Tool菜單用戶設(shè)SN8C4.6Tool菜單用戶設(shè)參數(shù)選Figure4-15Tool菜單SONiXTECHNOLOGYCO.,SN8C4.7WindowSN8C4.7Window菜單SONiXTECHNOLOGYCO.,SN8C4.8HelpSN8C4.8Help菜單SONiXTECHNOLOGYCO.,SN8CStudioUser5.界面預(yù)覽SN8CSN8CStudioUser5.界面預(yù)覽SN8CStudioSN8CStudio時(shí),窗口中心的工4-1SN8CStudioFigure5–1SN8C打開(kāi)后的界面4-2WindowsSN8CStudio窗SONiXTECHNOLOGYCO.,SN8CFigure5SN8CFigure5–2SN8C工程窗口界面SONiXTECHNOLOGYCO.,SN8CStudioUser5.1工作區(qū)窗口上角的closex”)按鈕SN8CStudioUser5.1工作區(qū)窗口上角的closex”)按鈕也可以通過(guò)取消視圖菜單中對(duì)workspace的選中來(lái)實(shí)現(xiàn)。選擇視圖菜單中的workspace顯示工程視窗。5.1.1ProjectFigure5-3工程視圖Figure5-4工程視圖彈出菜設(shè)置工作工程刪除工保存工SONiXTECHNOLOGYCO.,SN8CStudioUser5.1.2FileFigureSN8CStudioUser5.1.2FileFigure5-5文件視圖窗口1.工作區(qū)中彈出菜Figure5-6工作區(qū)彈添加工SONiXTECHNOLOGYCO.,SN8C2.工程項(xiàng)彈出菜Figure5-7工程項(xiàng)彈出建立工作工程SN8C2.工程項(xiàng)彈出菜Figure5-7工程項(xiàng)彈出建立工作工程新建文件添加文刪除工保存工SONiXTECHNOLOGYCO.,SN8C重SN8C重排文SONiXTECHNOLOGYCO.,SN8CStudioUser5.2輸出窗口SN8CStudioUser5.2輸出窗口Figure5-8輸出窗口5.2.1Build消息版本號(hào),和產(chǎn)生的文件名稱和位置,詳細(xì)閱讀這些信息對(duì)Debug會(huì)有很大的幫助。Figure5-9Build消息窗5.2.2調(diào)試消息5.2.3在文件中查找SONiXTECHNOLOGYCO.,SN8CFigure5-10FindInFiles消息窗5.2.4錯(cuò)誤/警告信息窗口SN8CFigure5-10FindInFiles消息窗5.2.4錯(cuò)誤/警告信息窗口SN8CStudio中將所有的錯(cuò)誤和警告信息單獨(dú)提出并顯示在錯(cuò)誤/警告信息窗口中。您可以方便快捷5.2.5消息窗口彈出Figure5-11消息窗口彈出菜SONiXTECHNOLOGYCO.,SN8CStudioUser另存為5.3調(diào)試視圖SN8CStudioUser另存為5.3調(diào)試視圖(Debug試模式下成功建立應(yīng)用程序后,PC指針將指向源程序的第一行執(zhí)行指令。此時(shí),SN8CStudio已經(jīng)Figure5-12調(diào)試窗口SONiXTECHNOLOGYCO.,SN8CStudioUser5.3.1監(jiān)視窗口(Watch3個(gè)部分來(lái)放置不同的標(biāo)簽,有足夠的置、地址以及值都將被顯示出來(lái)。通過(guò)彈出菜單中的Radix選項(xiàng)可以更改數(shù)據(jù)的顯示進(jìn)制數(shù)等。SN8CStudioUser5.3.1監(jiān)視窗口(Watch3個(gè)部分來(lái)放置不同的標(biāo)簽,有足夠的置、地址以及值都將被顯示出來(lái)。通過(guò)彈出菜單中的Radix選項(xiàng)可以更改數(shù)據(jù)的顯示進(jìn)制數(shù)等。Figure5-13監(jiān)視窗口Figure5-14彈出進(jìn)制數(shù)SONiXTECHNOLOGYCO.,SN8CStudioUser5.3.2變量窗口(Variable變量窗口將自動(dòng)顯示當(dāng)前正在使用的局部變量的值。這在C源程序中是十分有意義的。顯示進(jìn)制方Figure5-15SN8CStudioUser5.3.2變量窗口(Variable變量窗口將自動(dòng)顯示當(dāng)前正在使用的局部變量的值。這在C源程序中是十分有意義的。顯示進(jìn)制方Figure5-15變量窗Figure5-16彈出菜十六進(jìn)十進(jìn)制二進(jìn)制5.3.3內(nèi)存跟蹤顯示窗口(Memory內(nèi)存窗中顯示程序數(shù)據(jù)存儲(chǔ)器空間的內(nèi)容。調(diào)試時(shí)可以直接修改RAM窗口的數(shù)據(jù),所有數(shù)值以十SONiXTECHNOLOGYCO.,SN8CFigure5- 內(nèi)存跟蹤顯示Figure5-SN8CFigure5- 內(nèi)存跟蹤顯示Figure5-18彈出菜ASCII5.3.4寄存器顯示窗口(RegisterSONiXTECHNOLOGYCO.,SN8CStudioUserFigure5- 寄存窗口SN8CStudioUserFigure5- 寄存窗口Figure5-彈出進(jìn)制數(shù)SONiXTECHNOLOGYCO.,SN8CStudioUser6.工程設(shè)計(jì)SN8CStudioSN8CStudioUser6.工程設(shè)計(jì)SN8CStudio6.1工程管理器(Project6.1.1建立一個(gè)新項(xiàng)第一步Figure6-1建立一個(gè)新工SONiXTECHNOLOGYCO.,SN8CStudioUser第二步第三步第四步SN8CStudioUser第二步第三步第四步Figure6-2創(chuàng)建一個(gè)新項(xiàng)目SONiXTECHNOLOGYCO.,SN8CStudioUserSN8CStudioUser6.1.2OpenandCloseaCloseSONiXTECHNOLOGYCO.,SN8CStudioUser6.2管理源文件New,Edit分別對(duì)已經(jīng)打開(kāi)的工程源程序文件進(jìn)行添加和刪除。源文件按次序顯SN8CStudioUser6.2管理源文件New,Edit分別對(duì)已經(jīng)打開(kāi)的工程源程序文件進(jìn)行添加和刪除。源文件按次序顯6.2.1創(chuàng)建一個(gè)新的源Figure6- 創(chuàng)建新文件匯編文件(Assemb SONiXTECHNOLOGYCO.,SN8CStudioUserC源文件(CSourceC頭文件(HeaderSN8CStudioUserC源文件(CSourceC頭文件(Header文本文件(Text二進(jìn)制文件(BinaryOK按鈕將文件添加到工程。當(dāng)所選源文件成功被添加,其文件名將顯示在工程文件的列6.2.2添加源文件用戶也可以右擊工作區(qū)窗口的活動(dòng)工程選擇‘AddFiles’將已經(jīng)存在的文件添加到選中的工程中。新6.2.3刪除原文件Studio鏈接文工具定義文件SONiXTECHNOLOGYCO.,SN8C6.3設(shè)置工程6.3.1常規(guī)設(shè)Figure6- 常SN8C6.3設(shè)置工程6.3.1常規(guī)設(shè)Figure6- 常規(guī)設(shè)置基本設(shè)常規(guī)Build記錄設(shè)調(diào)試窗SONiXTECHNOLOGYCO.,SN8C高級(jí)設(shè)SN8C高級(jí)設(shè)SONiXTECHNOLOGYCO.,SN8CStudioUser6.3.2芯片設(shè)Description窗口顯示被選中芯片的描述。ICFigureSN8CStudioUser6.3.2芯片設(shè)Description窗口顯示被選中芯片的描述。ICFigure6-芯片6.3.3目錄設(shè)標(biāo)準(zhǔn)庫(kù)設(shè)置標(biāo)準(zhǔn)(系統(tǒng)定義)INI文件中定義的版本附加路徑和庫(kù)SONiXTECHNOLOGYCO.,SN8CFigure6-目錄SN8CFigure6-目錄6.3.4匯編器設(shè)Figure6-7匯編器設(shè)置SONiXTECHNOLOGYCO.,SN8CStudioUser列表文6.3.5連接設(shè)SN8CStudioUser列表文6.3.5連接設(shè)MAP文件map文件并顯示其準(zhǔn)確路徑。SN8CStudiomap文件定義與工程相同的擴(kuò)展名.mapfile。每個(gè)輸出文件的默認(rèn)文件名與源文件的相同,但文件擴(kuò)展名不同。Figure6-8連接設(shè)置SONiXTECHNOLOGYCO.,SN8C6.3.6CodeOptionSN8C6.3.6CodeOption設(shè)置Figure6- CodeOption設(shè)置選擇“禁用”。文本列表框內(nèi)羅列了包括程序加密、CPU頻率、高速時(shí)鐘、看門(mén)狗、復(fù)位引腳和雜訊CodeOption選項(xiàng)(注:依不同芯片會(huì)顯示不同的選項(xiàng))。單擊相應(yīng)的選SONiXTECHNOLOGYCO.,SN8CStudioUser6.4編譯項(xiàng)目6.4.1SN8CStudioUser6.4編譯項(xiàng)目6.4.1編譯器檢測(cè)并列出當(dāng)前被編譯文件中的錯(cuò)誤和警告,此錯(cuò)誤和警告信息顯示在輸出窗口。雙擊那些Figure6-10編譯過(guò)程描述6.4.2鏈接SONiXTECHNOLOGYCO.,SN8CStudioUser6.4.3SN8CStudioUser6.4.3MakeMake,即編譯器可以生成一個(gè)新的Figure6-11文件被修改的提SONiXTECHNOLOGYCO.,SN8CStudioUser6.5創(chuàng)建(Build)SN8CStudioUser6.5創(chuàng)建(Build)項(xiàng)SONiXTECHNOLOGYCO.,SN8CStudioUser6.6調(diào)試項(xiàng)目文件描述ROM中字段和標(biāo)號(hào)的位置。輸出文件:用SN8CStudioUser6.6調(diào)試項(xiàng)目文件描述ROM中字段和標(biāo)號(hào)的位置。輸出文件:用于調(diào)試二進(jìn)制文件原始的可執(zhí)行二進(jìn)制文件Map文件:由鏈接生成,描述符號(hào)地址和字段地址列表文件由匯編程序生成開(kāi)始調(diào)程序跟設(shè)置斷IO口的信息。設(shè)置斷點(diǎn)有兩種方法:一種在文本編輯器里直在一條指令處設(shè)置有效斷點(diǎn),仿真器或ICE將在執(zhí)行此條指令之前停止運(yùn)行。也就是說(shuō),這條指令退出調(diào)完成程序調(diào)試后,單擊‘ExitDebug’SONiXTECHNOLOGYCO.,SN8CStudioUser第二部開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)工具SN8C7.1.1CSN8CStudioUser第二部開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)工具SN8C7.1.1C源程序的main源程序中可以有預(yù)處理命令(include命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源{}括起來(lái)的部分,通常表示了程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語(yǔ)句的第一個(gè)字母對(duì)齊,7.1.2C語(yǔ)言的字字符是組成語(yǔ)言的最基本的元素。C語(yǔ)言字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和特殊字符組成。在字0~910個(gè)7.1.3C語(yǔ)言詞匯CSONiXTECHNOLOGYCO.,SN8CStudioUser 標(biāo)識(shí)符由用戶自定義。C規(guī)定,標(biāo)識(shí)符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線()組成的字符串,并C不SN8CStudioUser 標(biāo)識(shí)符由用戶自定義。C規(guī)定,標(biāo)識(shí)符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線()組成的字符串,并C不限制標(biāo)識(shí)符的長(zhǎng)度,但它受各種版本的C語(yǔ)言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器在標(biāo)識(shí)符中,大小寫(xiě)是有區(qū)別的。例如BOOKbook2.關(guān)鍵字鍵字相同。C語(yǔ)言的關(guān)鍵字分為以下幾類:預(yù)處理命令字:用于表示一個(gè)預(yù)處理命令。如前面各例中用到的include。7-3.運(yùn)算C語(yǔ)言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算SONiXTECHNOLOGYCO.,RelatedInterruptMemoryMemory#progmaBank3ss*T出現(xiàn)非法字符-3x以減號(hào)開(kāi)bowy-1出現(xiàn)非法字符-(減號(hào)a,x,3x,BOOKSN8CStudioUser4.分隔符SN8CStudioUser4.分隔符inta;inta;Cinta當(dāng)成一個(gè)標(biāo)識(shí)符處理,其5.常量C6.注釋符塊注釋:C語(yǔ)言的注釋符是以“/*”開(kāi)頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的即為注釋。程序編譯SONiXTECHNOLOGYCO.,SN8CStudioUser7.2數(shù)據(jù)類型SN8CC8-bit單片機(jī),所以必然會(huì)考慮數(shù)據(jù)類型的定義方法和長(zhǎng)度。在這些方面,SN8C有它自己的專有的定義特征和數(shù)據(jù)長(zhǎng)度,在使用時(shí)一定要7-2數(shù)據(jù)類型長(zhǎng)度定義7.2.1常量與變量SN8CStudioUser7.2數(shù)據(jù)類型SN8CC8-bit單片機(jī),所以必然會(huì)考慮數(shù)據(jù)類型的定義方法和長(zhǎng)度。在這些方面,SN8C有它自己的專有的定義特征和數(shù)據(jù)長(zhǎng)度,在使用時(shí)一定要7-2數(shù)據(jù)類型長(zhǎng)度定義7.2.1常量與變量Ram非常小,有時(shí)會(huì)顯得很緊張。所以系統(tǒng)為了節(jié)省空間會(huì)將一些表格等放在系統(tǒng)的ROM中。而我們直接命名的常量,則由編譯器自動(dòng)將其替換為所需要的值,這些工SONiXTECHNOLOGYCO., #224;t0interupttime ;3cooksatDataRangeoftheSignedchar(short、1Unsignedchar(short、1Signed2Unsigned2float421SN8CStudioUserEQU關(guān)鍵字,在編譯過(guò)程中,程序里但凡出現(xiàn)了EQU前面的字段都會(huì)被其后面的值直接代替,因此,很方便地減輕SN8CSN8CStudioUserEQU關(guān)鍵字,在編譯過(guò)程中,程序里但凡出現(xiàn)了EQU前面的字段都會(huì)被其后面的值直接代替,因此,很方便地減輕SN8CDWword,它是存放在.code段里面的,通過(guò)表頭地SN8C在講到表的處理之前,必須先提一提變量定義關(guān)鍵字的問(wèn)題。SN8C定義一個(gè)變量時(shí),可以指明它所放置的地方(RAMROM),分別用關(guān)鍵字RAM和ROM來(lái)指定存放的地點(diǎn),如:ROMSONiXTECHNOLOGYCO.,unsignedlongROM {UnsignedintRAM //將變量存放在RAMStorethevariablesinRAMunsignedintUnsignedintROMromVariable; //將變量ROMStorethevariablesinROMROMunsignedintromVariable2; dw0000hdw ;A-dw dw dw dw dw dw //3cooksatSN8CStudioUser這是一個(gè)與上面的匯編表完全相同的表,我們將它存放在ROM中,通過(guò)調(diào)用數(shù)組來(lái)查表,這在temp1、temp2、temp3、temp4、led_dpSN8CStudioUser這是一個(gè)與上面的匯編表完全相同的表,我們將它存放在ROM中,通過(guò)調(diào)用數(shù)組來(lái)查表,這在temp1、temp2、temp3、temp4、led_dp、step6ByteRAM空間,那么程序當(dāng)中就可以通過(guò)變量名對(duì)該變量的空間進(jìn)行讀寫(xiě)。當(dāng)然在匯編中你也可以用一個(gè)變量名來(lái)訪問(wèn)兩個(gè)或多個(gè)RAM空間,這類似于查表的操作,其定義如下:job_modejob_mode和job_mode+1來(lái)讀寫(xiě)定義的兩個(gè)存儲(chǔ)單元,以此類推power_modeRAM空間定義的變量可以通過(guò)相同的方法來(lái)定義。可見(jiàn),SN8AssemblerDS關(guān)鍵字來(lái)申請(qǐng)需要的變量空間,空間一旦被申請(qǐng),就在整個(gè)程序流RAM本身就很少的單片機(jī)而言,不SN8CCompiler是在不同的位置定義就行了,這與標(biāo)準(zhǔn)C所規(guī)定的方法是一樣的,后面再詳細(xì)討論。...;SN8CSONiXTECHNOLOGYCO., ;currentSN8CStudioUserSN8CStudioUser8-bitByteC這樣的高級(jí)語(yǔ)言,不管使用何種數(shù)據(jù)類型,雖然某一行程序從字面上看,其操作十分簡(jiǎn)單,然而,實(shí)際上系統(tǒng)的C編譯器需要用一系列機(jī)器指令對(duì)其復(fù)雜的變量類型、數(shù)據(jù)類型的進(jìn)行處理。相同的一行語(yǔ)句,變量選擇的類型不同,處理時(shí)就會(huì)產(chǎn)生很大的差別,產(chǎn)生的代碼更是差別很多。特別是當(dāng)使用浮點(diǎn)變量時(shí),將明顯地贈(zèng)加運(yùn)算時(shí)間和程序的長(zhǎng)度。當(dāng)程序必須保證運(yùn)算精度時(shí),C編譯器將調(diào)用相應(yīng)的C程序時(shí)往往會(huì)使用大量的、不C編譯器相應(yīng)地增加所調(diào)用的庫(kù)函數(shù)以處理大量增加的變量類型,并最而對(duì)于有符號(hào)與無(wú)符號(hào)的變量類型。在編寫(xiě)程序時(shí),如果使用signed和unsigned兩種數(shù)據(jù)類型,那么SONiXTECHNOLOGYCO.,unsignedinttemp1;unsignedinttemp2;unsignedinttemp3;unsignedinttemp4;unsignedintunsignedintstep; //Currentstatusunsignedlongjob_mode;unsignedlongfloatinttemp1_1; //Signedinttypelongtemp2_2;SN8CStudioUseruchar代替unsignedcharuintunsignedintSN8CStudioUseruchar代替unsignedcharuintunsignedint數(shù)據(jù)的存儲(chǔ)類型與存儲(chǔ)結(jié)構(gòu)在前面分析查表類型數(shù)據(jù)定義的時(shí)候已經(jīng)提到了數(shù)據(jù)在單片機(jī)里的存儲(chǔ),會(huì)分為ROMRAM兩會(huì)分別用關(guān)鍵字.code和.data來(lái)預(yù)先聲明。128ByteUser80H~FFHisforsystemMoreUser7-1、RAMSN8P系列單片機(jī)的通用RAM區(qū)的大小依不同的芯片而不同,但都是按BANK來(lái)劃分,每一個(gè)BANK00H~FFHBank080H~FFH的空間都是留給系統(tǒng)專用的系統(tǒng)SONiXTECHNOLOGYCO.,GeneralSystem#defineuintunsignedintPleasechoosethedatatypeswhichneedlessmemoryiftheycanaccomplishthefunctionsallright.ThiswillbringusprofitwhenweusetheRAMmemoryandimprovetheefficiencyofcodegenerating.Theunsignedtypesarepreferred,andthiscanavoidsomeerrors,asthedatainsidethechipishandledasunsignedtype.Attention!Clanguageiscase-sensitive,andarulefornamingthevariablesshouldbefollowedatthebeginning.Humpnotationisagoodchoice,butassemblerprogrammersmaynotbeaccustomedtoitatthebeginning.SN8CStudioUserRAM區(qū)的數(shù)據(jù)結(jié)構(gòu),在定義一個(gè)變量時(shí),我們前面已經(jīng)提到可以用RAM和ROMRAM當(dāng)中,因而RAMCRAM里了,缺省項(xiàng)給我們帶來(lái)了很RAM存儲(chǔ)區(qū)內(nèi),80H~FFHSN8CStudioUserRAM區(qū)的數(shù)據(jù)結(jié)構(gòu),在定義一個(gè)變量時(shí),我們前面已經(jīng)提到可以用RAM和ROMRAM當(dāng)中,因而RAMCRAM里了,缺省項(xiàng)給我們帶來(lái)了很RAM存儲(chǔ)區(qū)內(nèi),80H~FFH別對(duì)應(yīng)了芯片內(nèi)部的資源,SN8C針對(duì)這部分的系統(tǒng)資源,對(duì)這些寄存器進(jìn)行了定義,其定義的形#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 基本運(yùn)算符和表達(dá)式CC語(yǔ)言功能十分完善。這也是C語(yǔ)言的主要特點(diǎn)之一。C算量參與運(yùn)算的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定,還要受運(yùn)算符結(jié)合性的制約,以便SN8CStudioUser 基本運(yùn)算符和表達(dá)式CC語(yǔ)言功能十分完善。這也是C語(yǔ)言的主要特點(diǎn)之一。C算量參與運(yùn)算的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定,還要受運(yùn)算符結(jié)合性的制約,以便因此也增加了C語(yǔ)言的復(fù)雜性。 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 關(guān)系運(yùn)算符與關(guān)系表達(dá)式、大于等于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,根據(jù)k==j0==i+5,也不成立,故表達(dá)式。 輯運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算符C語(yǔ)言中提供了三種邏輯運(yùn)算符&&與運(yùn)算||或運(yùn)算 !非運(yùn)算與運(yùn)算符&&和或運(yùn)算符||均為雙目運(yùn)算符。具有左結(jié)合性。非運(yùn)算符!為單目運(yùn)算符,具有右結(jié)合性。邏輯運(yùn)算的值” 運(yùn)算&&參與運(yùn)算的兩個(gè)量都為真時(shí),結(jié)果才為真,否則為假。例如,5>0&&4>2,5>0為真,4>2也為真,相與的結(jié)果也為真。SONiXTECHNOLOGYCO., (x+r)*8- (++i)-(j++)+(k--SN8CStudioUser運(yùn)算||5>0||5>8,5>0SN8CStudioUser運(yùn)算||5>0||5>8,5>0還是為“假”時(shí),以“0”代表“假”,以非“0”的數(shù)值作為“真”53均為非“0”5&&3的值為“真”,即為1。a&&b&&c邏輯表達(dá)式的值是式中各種邏輯運(yùn)算的最后值,以“1”和“0”7.3.4位操作運(yùn)算參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右(>>)六種7.3.5賦值運(yùn)算符與賦值表賦值運(yùn)算符用于賦值運(yùn)算,分為簡(jiǎn)單賦值(=)、復(fù)合算術(shù)賦值*=和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類共十一種。簡(jiǎn)單賦值運(yùn)算符和表達(dá)式簡(jiǎn)單賦值運(yùn)算符記為“=”。由=可理解為C中,把“=”定義為運(yùn)算符,從而5a,8ba,bxx13。因此如x=8;a=b=c=5;都是賦值語(yǔ)句,在前面各例中我們已大量使用過(guò)了。SONiXTECHNOLOGYCO.,SN8CStudioUser型賦予整型,舍去小數(shù)部分。前面的例2.9(小數(shù)部分的值為0)量的低八位中,高八位為0。SN8CStudioUser型賦予整型,舍去小數(shù)部分。前面的例2.9(小數(shù)部分的值為0)量的低八位中,高八位為0。復(fù)合賦值符及表達(dá)式在賦值符“=”+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:變量雙目運(yùn)算符=表達(dá)式它等效于變量=變量運(yùn)算符表達(dá)式例如:7.3.6條件運(yùn)算符12maxa>b)?a:babamax,否則把b賦予max。條件運(yùn)算符的運(yùn)算優(yōu)先級(jí)低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,但高于賦值符。因此maxabab可以去掉括號(hào)而寫(xiě)為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逗號(hào)運(yùn)算符用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)達(dá)式,稱為逗號(hào)表達(dá)式。1SN8CStudioUser 7.3.7逗號(hào)運(yùn)算符用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)達(dá)式,稱為逗號(hào)表達(dá)式。122的值作本例中,y2的值,x是第一個(gè)表達(dá)式的值。對(duì)于逗號(hào)表121,(表2,…表達(dá)式n整個(gè)逗號(hào)表達(dá)式的值等于表達(dá)式n的值。7.3.8指針運(yùn)算符用于取內(nèi)容(*)和取地址(&)7.3.9求字節(jié)數(shù)運(yùn)算用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)7.3.10特殊有括號(hào)(),下標(biāo)[],成員(→,.)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優(yōu)先級(jí)和結(jié)合性規(guī)定的結(jié)合方向處理。C語(yǔ)言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)SN8CStudioUser7.3.11優(yōu)先級(jí)和結(jié)合性規(guī)定的結(jié)合方向處理。C語(yǔ)言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右即先左后右。如有表達(dá)式x-y+z則y應(yīng)先與號(hào)結(jié)左的結(jié)合方向稱為“右結(jié)合性”x=y=z,由于“=”的右結(jié)C7-SONiXTECHNOLOGYCO.,()[]->leftto!~++--(類型)+-*rightto*/leftto+leftto<<leftto >leftto==leftto&leftto^leftto|lefttolefttorighttorightto=+=-=*=/=%=&=|=<<=lefttoSN8CStudioUser7.4程序流程7.4.1順序結(jié)構(gòu)順序結(jié)構(gòu)是程序最基本的流程,其語(yǔ)句順序執(zhí)行,SN8CStudioUser7.4程序流程7.4.1順序結(jié)構(gòu)順序結(jié)構(gòu)是程序最基本的流程,其語(yǔ)句順序執(zhí)行,PCCPU內(nèi)部處理指令的初始圖7-2SequentialProgramFlowing性和時(shí)間性,如圖中的A操作的發(fā)展方向只有一個(gè),即接下來(lái)就是B操作,中間既沒(méi)有反復(fù)也沒(méi)有曲折變化,B一定發(fā)生在A的后面。C語(yǔ)言的實(shí)現(xiàn):(微波爐開(kāi)機(jī)初始化SONiXTECHNOLOGYCO.,key_bibi_f=1; //Beeponcewhenelectrifiedmenu_disp_h=0xf0U; //Display“0:00”whenelectrifiedmenu_disp_l=0;disp5=BA操作SN8CStudioUserSN8Assembler7.4.2選擇結(jié)構(gòu)ifSN8CStudioUserSN8Assembler7.4.2選擇結(jié)構(gòu)if語(yǔ)句if的if語(yǔ)句有三種基本形式。1.if(表達(dá)式)2.if-elseif(表達(dá)式12。其過(guò)程可表示為下圖SONiXTECHNOLOGYCO., ;Beeponcewhen ;Display“0:00”whenelectrified SN8C圖7-3ConditionalProgramFlowingC語(yǔ)言實(shí)現(xiàn):(BCDSN8C圖7-3ConditionalProgramFlowingC語(yǔ)言實(shí)現(xiàn):(BCD碼調(diào)整SN8SONiXTECHNOLOGYCO., ;If(result_buf>{result_buf=input+}{result_buf=}PB操A操SN8CStudioUserb0bts為標(biāo)志為來(lái)判斷,比如用SUB指令將其轉(zhuǎn)化成FCFZ標(biāo)志位進(jìn)行判斷ASN8CStudioUserb0bts為標(biāo)志為來(lái)判斷,比如用SUB指令將其轉(zhuǎn)化成FCFZ標(biāo)志位進(jìn)行判斷A行多分支結(jié)構(gòu)流程ifif-else-if語(yǔ)句,其一n。圖7-4:SerialmultipliedbranchesflowingSONiXTECHNOLOGYCO.,YNIsP1Y IsP2YNIsPn elseif(condition2)statement2;elseif(condition3)statement3;…elseif(conditionm)statementm;statementSN8CCif,elseSN8CCif,elseif問(wèn):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)…;中表達(dá)式的值永合法的。又如,有程序段:if在if語(yǔ)句的三種形式中,所有的語(yǔ)句應(yīng)為單個(gè)語(yǔ)句,如果要想在滿足條件時(shí)執(zhí)行一組(多個(gè))語(yǔ)句,則必須把這一組語(yǔ)句用{}括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。但要注意的是在}之后不能再加分號(hào)。if語(yǔ)句的嵌ififififif語(yǔ)句意if和else的配對(duì)問(wèn)題。例如:SONiXTECHNOLOGYCO.,}}jmpSN8CStudioUserIsit:SN8CStudioUserIsit:if(condition為了避免這種二義性,C語(yǔ)言規(guī)定,elseif配對(duì),因此對(duì)上述例子應(yīng)按前一種并行多分支結(jié)構(gòu)流程Cswitch圖7-5ParallelmultipliedbranchesflowingSONiXTECHNOLOGYCO.,caseconstantexpression1:statement1;caseconstantexpression2:…caseconstantexpressionn:statementP= P= P= P= SN8CStudioUser如casedefaultSN8CStudioUser如casedefaultcasecase后,允許有多個(gè)語(yǔ)句,可以不用{}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循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點(diǎn)是,在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到C語(yǔ)言提供了多種7-“While”loopflowingSN8CStudioUser7.4.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點(diǎn)是,在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到C語(yǔ)言提供了多種7-“While”loopflowingThewhilewhilewhile(表達(dá)式)語(yǔ)句SONiXTECHNOLOGYCO.,tempbuf=0;while(tempbuf==15){++tempbuf;}//DelayNIsPYA SN8CStudioUserWhilewhilewhile語(yǔ)句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只要表達(dá)式的值為真(0)即可繼續(xù)循環(huán)。循環(huán)體如包括有一個(gè)以上的語(yǔ)句,則必須用SN8CStudioUserWhilewhilewhile語(yǔ)句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只要表達(dá)式的值為真(0)即可繼續(xù)循環(huán)。循環(huán)體如包括有一個(gè)以上的語(yǔ)句,則必須用{}括起來(lái),組成復(fù)合語(yǔ)句。whilea=5沒(méi)有其它中止循環(huán)的手段,因此該循環(huán)將無(wú)休止地進(jìn)行下去,形成死循環(huán)。4.whilewhiledo-while語(yǔ)句do-whiledo-while(0)則繼續(xù)循環(huán),SONiXTECHNOLOGYCO.,main(){intwhile(a=5){printf("%d} ; SN8CN7-“Do…while”loopflowingDo…whileCDo…whileSN8CN7-“Do…while”loopflowingDo…whileCDo…whiledo-whileif語(yǔ)句,while而在do-whiledo-whilewhiledowhile之間的循環(huán)體由多個(gè)語(yǔ)句組成時(shí),也必須用{}do-whilewhiledo-whilewhiledo-whiledo-while至少要執(zhí)行一次循環(huán)體。而while是先判斷后執(zhí)行,如果條件不滿足,則一次循環(huán)體語(yǔ)句也不執(zhí)行。while語(yǔ)句和do-whileSONiXTECHNOLOGYCO., ;Selectbank ;Set@YZaddressfrom ;Clear@YZ ;z=z-1,skipnextifz=0.jmpClrRAM10 mova,#00Hunsignedint*pyz=(unsignedint*)0x7f;*pyz --YIsPASN8CStudioUserfor語(yǔ)句for語(yǔ)句是C語(yǔ)言所提供的功能更SN8CStudioUserfor語(yǔ)句for語(yǔ)句是C語(yǔ)言所提供的功能更強(qiáng),使用更廣泛的一種循環(huán)語(yǔ)句。其一般形式為for(init-statement;condition;expression)表達(dá)式1 通常用來(lái)給循環(huán)變量賦初值,一般是賦值表達(dá)式。也允許在for語(yǔ)句外給循環(huán)變量表達(dá)式 表達(dá)式 一般形式中的“語(yǔ)句”即為循環(huán)體語(yǔ)句。for12的值,若值為真(0)表達(dá)式2和表達(dá)式,3則可能計(jì)算多次。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。(1for語(yǔ)句中的各表達(dá)式都可省略,但分號(hào)間隔符不能少。如:for(;表達(dá)式;表達(dá)式)省去了表達(dá)式1。for(表達(dá)式;;表達(dá)式)省去了表達(dá)式2。for;;省去了全部表達(dá)式。(2在循環(huán)變量已賦初值時(shí),可省去表達(dá)式1。如省去表達(dá)式2或表達(dá)3則將造成無(wú)限循環(huán),這(3).循環(huán)體可以是空語(yǔ)句 forwhile,do-whileSONiXTECHNOLOGYCO.,(1)…}(2)…SN8CStudioUser常流向,可以使用轉(zhuǎn)移語(yǔ)句。在C語(yǔ)言中提供了4種轉(zhuǎn)移語(yǔ)句:goto,break,continueandreturn SN
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 32000-2024美麗宜居鄉(xiāng)村建設(shè)指南
- 燈旗桿使用合同范例
- 天津?yàn)I海職業(yè)學(xué)院《經(jīng)濟(jì)法1》2023-2024學(xué)年第一學(xué)期期末試卷
- 常州市勞動(dòng)合同范例
- 房屋抵押合同范例
- 真石漆專用砂漿施工方案
- 借用證件合同范例
- 水箱修理轉(zhuǎn)讓合同范例
- 烘培行業(yè)入股合同范例
- 地膠維修合同范例
- JJF(陜) 085-2022 全自動(dòng)容量稀釋配標(biāo)儀校準(zhǔn)規(guī)范
- 粉末銷(xiāo)售合同范例
- 【MOOC】油氣地質(zhì)與勘探-中國(guó)石油大學(xué)(華東) 中國(guó)大學(xué)慕課MOOC答案
- 山東省濟(jì)南市2023-2024學(xué)年高一上學(xué)期1月期末考試 物理 含答案
- 管理咨詢服務(wù)實(shí)施方案
- 成人重癥患者人工氣道濕化護(hù)理專家共識(shí) 解讀
- 機(jī)器學(xué)習(xí)(山東聯(lián)盟)智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東財(cái)經(jīng)大學(xué)
- 科研設(shè)計(jì)及研究生論文撰寫(xiě)智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江中醫(yī)藥大學(xué)
- 商業(yè)倫理與企業(yè)社會(huì)責(zé)任(山東財(cái)經(jīng)大學(xué))智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東財(cái)經(jīng)大學(xué)
- 2024年輔警招聘考試試題庫(kù)及完整答案(全優(yōu))
- 2024年江蘇省普通高中學(xué)業(yè)水平測(cè)試小高考生物、地理、歷史、政治試卷及答案(綜合版)
評(píng)論
0/150
提交評(píng)論