資料內(nèi)容詳解_第1頁
資料內(nèi)容詳解_第2頁
資料內(nèi)容詳解_第3頁
資料內(nèi)容詳解_第4頁
資料內(nèi)容詳解_第5頁
已閱讀5頁,還剩260頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

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 第一部分集成開發(fā)環(huán) 1.簡 系統(tǒng)概 系統(tǒng)配置需 安 硬件安 軟件安 應(yīng)用實 創(chuàng)建一個新工作 創(chuàng)建一個新項 創(chuàng)建一個新文 編輯代 編譯鏈接(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)試消息窗 在文件中查找窗 錯誤/警告信息窗 消息窗口彈出菜 調(diào)試視圖(DEBUG 監(jiān)視窗口(WatchWindow 變量窗口(VariableWindow 內(nèi)存跟蹤顯示窗口(MemoryWindo 5.3.4寄存器顯示窗口(RegisterWindow 6.工程設(shè) 工程管理器(PROJECT 建立一個新項 OpenandClosea 管理源文 創(chuàng)建一個新的源文 添加源文 6.2.3刪除原文 6.3設(shè)置工 常規(guī)設(shè) 芯片設(shè) 目錄設(shè) 匯編器設(shè) 連接設(shè) CodeOption設(shè) 編譯項 6.4.2鏈 創(chuàng)建(BUILD)項 調(diào)試項 第二部分開發(fā)語言和開發(fā)工 7.SN8C C源程序的結(jié)構(gòu)特 79C語言的字符 C語言詞 數(shù)據(jù)類 常量與變 數(shù)據(jù)的存儲類型與存儲結(jié) Bank 基本運算符和表達 算術(shù)運算符與算術(shù)表達 89關(guān)系運算符與關(guān)系表達 89輯運算符與邏輯表達 位操作運算 賦值運算符與賦值表達 SONiXTECHNOLOGYCO.,SN8CStudioUser條件運算 SN8CStudioUser條件運算 逗號運算 指針運算 求字節(jié)數(shù)運算 特殊運算 優(yōu)先級和結(jié)合 程序流程控 順序結(jié) 選擇結(jié) 循環(huán)結(jié) 7.5數(shù) 數(shù)組類型說 數(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ù)的定義 中斷過程的分 中斷函數(shù)的結(jié) 7.10位操 位的定 位的運 位比較在程序流程控制中的應(yīng) 7.11預(yù)處 7.11.1概 7.11.2宏定 文件包 條件編 內(nèi)嵌匯 如何內(nèi)嵌匯 內(nèi)嵌匯編時變量的傳 7.13其 7.14SN8C自定義 8. 8.1SN8匯編語 標(biāo) 操作 8.1.3注 8.1.4芯片保留 SONiXTECHNOLOGYCO.,SN8CStudioUser數(shù)值表達 算SN8CStudioUser數(shù)值表達 算術(shù)運算 8.2偽指 8.2.1程序開始和結(jié) 用戶定義標(biāo) 8.2.3變 8.2.4段定 字節(jié)數(shù)據(jù)定 數(shù)據(jù)定 位運算函 編譯偽指 SONIX宏匯編需求及規(guī) 8.4.1簡 需 架 PARTI宏處理 命令行選 功 保留 輔助指令及偽指 標(biāo)示 整數(shù)常量和常量表達 運算 語 程序開始和結(jié) 自定義標(biāo) 條件指 3宏應(yīng) PARTII可移植匯 命令行選 功 指定目標(biāo)處理 段指 地 數(shù)據(jù)的定義和使 通過Public和External使用符 程序流程控 定義標(biāo) 定義過 支持?jǐn)?shù)據(jù)覆 記錄存儲空間 可重定位表達 5兼容 PARTIII處理器設(shè) 19處理器設(shè) 8.4.5PARTIVBNF語 Assembly SONiXTECHNOLOGYCO.,SN8CStudioUser9.鏈接和調(diào) 鏈接程SN8CStudioUser9.鏈接和調(diào) 鏈接程序做了什么 鏈接選 功能介 Dump用 MAPFILE格 RPT文件格 ERRORANDWARNING消 SINGLE 10. 軟件模 LCDSIMULATOR使用說 LCDSimulator 使用方法說 FontEdit 10.2.3示 10.2.4LCDSimulator使用注意事 11.SONiX8-bitMCU’sUTP簡 SONIX8-BITMCU’S UTP2X簡 硬件連 UTP驅(qū)動程序安 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設(shè)置按鈕 Align按鈕 BITMAPPING及KEYMATRIX原理及使用范 BitMapping按鈕原 添加BitMapping按 KeyMatrix按鈕原 添加KeyMatrix按 注意事 附錄 SONiXTECHNOLOGYCO.,SN8CStudioUser第一部分集成開發(fā)環(huán)境1.簡介1.1系統(tǒng)概覽SN8CStudioUser第一部分集成開發(fā)環(huán)境1.簡介1.1系統(tǒng)概覽方便易用。本文將講述如何建立一個SN8芯片開發(fā)應(yīng)用的操作環(huán)境。SN8CStudioSONiX8-bitMCU設(shè)計的一個高性能且完整的開發(fā)環(huán)境。該系統(tǒng)由方便用戶快速應(yīng)用SONiX8-bitMCU系列芯片所必需的軟硬件工具合并組成。其中最主要的部分是SN8CStudio,它提供了強大的工程編譯和調(diào)試功能;其次是SN8ICE,提供在線仿真。就軟件方面而言,SN8CStudio為用戶提供了良好的工作平臺使用戶在使用過程中更輕松,方便。Windows的用戶環(huán)境。SN8-ICE硬件的所有基本功能對仿真器可用。本手冊中包含了更多的SN8CStudio的詳細信息。SONiXSONiXSN8CStudio仿真程序指令實時仿真。硬件:容易安裝和使用;軟件:基于Windows的軟件源程序調(diào)試;多個源程序文件的工作平臺(C語言源程序文件匯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連到主機上。ICELED2.2軟件安裝SONiXSN8CStudio的軟件安裝包,解壓縮后你可以得到一個Figure2-SN8CStudioFigure2-SONiXTECHNOLOGYCO.,SN8CFigure2-3InstallationNextSN8CFigure2-3InstallationNextCancelFigure2-裝請單擊Next按鈕。SONiXTECHNOLOGYCO.,SN8CFigure2-SN8CFigure2-Figure2-Install按鈕將開始軟件安裝,軟件會自動安裝到系統(tǒng)當(dāng)中。在安裝過程中,在對話框當(dāng)中會顯SONiXTECHNOLOGYCO.,SN8CFigure2-最后,SN8SN8CFigure2-最后,SN8CStudioFinish按Figure2-SONiXTECHNOLOGYCO.,SN8CFigure2-SN8CFigure2-SONiXTECHNOLOGYCO.,SN8CStudioUser3.應(yīng)用實例SN8CSN8CStudioUser3.應(yīng)用實例SN8CStudio3.1創(chuàng)建一個新工作Figure3-1創(chuàng)建新工作SONiXTECHNOLOGYCO.,SN8CFigure3-OKSN8CFigure3-OK按鈕,出現(xiàn)工作區(qū)窗口和輸出窗口。打開目標(biāo)文件夾,你會發(fā)現(xiàn)剛才被定義的子文件夾,其中包含一個新創(chuàng)建的.wsp配置文件。Figure3-SONiXTECHNOLOGYCO.,SN8CStudioUser3.2創(chuàng)建一個新項在文件菜單中選擇新建命令,SN8CStudioSN8CStudioUser3.2創(chuàng)建一個新項在文件菜單中選擇新建命令,SN8CStudio將默認(rèn)創(chuàng)建一個新工程。在彈出的新建對話框中的工程列表窗口中選擇合適的芯片母體。SN8CStudio將自動在地址欄內(nèi)顯示當(dāng)前創(chuàng)建的工作區(qū)目錄。通OKFigure3-4建立正確的項目類SONiXTECHNOLOGYCO.,SN8CFigure3-5項目SN8CFigure3-5項目Figure3-6芯片設(shè)置ICESONiXTECHNOLOGYCO.,SN8CFigure3-7設(shè)置CodeSN8CFigure3-7設(shè)置CodeOption選項OKWorkspace管理窗口中出現(xiàn)當(dāng)前創(chuàng)建的工程,處在被Figure3-8工程管理窗SN8CStudio生成了一些新文件。其中.pfj文件為工程文件,其它的為工SONiXTECHNOLOGYCO.,SN8CStudioUser3.3創(chuàng)建一個新文SN8CStudioUser3.3創(chuàng)建一個新文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’命令或直接點擊工具欄中的SN8CStudioUser3.6調(diào)試在‘Debug’菜單中選擇‘BeginDebug’命令或直接點擊工具欄中的Figure3-10調(diào)試界面監(jiān)視窗口(SN8CStudioFigure3-11監(jiān)視窗SONiXTECHNOLOGYCO.,SN8CStudioUser3變量窗寄存器窗SN8CStudioUser3變量窗寄存器窗Figure3-12寄存器窗口堆棧窗Figure3-13堆棧窗口內(nèi)存窗匯編分析窗口CSONiXTECHNOLOGYCO.,SN8CStudioUser3.7設(shè)置斷點SN8CStudioUser3.7設(shè)置斷點Breakpoint命令(F9)就可以在程序中設(shè)置斷點,程序?qū)⑦\行到斷點處停Figure3-斷點SONiXTECHNOLOGYCO.,SN8CStudioUser3.8跟SN8CStudioUser3.8跟蹤程序SONiXTECHNOLOGYCO.,SN8CStudioUser3.9輸出文件仿真SN8CStudioUser3.9輸出文件仿真結(jié)Debug按鈕或快捷鍵進入調(diào)試狀態(tài),即可在所連硬件上看到程序運行結(jié)果。如果沒有出現(xiàn)預(yù)期的輸出燒錄文檔SN8CStudio將自動在默認(rèn)目錄下生成燒錄文檔.sn8SONiXTECHNOLOGYCO.,SN8CStudioUser4.菜單與工具欄應(yīng)用工具欄按鈕可以更加快捷地執(zhí)行命令??旖萱I也可以快捷地執(zhí)行SN8CStudio命令。SN8CSN8CStudioUser4.菜單與工具欄應(yīng)用工具欄按鈕可以更加快捷地執(zhí)行命令??旖萱I也可以快捷地執(zhí)行SN8CStudio命令。SN8CStudio4.1File菜單和工FileSN8CStudio所有相關(guān)文件的菜單項。為了和其他應(yīng)用程序菜單一致,此菜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對話框保存工作關(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個下拉菜單,他們的功能分別如相應(yīng)菜單項所列出的命令所示。把狀態(tài)欄工作區(qū)Figure4-8(b)Debug菜單項下拉菜單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運行(Run重啟(Restart, 暫停(Pause單步SN8CStudioUser運行(Run重啟(Restart, 暫停(Pause單步執(zhí)行(Stepinto單步跳過(StepOverCALL單步跳出(StepOut的所有指令,并且PC指向CALL指令后面的下一條指令。運行到光標(biāo)處(RuntoCursor,Ctrl+自動單步執(zhí)行(Animatestep自動單步跳過(Animatestep停止自動運行( 添加斷點(ToggleSONiXTECHNOLOGYCO.,SN8C斷點(breakpoints,SN8C斷點(breakpoints, Figure4-13設(shè)置斷點對話框MemoryFigure4-14RAM空間設(shè)置對話框SONiXTECHNOLOGYCO.,SN8CStartAddressSN8CStartAddress:設(shè)置要處理的RAM段起始地址。Length:輸入所要處理的RAM地址段長度。FillfromFileBINRAMSavetoFileRAMBINFillbyDataRAMSONiXTECHNOLOGYCO.,SN8C4.6Tool菜單用戶設(shè)SN8C4.6Tool菜單用戶設(shè)參數(shù)選Figure4-15Tool菜單SONiXTECHNOLOGYCO.,SN8C4.7WindowSN8C4.7Window菜單SONiXTECHNOLOGYCO.,SN8C4.8HelpSN8C4.8Help菜單SONiXTECHNOLOGYCO.,SN8CStudioUser5.界面預(yù)覽SN8CSN8CStudioUser5.界面預(yù)覽SN8CStudioSN8CStudio時,窗口中心的工4-1SN8CStudioFigure5–1SN8C打開后的界面4-2WindowsSN8CStudio窗SONiXTECHNOLOGYCO.,SN8CFigure5SN8CFigure5–2SN8C工程窗口界面SONiXTECHNOLOGYCO.,SN8CStudioUser5.1工作區(qū)窗口上角的closex”)按鈕SN8CStudioUser5.1工作區(qū)窗口上角的closex”)按鈕也可以通過取消視圖菜單中對workspace的選中來實現(xiàn)。選擇視圖菜單中的workspace顯示工程視窗。5.1.1ProjectFigure5-3工程視圖Figure5-4工程視圖彈出菜設(shè)置工作工程刪除工保存工SONiXTECHNOLOGYCO.,SN8CStudioUser5.1.2FileFigureSN8CStudioUser5.1.2FileFigure5-5文件視圖窗口1.工作區(qū)中彈出菜Figure5-6工作區(qū)彈添加工SONiXTECHNOLOGYCO.,SN8C2.工程項彈出菜Figure5-7工程項彈出建立工作工程SN8C2.工程項彈出菜Figure5-7工程項彈出建立工作工程新建文件添加文刪除工保存工SONiXTECHNOLOGYCO.,SN8C重SN8C重排文SONiXTECHNOLOGYCO.,SN8CStudioUser5.2輸出窗口SN8CStudioUser5.2輸出窗口Figure5-8輸出窗口5.2.1Build消息版本號,和產(chǎn)生的文件名稱和位置,詳細閱讀這些信息對Debug會有很大的幫助。Figure5-9Build消息窗5.2.2調(diào)試消息5.2.3在文件中查找SONiXTECHNOLOGYCO.,SN8CFigure5-10FindInFiles消息窗5.2.4錯誤/警告信息窗口SN8CFigure5-10FindInFiles消息窗5.2.4錯誤/警告信息窗口SN8CStudio中將所有的錯誤和警告信息單獨提出并顯示在錯誤/警告信息窗口中。您可以方便快捷5.2.5消息窗口彈出Figure5-11消息窗口彈出菜SONiXTECHNOLOGYCO.,SN8CStudioUser另存為5.3調(diào)試視圖SN8CStudioUser另存為5.3調(diào)試視圖(Debug試模式下成功建立應(yīng)用程序后,PC指針將指向源程序的第一行執(zhí)行指令。此時,SN8CStudio已經(jīng)Figure5-12調(diào)試窗口SONiXTECHNOLOGYCO.,SN8CStudioUser5.3.1監(jiān)視窗口(Watch3個部分來放置不同的標(biāo)簽,有足夠的置、地址以及值都將被顯示出來。通過彈出菜單中的Radix選項可以更改數(shù)據(jù)的顯示進制數(shù)等。SN8CStudioUser5.3.1監(jiān)視窗口(Watch3個部分來放置不同的標(biāo)簽,有足夠的置、地址以及值都將被顯示出來。通過彈出菜單中的Radix選項可以更改數(shù)據(jù)的顯示進制數(shù)等。Figure5-13監(jiān)視窗口Figure5-14彈出進制數(shù)SONiXTECHNOLOGYCO.,SN8CStudioUser5.3.2變量窗口(Variable變量窗口將自動顯示當(dāng)前正在使用的局部變量的值。這在C源程序中是十分有意義的。顯示進制方Figure5-15SN8CStudioUser5.3.2變量窗口(Variable變量窗口將自動顯示當(dāng)前正在使用的局部變量的值。這在C源程序中是十分有意義的。顯示進制方Figure5-15變量窗Figure5-16彈出菜十六進十進制二進制5.3.3內(nèi)存跟蹤顯示窗口(Memory內(nèi)存窗中顯示程序數(shù)據(jù)存儲器空間的內(nèi)容。調(diào)試時可以直接修改RAM窗口的數(shù)據(jù),所有數(shù)值以十SONiXTECHNOLOGYCO.,SN8CFigure5- 內(nèi)存跟蹤顯示Figure5-SN8CFigure5- 內(nèi)存跟蹤顯示Figure5-18彈出菜ASCII5.3.4寄存器顯示窗口(RegisterSONiXTECHNOLOGYCO.,SN8CStudioUserFigure5- 寄存窗口SN8CStudioUserFigure5- 寄存窗口Figure5-彈出進制數(shù)SONiXTECHNOLOGYCO.,SN8CStudioUser6.工程設(shè)計SN8CStudioSN8CStudioUser6.工程設(shè)計SN8CStudio6.1工程管理器(Project6.1.1建立一個新項第一步Figure6-1建立一個新工SONiXTECHNOLOGYCO.,SN8CStudioUser第二步第三步第四步SN8CStudioUser第二步第三步第四步Figure6-2創(chuàng)建一個新項目SONiXTECHNOLOGYCO.,SN8CStudioUserSN8CStudioUser6.1.2OpenandCloseaCloseSONiXTECHNOLOGYCO.,SN8CStudioUser6.2管理源文件New,Edit分別對已經(jīng)打開的工程源程序文件進行添加和刪除。源文件按次序顯SN8CStudioUser6.2管理源文件New,Edit分別對已經(jīng)打開的工程源程序文件進行添加和刪除。源文件按次序顯6.2.1創(chuàng)建一個新的源Figure6- 創(chuàng)建新文件匯編文件(Assemb SONiXTECHNOLOGYCO.,SN8CStudioUserC源文件(CSourceC頭文件(HeaderSN8CStudioUserC源文件(CSourceC頭文件(Header文本文件(Text二進制文件(BinaryOK按鈕將文件添加到工程。當(dāng)所選源文件成功被添加,其文件名將顯示在工程文件的列6.2.2添加源文件用戶也可以右擊工作區(qū)窗口的活動工程選擇‘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高級設(shè)SN8C高級設(shè)SONiXTECHNOLOGYCO.,SN8CStudioUser6.3.2芯片設(shè)Description窗口顯示被選中芯片的描述。ICFigureSN8CStudioUser6.3.2芯片設(shè)Description窗口顯示被選中芯片的描述。ICFigure6-芯片6.3.3目錄設(shè)標(biāo)準(zhǔn)庫設(shè)置標(biāo)準(zhǔn)(系統(tǒng)定義)INI文件中定義的版本附加路徑和庫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文件定義與工程相同的擴展名.mapfile。每個輸出文件的默認(rèn)文件名與源文件的相同,但文件擴展名不同。Figure6-8連接設(shè)置SONiXTECHNOLOGYCO.,SN8C6.3.6CodeOptionSN8C6.3.6CodeOption設(shè)置Figure6- CodeOption設(shè)置選擇“禁用”。文本列表框內(nèi)羅列了包括程序加密、CPU頻率、高速時鐘、看門狗、復(fù)位引腳和雜訊CodeOption選項(注:依不同芯片會顯示不同的選項)。單擊相應(yīng)的選SONiXTECHNOLOGYCO.,SN8CStudioUser6.4編譯項目6.4.1SN8CStudioUser6.4編譯項目6.4.1編譯器檢測并列出當(dāng)前被編譯文件中的錯誤和警告,此錯誤和警告信息顯示在輸出窗口。雙擊那些Figure6-10編譯過程描述6.4.2鏈接SONiXTECHNOLOGYCO.,SN8CStudioUser6.4.3SN8CStudioUser6.4.3MakeMake,即編譯器可以生成一個新的Figure6-11文件被修改的提SONiXTECHNOLOGYCO.,SN8CStudioUser6.5創(chuàng)建(Build)SN8CStudioUser6.5創(chuàng)建(Build)項SONiXTECHNOLOGYCO.,SN8CStudioUser6.6調(diào)試項目文件描述ROM中字段和標(biāo)號的位置。輸出文件:用SN8CStudioUser6.6調(diào)試項目文件描述ROM中字段和標(biāo)號的位置。輸出文件:用于調(diào)試二進制文件原始的可執(zhí)行二進制文件Map文件:由鏈接生成,描述符號地址和字段地址列表文件由匯編程序生成開始調(diào)程序跟設(shè)置斷IO口的信息。設(shè)置斷點有兩種方法:一種在文本編輯器里直在一條指令處設(shè)置有效斷點,仿真器或ICE將在執(zhí)行此條指令之前停止運行。也就是說,這條指令退出調(diào)完成程序調(diào)試后,單擊‘ExitDebug’SONiXTECHNOLOGYCO.,SN8CStudioUser第二部開發(fā)語言和開發(fā)工具SN8C7.1.1CSN8CStudioUser第二部開發(fā)語言和開發(fā)工具SN8C7.1.1C源程序的main源程序中可以有預(yù)處理命令(include命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源{}括起來的部分,通常表示了程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語句的第一個字母對齊,7.1.2C語言的字字符是組成語言的最基本的元素。C語言字符集由字母,數(shù)字,空格,標(biāo)點和特殊字符組成。在字0~910個7.1.3C語言詞匯CSONiXTECHNOLOGYCO.,SN8CStudioUser 標(biāo)識符由用戶自定義。C規(guī)定,標(biāo)識符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線()組成的字符串,并C不SN8CStudioUser 標(biāo)識符由用戶自定義。C規(guī)定,標(biāo)識符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線()組成的字符串,并C不限制標(biāo)識符的長度,但它受各種版本的C語言編譯系統(tǒng)限制,同時也受到具體機器在標(biāo)識符中,大小寫是有區(qū)別的。例如BOOKbook2.關(guān)鍵字鍵字相同。C語言的關(guān)鍵字分為以下幾類:預(yù)處理命令字:用于表示一個預(yù)處理命令。如前面各例中用到的include。7-3.運算C語言中含有相當(dāng)豐富的運算符。運算符與變量,函數(shù)一起組成表達式,表示各種運算功能。運算SONiXTECHNOLOGYCO.,RelatedInterruptMemoryMemory#progmaBank3ss*T出現(xiàn)非法字符-3x以減號開bowy-1出現(xiàn)非法字符-(減號a,x,3x,BOOKSN8CStudioUser4.分隔符SN8CStudioUser4.分隔符inta;inta;Cinta當(dāng)成一個標(biāo)識符處理,其5.常量C6.注釋符塊注釋:C語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的即為注釋。程序編譯SONiXTECHNOLOGYCO.,SN8CStudioUser7.2數(shù)據(jù)類型SN8CC8-bit單片機,所以必然會考慮數(shù)據(jù)類型的定義方法和長度。在這些方面,SN8C有它自己的專有的定義特征和數(shù)據(jù)長度,在使用時一定要7-2數(shù)據(jù)類型長度定義7.2.1常量與變量SN8CStudioUser7.2數(shù)據(jù)類型SN8CC8-bit單片機,所以必然會考慮數(shù)據(jù)類型的定義方法和長度。在這些方面,SN8C有它自己的專有的定義特征和數(shù)據(jù)長度,在使用時一定要7-2數(shù)據(jù)類型長度定義7.2.1常量與變量Ram非常小,有時會顯得很緊張。所以系統(tǒng)為了節(jié)省空間會將一些表格等放在系統(tǒng)的ROM中。而我們直接命名的常量,則由編譯器自動將其替換為所需要的值,這些工SONiXTECHNOLOGYCO., #224;t0interupttime ;3cooksatDataRangeoftheSignedchar(short、1Unsignedchar(short、1Signed2Unsigned2float421SN8CStudioUserEQU關(guān)鍵字,在編譯過程中,程序里但凡出現(xiàn)了EQU前面的字段都會被其后面的值直接代替,因此,很方便地減輕SN8CSN8CStudioUserEQU關(guān)鍵字,在編譯過程中,程序里但凡出現(xiàn)了EQU前面的字段都會被其后面的值直接代替,因此,很方便地減輕SN8CDWword,它是存放在.code段里面的,通過表頭地SN8C在講到表的處理之前,必須先提一提變量定義關(guān)鍵字的問題。SN8C定義一個變量時,可以指明它所放置的地方(RAMROM),分別用關(guān)鍵字RAM和ROM來指定存放的地點,如:ROMSONiXTECHNOLOGYCO.,unsignedlongROM {UnsignedintRAM //將變量存放在RAMStorethevariablesinRAMunsignedintUnsignedintROMromVariable; //將變量ROMStorethevariablesinROMROMunsignedintromVariable2; dw0000hdw ;A-dw dw dw dw dw dw //3cooksatSN8CStudioUser這是一個與上面的匯編表完全相同的表,我們將它存放在ROM中,通過調(diào)用數(shù)組來查表,這在temp1、temp2、temp3、temp4、led_dpSN8CStudioUser這是一個與上面的匯編表完全相同的表,我們將它存放在ROM中,通過調(diào)用數(shù)組來查表,這在temp1、temp2、temp3、temp4、led_dp、step6ByteRAM空間,那么程序當(dāng)中就可以通過變量名對該變量的空間進行讀寫。當(dāng)然在匯編中你也可以用一個變量名來訪問兩個或多個RAM空間,這類似于查表的操作,其定義如下:job_modejob_mode和job_mode+1來讀寫定義的兩個存儲單元,以此類推power_modeRAM空間定義的變量可以通過相同的方法來定義??梢?,SN8AssemblerDS關(guān)鍵字來申請需要的變量空間,空間一旦被申請,就在整個程序流RAM本身就很少的單片機而言,不SN8CCompiler是在不同的位置定義就行了,這與標(biāo)準(zhǔn)C所規(guī)定的方法是一樣的,后面再詳細討論。...;SN8CSONiXTECHNOLOGYCO., ;currentSN8CStudioUserSN8CStudioUser8-bitByteC這樣的高級語言,不管使用何種數(shù)據(jù)類型,雖然某一行程序從字面上看,其操作十分簡單,然而,實際上系統(tǒng)的C編譯器需要用一系列機器指令對其復(fù)雜的變量類型、數(shù)據(jù)類型的進行處理。相同的一行語句,變量選擇的類型不同,處理時就會產(chǎn)生很大的差別,產(chǎn)生的代碼更是差別很多。特別是當(dāng)使用浮點變量時,將明顯地贈加運算時間和程序的長度。當(dāng)程序必須保證運算精度時,C編譯器將調(diào)用相應(yīng)的C程序時往往會使用大量的、不C編譯器相應(yīng)地增加所調(diào)用的庫函數(shù)以處理大量增加的變量類型,并最而對于有符號與無符號的變量類型。在編寫程序時,如果使用signed和unsigned兩種數(shù)據(jù)類型,那么SONiXTECHNOLOGYCO.,unsignedinttemp1;unsignedinttemp2;unsignedinttemp3;unsignedinttemp4;unsignedintunsignedintstep; //Currentstatusunsignedlongjob_mode;unsignedlongfloatinttemp1_1; //Signedinttypelongtemp2_2;SN8CStudioUseruchar代替unsignedcharuintunsignedintSN8CStudioUseruchar代替unsignedcharuintunsignedint數(shù)據(jù)的存儲類型與存儲結(jié)構(gòu)在前面分析查表類型數(shù)據(jù)定義的時候已經(jīng)提到了數(shù)據(jù)在單片機里的存儲,會分為ROMRAM兩會分別用關(guān)鍵字.code和.data來預(yù)先聲明。128ByteUser80H~FFHisforsystemMoreUser7-1、RAMSN8P系列單片機的通用RAM區(qū)的大小依不同的芯片而不同,但都是按BANK來劃分,每一個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),在定義一個變量時,我們前面已經(jīng)提到可以用RAM和ROMRAM當(dāng)中,因而RAMCRAM里了,缺省項給我們帶來了很RAM存儲區(qū)內(nèi),80H~FFHSN8CStudioUserRAM區(qū)的數(shù)據(jù)結(jié)構(gòu),在定義一個變量時,我們前面已經(jīng)提到可以用RAM和ROMRAM當(dāng)中,因而RAMCRAM里了,缺省項給我們帶來了很RAM存儲區(qū)內(nèi),80H~FFH別對應(yīng)了芯片內(nèi)部的資源,SN8C針對這部分的系統(tǒng)資源,對這些寄存器進行了定義,其定義的形#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算量參與運算的先后順序不僅要遵守運算符優(yōu)先級別的規(guī)定,還要受運算符結(jié)合性的制約,以便SN8CStudioUser 基本運算符和表達式CC語言功能十分完善。這也是C語言的主要特點之一。C算量參與運算的先后順序不僅要遵守運算符優(yōu)先級別的規(guī)定,還要受運算符結(jié)合性的制約,以便因此也增加了C語言的復(fù)雜性。 算術(shù)運算符與算術(shù)表達式 關(guān)系運算符與關(guān)系表達式、大于等于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,也不成立,故表達式。 輯運算符與邏輯表達式邏輯運算符C語言中提供了三種邏輯運算符&&與運算||或運算 !非運算與運算符&&和或運算符||均為雙目運算符。具有左結(jié)合性。非運算符!為單目運算符,具有右結(jié)合性。邏輯運算的值” 運算&&參與運算的兩個量都為真時,結(jié)果才為真,否則為假。例如,5>0&&4>2,5>0為真,4>2也為真,相與的結(jié)果也為真。SONiXTECHNOLOGYCO., (x+r)*8- (++i)-(j++)+(k--SN8CStudioUser運算||5>0||5>8,5>0SN8CStudioUser運算||5>0||5>8,5>0還是為“假”時,以“0”代表“假”,以非“0”的數(shù)值作為“真”53均為非“0”5&&3的值為“真”,即為1。a&&b&&c邏輯表達式的值是式中各種邏輯運算的最后值,以“1”和“0”7.3.4位操作運算參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右(>>)六種7.3.5賦值運算符與賦值表賦值運算符用于賦值運算,分為簡單賦值(=)、復(fù)合算術(shù)賦值*=和復(fù)合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。簡單賦值運算符和表達式簡單賦值運算符記為“=”。由=可理解為C中,把“=”定義為運算符,從而5a,8ba,bxx13。因此如x=8;a=b=c=5;都是賦值語句,在前面各例中我們已大量使用過了。SONiXTECHNOLOGYCO.,SN8CStudioUser型賦予整型,舍去小數(shù)部分。前面的例2.9(小數(shù)部分的值為0)量的低八位中,高八位為0。SN8CStudioUser型賦予整型,舍去小數(shù)部分。前面的例2.9(小數(shù)部分的值為0)量的低八位中,高八位為0。復(fù)合賦值符及表達式在賦值符“=”+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。構(gòu)成復(fù)合賦值表達式的一般形式為:變量雙目運算符=表達式它等效于變量=變量運算符表達式例如:7.3.6條件運算符12maxa>b)?a:babamax,否則把b賦予max。條件運算符的運算優(yōu)先級低于關(guān)系運算符和算術(shù)運算符,但高于賦值符。因此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指針運算符用于取內(nèi)容(*)和取地址(&)7.3.9求字節(jié)數(shù)運算用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)7.3.10特殊有括號(),下標(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)先級和結(jié)合性規(guī)定的結(jié)合方向處理。C語言中各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)SN8CStudioUser7.3.11優(yōu)先級和結(jié)合性規(guī)定的結(jié)合方向處理。C語言中各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運算符的結(jié)合性是自左至右即先左后右。如有表達式x-y+z則y應(yīng)先與號結(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)是程序最基本的流程,其語句順序執(zhí)行,SN8CStudioUser7.4程序流程7.4.1順序結(jié)構(gòu)順序結(jié)構(gòu)是程序最基本的流程,其語句順序執(zhí)行,PCCPU內(nèi)部處理指令的初始圖7-2SequentialProgramFlowing性和時間性,如圖中的A操作的發(fā)展方向只有一個,即接下來就是B操作,中間既沒有反復(fù)也沒有曲折變化,B一定發(fā)生在A的后面。C語言的實現(xiàn):(微波爐開機初始化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語句if的if語句有三種基本形式。1.if(表達式)2.if-elseif(表達式12。其過程可表示為下圖SONiXTECHNOLOGYCO., ;Beeponcewhen ;Display“0:00”whenelectrified SN8C圖7-3ConditionalProgramFlowingC語言實現(xiàn):(BCDSN8C圖7-3ConditionalProgramFlowingC語言實現(xiàn):(BCD碼調(diào)整SN8SONiXTECHNOLOGYCO., ;If(result_buf>{result_buf=input+}{result_buf=}PB操A操SN8CStudioUserb0bts為標(biāo)志為來判斷,比如用SUB指令將其轉(zhuǎn)化成FCFZ標(biāo)志位進行判斷ASN8CStudioUserb0bts為標(biāo)志為來判斷,比如用SUB指令將其轉(zhuǎn)化成FCFZ標(biāo)志位進行判斷A行多分支結(jié)構(gòu)流程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語句的三種形式中,所有的語句應(yīng)為單個語句,如果要想在滿足條件時執(zhí)行一組(多個)語句,則必須把這一組語句用{}括起來組成一個復(fù)合語句。但要注意的是在}之后不能再加分號。if語句的嵌ififififif語句意if和else的配對問題。例如:SONiXTECHNOLOGYCO.,}}jmpSN8CStudioUserIsit:SN8CStudioUserIsit:if(condition為了避免這種二義性,C語言規(guī)定,elseif配對,因此對上述例子應(yīng)按前一種并行多分支結(jié)構(gòu)流程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循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點是,在給定條件成立時,反復(fù)執(zhí)行某程序段,直到C語言提供了多種7-“While”loopflowingSN8CStudioUser7.4.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點是,在給定條件成立時,反復(fù)執(zhí)行某程序段,直到C語言提供了多種7-“While”loopflowingThewhilewhilewhile(表達式)語句SONiXTECHNOLOGYCO.,tempbuf=0;while(tempbuf==15){++tempbuf;}//DelayNIsPYA SN8CStudioUserWhilewhilewhile語句中的表達式一般是關(guān)系表達或邏輯表達式,只要表達式的值為真(0)即可繼續(xù)循環(huán)。循環(huán)體如包括有一個以上的語句,則必須用SN8CStudioUserWhilewhilewhile語句中的表達式一般是關(guān)系表達或邏輯表達式,只要表達式的值為真(0)即可繼續(xù)循環(huán)。循環(huán)體如包括有一個以上的語句,則必須用{}括起來,組成復(fù)合語句。whilea=5沒有其它中止循環(huán)的手段,因此該循環(huán)將無休止地進行下去,形成死循環(huán)。4.whilewhiledo-while語句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語句,while而在do-whiledo-whilewhiledowhile之間的循環(huán)體由多個語句組成時,也必須用{}do-whilewhiledo-whilewhiledo-whiledo-while至少要執(zhí)行一次循環(huán)體。而while是先判斷后執(zhí)行,如果條件不滿足,則一次循環(huán)體語句也不執(zhí)行。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語言所提供的功能更強,使用更廣泛的一種循環(huán)語句。其一般形式為for(init-statement;condition;expression)表達式1 通常用來給循環(huán)變量賦初值,一般是賦值表達式。也允許在for語句外給循環(huán)變量表達式 表達式 一般形式中的“語句”即為循環(huán)體語句。for12的值,若值為真(0)表達式2和表達式,3則可能計算多次。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。(1for語句中的各表達式都可省略,但分號間隔符不能少。如:for(;表達式;表達式)省去了表達式1。for(表達式;;表達式)省去了表達式2。for;;省去了全部表達式。(2在循環(huán)變量已賦初值時,可省去表達式1。如省去表達式2或表達3則將造成無限循環(huán),這(3).循環(huán)體可以是空語句 forwhile,do-whileSONiXTECHNOLOGYCO.,(1)…}(2)…SN8CStudioUser常流向,可以使用轉(zhuǎn)移語句。在C語言中提供了4種轉(zhuǎn)移語句:goto,break,continueandreturn SN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論