




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
該手冊是Keil軟件公司8051單片機軟件開發(fā)工具的介紹是為新用戶和有 指南只需要閱讀本書就可以正確地運行和使用該軟件這本用戶指南包括以下章節(jié)的內(nèi)容第一章介 第二章安 第三章8051產(chǎn)品系列8051單片機提供的不同產(chǎn)品品第四章8051開發(fā)工具8051開發(fā)工具的主要特征C編譯器匯編器第五章使用8051工具第六章硬件產(chǎn)品介紹輔助開發(fā)和調(diào)試的硬件工 還有80C517A和80C520評估板以第七章實時內(nèi)核講述RTX 51實時操作系統(tǒng)該章還提供多任務處理系統(tǒng)的概述第八章命令參考簡要講述了8051開發(fā)工具令及控制符第一 介Keil80518051派生器件以實現(xiàn)嵌入式應用開發(fā)C51C8051工具連接器目標文件轉換器Windows版dScope源程序級調(diào)試器/這些工具都集合在一個套件內(nèi)見第三章獨立的工具在第四章詳細介紹除了以上的開發(fā)工具以外還提供實時內(nèi)核評估板和調(diào)試硬件這些內(nèi)容詳見第六章和第七章的講述這套工具是為專業(yè)軟件開發(fā)者設計的但任何水平的編程者都可使用 8051開發(fā)工具運行演示程序見第五章如果想要馬上開始使用應當安裝軟件并運行演示程序C51演示套件是開發(fā)工具的示范版本 表文件可通過列表文件查看編譯器和其它工具產(chǎn)生的代碼C512K的應用程序可使用該套件評估開發(fā)工具的效用并可用于產(chǎn)生小型的目標應用系統(tǒng) 在開始安裝之前必須進行以為了保證編譯器和工具的正常工作系統(tǒng)必須滿足軟件和硬件的最低配置Windows版工具必須滿足以下條件 IBM3864MDOS版工具 IBM兼容386或以上 帶640K內(nèi)C編譯器及工具要求CONFIG.SYS文件中至少定義20個文件及20個緩沖區(qū) 環(huán)境空間供編譯器和工具的環(huán)境變量使用見 環(huán)境設置章節(jié) /e:如果在DOS下收到信息Outofenvironmentspace 就需要通過增加示例中1024的值以增加環(huán)境空間數(shù)量詳情參考DOS用戶指南 然后用備份磁盤來安裝軟件將原磁盤妥善保存要安裝DOS版將第一個安裝盤插入驅(qū)動器 Windows版產(chǎn)品要安裝Windows將第一個安裝盤插入驅(qū)動器在程序管理器的文件菜單中選擇 選擇 后安裝程序?qū)㈤_發(fā)工 子 tScope-51DOSIOT定義產(chǎn)生暫存文件的路徑要得到最佳性能的路徑應當是RAM磁盤路徑必須存在否則定義標準C51定義標準C51AUTOEXEC.BAT文件中如果想將這些設置放入一個單獨的批處理文件中必須寫入如下的環(huán)境設置
PATH 使用磁盤高速緩沖區(qū)diskcache 使用RAM磁盤如果計算機有足夠的擴展或擴充器可以考慮使用RAM磁盤由于RAM磁盤的內(nèi)容保存在RAM中的速度將會非??烊绻褂肦AM磁盤可以將環(huán)境變量TMP設成RAM磁盤的名稱RAM磁盤存放暫存文件這樣可加速許多工具軟件的執(zhí)行RAM磁盤的軟件可用RAMDRIVE.SYSVDISK.SYSDOS最常裝載的RAM磁盤程序名參考DOS手冊學習如何安裝這些程序磁盤高速緩沖區(qū)利用巨大的區(qū)來暫存從磁盤的信息當計算機磁盤時先檢查所要的信息是否已在高速緩沖區(qū)內(nèi)如果是就從高速緩沖區(qū)內(nèi)而不是從磁盤內(nèi)信息這顯然要比從磁通常軟件的開發(fā)包括編輯編譯編輯編譯的循環(huán)這種情況下磁盤高速緩沖區(qū)提高了編輯器編譯器和連接器的性能編輯器編譯器源文件和目標文件全都可以放入高速緩沖區(qū)這樣對 DOS5.06.0SMARTDRV.SYS參考DOS使用手8051Keil8051開發(fā)工具為了幫助你熟悉我們是如何分配工具的下面介紹工具套件的概念工具套件是幾個應用程序的集合8051應用系統(tǒng)使用匯編器匯編8051匯編程序使用編譯器將C源代碼編譯成目標文件使用連接器創(chuàng)建一個絕對目標文件模塊供仿真器使Keil上面所述的開發(fā)周期用方框圖表示最合適如圖所示用Vision/51IDEC51A51LIB51連接器創(chuàng)建一個絕對目標模塊絕對目標文件或模塊是沒有浮動EPROM或其它存dScope-51調(diào)試器/模擬器或電路內(nèi)dScope-51調(diào)試器/模擬器對于快速可靠的高級語言程序的調(diào)試非常理想調(diào)試程序包括一個高速模擬器和一個目標調(diào)試器可對整個8051系統(tǒng)包括片內(nèi)功能進行仿真通過裝載特殊的I/O驅(qū)動器可對不同的8051派生器件的功能進行仿真Monitor-51相連后調(diào)試程序甚至可以在目標硬件上達到源程RTX-518051系列的多任務處理內(nèi)核程序RTX-51實時內(nèi)核簡化了系統(tǒng)的設計編程以及對時間C51編譯器中并且非常易用任務描述表和操作系統(tǒng)的一致性由BL51連接器/自動控制Keil8051開發(fā)工具的全部內(nèi)容該圖中列出的工具包括下面將要介紹的專業(yè)開發(fā)者套件除了專業(yè)開發(fā)者套件外Keil8051開發(fā)者提供了其它許多工具為了更好地說明每套工具的內(nèi)容我們按照功能排序首先介紹功能最強的專業(yè)開發(fā)者套件PK51C518051C51COH51目標另外專業(yè)開發(fā)者套件還包括為Windows專業(yè)開發(fā)者套件可配置用于所有8051派生器件該套件中所有工具需運行在100 IBMPC386或以上兼容機的DOS環(huán)境下DK51C51 C51DOS8051開發(fā)的用戶設計的該套件可DOS開發(fā)平臺上創(chuàng)建復雜的嵌入式應用系統(tǒng)該套件包括以下組件C51COH51目標開發(fā)者套件可配置用于所有8051派生器件該套件中所有工具需運行在100 兼容機的DOS環(huán)境下CA51C51 C51編譯器套件是需要C編譯器而不需要調(diào)試系統(tǒng)的開發(fā)者的最佳選擇該套件可使開發(fā)者為目標硬件創(chuàng)建8051應用系統(tǒng)該編譯器套件可配置用于所有的8051派生器件該套件中的工具需運行在100 IBMPC386或以上兼容機的DOS環(huán)境下A51A51A51宏匯編器套件包括8051匯編器和所有創(chuàng)建8051應用系統(tǒng)所需的工具該匯編器套件可配置用于所有的8051派生器件該套件中的工具需運行在 IBMPC386或以上兼容機的DOS環(huán)境DS51模擬器套件包括與A51匯編器套件一起使用的調(diào)試器/CA51編譯器套件由于模8051應用系統(tǒng)出現(xiàn)問題的位置還可以觀察程序變量SFR和器該套件包括以下組件該模擬器套件可配置用于大多數(shù)8051派生器件該套件中的工具需運行在100 上兼容機的DOS環(huán)境下FR51RTX51Full 51Full8051單片機的實時操作系統(tǒng)RTX-51Full全實時BITBUSCAN通訊協(xié)議界面庫具體內(nèi)容參看第七章實時內(nèi)核程序 8051這一章介紹8051單片機的特征和優(yōu)點以及Keil的開發(fā)工具開發(fā)工具可幫助開發(fā)者迅速并8051問世于二十世紀八十年代早期由于8051CPU內(nèi)核有著杰出的特性以及功能在本世紀仍然可以得到良好的應用現(xiàn)今不同的供應商可提供超過200種8051派生器件有超過半數(shù)的嵌入8051系列單片機作為嵌入式處理器8051是一枝獨秀的典型的8051成員包含8051CPU內(nèi)核數(shù)據(jù)器程序器和一些功能靈活的存儲器界面使用戶可以通過標準的外設和器件擴展8051的性能C51COH51目標C51優(yōu)化CC語言是一種通用編程語言它提供高效代碼結構化編程元素及豐富的運算符C不是一個大型C的普遍性使它可以為各種不同的軟件任務提供便利有效C比其它專門語言更有效Keil的C51優(yōu)化交叉編譯器MSDOS版是完全符合ANSI 言工具C51編譯程序產(chǎn)生8051單片機使用的代碼但它不是一個適合8051目標硬件的通用C編譯8051應用C這樣的高級語言比使用匯編程序更具優(yōu)點不需要了解處理器的指令集對8051 庫文件可提供許多標準的例程例如格式化輸出數(shù)據(jù)轉換和浮點運算加入到應用程序當通過CC語言可移植性好且非常普及C編譯器幾乎適用于所有的目標系統(tǒng)已完成的軟件項目可以C51編譯器是符合ANSIC編譯器C8051單片機的應用C51編譯器支持下表列出的數(shù)據(jù)類型除了這些標量類型外還可以將變量組合到結構聯(lián)合及陣列中除了指明的類型可通過指針這些數(shù)據(jù)類型 441812 bitsbitsfrssfr168051C51編譯器ANSIC的一部分不能通過指針進行bitsbitsfrs和sfr16數(shù)據(jù)類型用于8051的特殊功能寄存器例如sfr P0=0x80定義變量P0并將其分配特殊功能寄存器地址0x80 在8051上是P0口的地址當結果表示不同的數(shù)據(jù)類型時C51編譯器自動轉換數(shù)據(jù)類型例如位變量在整數(shù)分配中就被轉換成一個整數(shù)除了數(shù)據(jù)類型的轉換之外帶符號變量的符號擴展也是自動完成的 分配到指定的空間對內(nèi)部數(shù)據(jù)器的比對外部數(shù)據(jù)器的快許多因此應當將頻繁使用的變量放在內(nèi)部數(shù)據(jù)器而把較少使用的變量放在外部數(shù)據(jù)器中 器類型的指定可以指定變量存放的位程 器64K字 通過操作碼 器對變量的最快128字 器整個內(nèi)部地址空間256字 器允許位和字節(jié)混合尋址16字 器64K字節(jié)通過 器256字節(jié)通過 器模型決定用于函數(shù)自變量自動變量和沒有明確類型的變量的默認器類型在命令行中使用SMALL COMPACT和LARGE控制命令指定器類型 在該模型中所有變量都默認位于8051內(nèi)部數(shù)據(jù)器這和使用data指定器類型的方式一樣此模型對于變量的效率很高但所有的數(shù)據(jù)對象和堆棧必須適合內(nèi)部RAM堆棧的大小很關鍵因為使用的堆棧空間是由不同函數(shù)嵌套的深度決定的通常如果BL51連接器將變量都配置在內(nèi)部數(shù)據(jù)器內(nèi)SMALL模型是最佳選COMPACT使用COMPACT模型所有變量都默認在外部數(shù)據(jù)器的一頁內(nèi)這和使用指定器類型一樣該器類型適用于變量不超過256個字節(jié)此限制是由尋址方式所決定該器模型的效率低于SMALL模型對變量的速度要慢一些但比LARGE模型快地址的高2設置編譯器沒有設置該口LARGE在LARGE模型中所有變量都默認位于外部數(shù)據(jù)器這和使用xdata指定器類型一樣使用數(shù)據(jù)指針DPTR進行尋址通過數(shù)據(jù)指針外部數(shù)據(jù)器的效率較低特別是當變量為2個字節(jié)或字節(jié)時該模型的數(shù)據(jù)比SMALL和COMPACT產(chǎn)生的代碼C51編譯器支持使用 號說明的指針可以使用指針執(zhí)行標準C中所有可執(zhí)行的操作但由8051及其派生器件的獨特結構C51支持兩種不同類型的指針器特殊指針和普通指針普通指針的說明和標準C指針相同char /*stringptrint /*intptrlong /*longptr普通指針總是使用三個字節(jié)進行保存第一個字節(jié)用于器類型第二個字節(jié)用于保存偏移量的高字節(jié)第三個字節(jié)用于保存偏移量的低字節(jié)普通指針可以8051空間任何位置的變量因此許多庫程序使用此類型的指針使用這種普通隱式指針可數(shù)據(jù)而不用考慮數(shù)據(jù)在器中的在指針的說明中器特殊指針總是包含器類型的指定并總是指向一個特定的器區(qū)域例如chardata /*ptrtostringindataintxdata /*ptrtoint(s)inxdatalongcode /*ptrtolong(s)incode由 器類型在編譯時指定因此無類型指針需 器類型字節(jié)而已定義類型指針則需要已定義類型指針可用一個字節(jié)idata,data,bdata和pdata指針或兩個字節(jié) code和xdata指針比較器特殊&普通指用戶可通過器特殊指針加速8051C程序下面的例子為幾個不同指針說明中代碼&數(shù)據(jù)規(guī)模charidatacharval;val=charxdatacharval;val=charcharval;val=8051MOVMOVMOVMOVMOVMOVMOVMOVMOVvalCALL144297311+13再入函數(shù)可以同時由幾個程序共用當執(zhí)行再入函數(shù)時其它程序可以中斷執(zhí)行并開始執(zhí)行同一個再入函數(shù)通常C51函數(shù)不能遞歸調(diào)用或用于導致重入的方式受到該限制是因為函數(shù)自變量和局部變量都存放在固定的器位置再入函數(shù)屬性允許說明那些可以重入的函數(shù)因此可以實現(xiàn)遞歸調(diào)用例如intcalc(chari,intb){intx;x=table[i]return(x*b)}再入函數(shù)可以遞歸調(diào)用也可以同時被兩個或程序調(diào)用它經(jīng)常用于實時應用或中碼和非中碼必須共用一個函數(shù)的情況對于每個再入函數(shù)根據(jù)器的模型在內(nèi)部或外部器模當中斷發(fā)生時C51編譯器提供一個調(diào)用C函數(shù)的方法 這使用戶可以用C創(chuàng)建中斷服務程序 性當包含在一個說明中時 此外用戶可以指定用于中斷的寄存器unsignedint unsignedcharsecond;voidtimer0(void)interrupt1using2ift==4000)/*countto4000t=/*clearintcounter}}C51編譯器在CPU寄存器中最多可傳遞三個函數(shù)自變量 由于自變量不必從器中讀寫因此顯著地提高了系統(tǒng)的性能參數(shù)的傳遞可通過REGPARMS和NOREGPARMS控制命令進行控制12123如果沒有寄存器可用于參數(shù)傳遞或包含的參數(shù)太多使用固定器位置傳遞超出部分的參數(shù)CPUR6為高字節(jié)R7long,unsignedR4–R4為高字節(jié)R7R4–32位IEEEgenericR1–R3中R2根據(jù)程序的前后關系C51編譯器最多分配7個CPU寄存器用于寄存器變量 寄存器修改都由C51編譯器在每個模塊中標明連接器/產(chǎn)生一個總體的寄存器文件其中包含 因此C51編譯器知道在應用中被每個函數(shù)使用的寄存器并優(yōu)化每個C函數(shù)的寄存器分配C51編譯器很好地集成了RTX-51多任務實時操作系統(tǒng)在連接過程中產(chǎn)生并控制任務描述表詳細內(nèi)容參考第七章實時內(nèi)核從C可以很容易地匯編程序 函數(shù)參數(shù)通過CPU寄存器進行傳遞 NOREGPARMS命令時通過固定器位置進行傳遞函數(shù)返回值總是在CPU寄存器中傳遞用戶可以使用SRC命令指導C51編譯器產(chǎn)生一個準備用A51匯編器匯編的文件而不是一個目標文件例如下面的C源文件unsignedintasmfunc1(unsignedint{return(1+arg)}當使用SRC命令編譯時?PR? SEGMENT ;loadLSBofthe;putitbackintoA;addcarry&;returnresultin PL/M-51CC程序和PL/M-51程序連接起來C51編譯器是一個主動優(yōu)化編譯器意思是說編譯器采取一定的步驟確定產(chǎn)生的代碼和輸出的目標C程序在最小程C516C51編譯器可執(zhí)行的跳轉優(yōu)化跳轉反演或擴展為最終目標地址無用代碼消除將不可能執(zhí)行的代碼無用碼從程序中刪寄存器變量自動變量和函數(shù)自變量盡可能放在寄存器中沒有為這些變量保留數(shù)據(jù)器空3全局共用的子表達式消除將在一個函數(shù)中多次出現(xiàn)的子表達式和地址計算式盡可能只計算一窺孔優(yōu)化當器空間或時間可作為結果保存時用簡化操作代替復雜操數(shù)據(jù)覆蓋數(shù)據(jù)和位段函數(shù)被認為是可覆蓋的并通過BL51連接器/用其它數(shù)據(jù)和位段Case/Switch優(yōu)化CaseSwitch語句根據(jù)它們的數(shù)據(jù)序列和位置可以使用跳轉表或跳 SIZE子程序代替共用的C操作在降低程序運行速度的前提下減小了程序 SPEED共用的C操作內(nèi)嵌擴展增加程序代碼的規(guī)模換取程序速度的提NOAREGSC51編譯器不再使用絕對寄存器NOREGPARMS參數(shù)傳遞總是在局部數(shù)據(jù)段內(nèi)而不是在專門寄存器內(nèi)進行使用創(chuàng)建的程序代碼和C51編譯器PL/M-51編譯器和ASM-51匯編器的較早版本兼容C51C515.0C513.4版的比較由于使用應用寄存器優(yōu)化C51編譯器知道由外部函數(shù)使用的寄存器不由外部函數(shù)改變的寄存器用于寄存器變量這樣所產(chǎn)生的代碼占用更少的數(shù)據(jù)和代碼空間并且執(zhí)行得更快在下面的例子中inputoutput為外部函數(shù)僅需占用幾個寄存器 main{unsignedchari;unsignedcharwhile(1)i=input /*getnumberofvalues ;-assignedto doa=input/*getinputvalue;-assignedto-output/*outputvalue}while(--i);/*decrementvaluesA}}1830C51編譯器使用In目標格式OMF51并產(chǎn)生完全的符號信息此外編譯器可以包含所有需要的信息例如變量名函數(shù)名和行數(shù)等等這樣可以用dsope-51或In兼容的仿真進行詳細完全的調(diào)試和分析所有In兼容仿真器都可用作程序調(diào)試此外OBJECTEXTEND控制命令將額外的變InOMF51目標模塊兼容以及是否能Keil的目標模塊C517個不同的ANSI編譯庫文件Smallmodellibrarywithoutfloating-pointSmallmodelfloating-pointarithmeticCompactmodellibrarywithoutfloating-pointCompactmodelfloating-pointarithmeticLargemodellibrarywithoutfloating-pointLargemodelfloating-pointarithmeticLibraryforusewiththePhilips8xC751and源代碼提供給執(zhí)行硬件相關I/O功能的庫模塊并建立在\C51\LIB下用戶可使用這些源文I/OI/O功能ACALLLCALL指令執(zhí)行庫程序內(nèi)部庫程序產(chǎn)生嵌入代碼更快且更有效率執(zhí)行庫程序空操作8051NOP指令 位8051JBC指C51編譯器產(chǎn)生一個列表文件其中包含源代碼命令信息C51COMPILERV5.02,SAMPLE PAGE1 TheC51compilerproducesaDOSC51COMPILERV5.02,COMPILATIONOFMODULESAMPLE listingfilewithpagenumbersOBJECTMODULE CEDINSAMPLE.OBJ aswellastimeanddateofCOMPILERINVOKEDBY:C:\C51\BIN\C51.EXESAMPLE.CCODE thecompilation.Remarksstmtlevelsource aboutthecompilerinvocation1/*SFRdefinitionsfor8051andobjectfileoutput2/*standardi/odefinitions345EOT/*Control+ZsignalsEOTThelistingincludesa6 voidmain andanestinglevelfor81911/*setupserialport(2400Baud@12MHz)1SCON=/*SCON1TMOD=/*TMOD1TCON=/*TCON1TH1=/*TH111while((c=getchar())!=EOF)2includedinthelisting2}1P0= /*clearOutputPorttosignalready1};FUNCTIONmain ;SOURCELINE# ;SOURCELINE# listinginthelisting0000 ;SOURCELINE# 0003 ;SOURCELINE#0006 0009 000C120000E LCALLgetchar000F8F00 0012 0013 0015120000E 0018120000E 001D 0020 ;FUNCTIONmain
;SOURCELINE#;SOURCELINE#;SOURCELINE#;SOURCELINE#;SOURCELINE#;SOURCELINE# AmemoryoverviewCONSTANTSIZE XDATA PDATA BIT ENDOFMODULEandwarningsisstated0WARNING(S),0theendofthelistingA51宏匯編器是用于8051單片機的宏匯編器 A51DUBUG控制目標文件包含dScope或硬件仿真器使用的全部符號信息除了目標文件之外A51匯編器還產(chǎn)生一個列表文件其中可包含符號表和交叉參考信息A51匯編器和InASM-51源模塊完全兼容A51匯編器支持8051的所有成員8051的特殊功能寄存器是預先定義的但是NOMOD51控制可以使用戶通過處理器-特殊包含文件覆蓋這些定義A51匯編器裝載了80518051Fx 80528015280451804528051580C51780C515A80C517A8X5528XC5928XCL7818XCL410和80C320等微控制器的包含文件用戶也可以輕松創(chuàng)建其它8051成員的包含文件A51匯編器所產(chǎn)生的列表文件該列表文件包含源代碼產(chǎn)生的機器碼命 TheA51producesalistingfile pagenumbersaswellOBJECTMODULECEDIN thetimeanddateofASSEMBLERINVOKEDBY:C:\C51\BIN\A51.EXESAMPLE.A51 LOC LINE theassembler (`Test andtheobjectfile 4567SEGMENT89CSEGATThelistingfileincludeslinenumberfor0000FReset:JMPRSEG;0000F;Thisisthemainprogram.ItisanIfasourceline;loopwhichdisysatextonthecode,theHEXvalues0003C200CLRTXTBIT;readfrom0005FRepeat:MOVofthe0008FFSJMP;RSEGTXTDB扵ESTErrormessagesFDincludedinthelisting000CThepositionofeachisclearly;TXTBIT=0readfromDBIT;TXTBIT=1readfrom TheXREFNAME TYPEVALUE ATTRIBUTES/REFERENCES BITVAR......BSEG0001HREL=UNIT9# CONST......CSEG000DHREL=UNIT8# INITSERIAL.....CADDREXT4# symbolsandthePROG.......CSEG0010HREL=UNIT7# numbersinwhichtheyPUTSTRING.....CADDREXT4# PUT_CRLF.....CADDREXT4# wherethesymbolREPEAT......CADDR0005HRSEG=PROG22# definedismarkedwithRESET......CADDR0000HA13# SAMPLE......NNUMB CADDR0000HRSEG=PROG13TXT........CADDR0000HRSEG=CONST22 TheregisterbanksTXTBIT......BADDR0000H.0RSEG=BITVAR552133# warningsanderrors statedattheendofASSEMBLYCOMPLETE.0WARNING(S),0 listingBL51代碼連接/將一個或多個目標模塊組合成一個可執(zhí)行的8051程序連接器還解析外部和其它共用的并將絕對地址分配給浮動的程序段BL51代碼連接/處理由KeilC51編譯器和A51匯編器以及InPL/M-51編譯器和ASM-匯編器所創(chuàng)建的目標模塊BL51自動選擇所需要的合適的庫和連接BL51連接器通過不相關的函數(shù)變量管理8051有限的內(nèi)部器對大多數(shù)8051應用系統(tǒng)來說極大地降低了所需要的空間BL51分析函數(shù)間的并實現(xiàn)器的可以使用OVERLAY命令人為地控制函數(shù)使用NOOVERLAY可以完全器當使用間接調(diào)用函數(shù)或調(diào)試時使用這些命令是很有BL5164K的應用程序由于805164K字節(jié)的代碼地址空間必須8051軟件進行控制該處理稱作代碼空間切換BL51可讓用戶管理一個公共區(qū)域和32個區(qū) 每個區(qū)最多可達64K字節(jié)總共高達2M字節(jié)的空間支持外部硬件的軟件包含一個短的匯編文件用戶可在專門的硬件平臺上編輯BL51使用戶可在指定的區(qū)域放置特定的程序模塊謹慎地使用不同區(qū)域的分組函數(shù)可使用戶創(chuàng)建區(qū)切換程序中的公共區(qū)域是一個所有區(qū)隨時可的區(qū)域 或移動公共區(qū)域的代碼在每個區(qū)或位于一個單獨的EPROM區(qū)如果公共區(qū)域沒有交換 默認情況下下列為自動代碼區(qū)由額外的軟件控制地址線進行選擇這些地址線是由8051I/O口線或器映射鎖存器進行模擬BL51在其它代碼區(qū)中產(chǎn)生一個函數(shù)跳轉表當調(diào)用不同的區(qū)的函數(shù)時程序?qū)^(qū)進行切換跳轉到所需要的函數(shù)并在調(diào)用完成后回到原來的區(qū)切換處理大約需要50個CPU周期和額外的兩個字節(jié)堆??臻g通過同一區(qū)中互相關聯(lián)的函數(shù)可提高系統(tǒng)的性能多個區(qū)頻繁調(diào)用的函數(shù)應當放置在公共區(qū)域下面的例子為由BL51 07/01/9508:00:00PAGE TheBL51codeMS-DOSBL51BANKEDLINKER/LOCATERV3.52, INVOKEDBY: filewiththetimeanddate thelink/locate C:\C51\LIB\C51S.LIB(PUTCHAR)C:\C51\LIB\C51S.LIB(GETCHAR)C:\C51\LIB\C51S.LIB(TOUPPER)C:\C51\LIB\C51S.LIB(_GETKEY)LINKMAPOFMODULE: SAMPLE(SAMPLE) Thelink-mapcontainsatable LENGTHRELOCATIONSEGMENTNAME ofthememoryusageofthe********** DATA MEMORY ************ "REGBANK0" ***GAP ***GAP*** ********** CODE MEMORY ************ OVERLAYMAPOFMODULE:SAMPLE +-->CALLED structureoftheprogram thelocationofthebitand segmentsofeach+--> +-->+-->+-->?PR?GETCHAR?GETCHAR arelistedattheendof+--> 0WARNING(S),0 duringthelink/locateOC51目標文件轉換器為在目標模塊中的每個代碼區(qū)創(chuàng)建絕對目標模塊當用戶創(chuàng)建一個區(qū)切換應用時BL51產(chǎn)生目標模塊符號調(diào)試信息到絕對目標文件中并可供dScope或仿真器使用戶可使用OC51目標文件轉換器創(chuàng)建絕對目標模塊OH51目標-HEXInHex文OH51目標HEX轉換器從絕對目標模塊中創(chuàng)建InHex文件而絕對目標模塊可由BL51或OC51創(chuàng)建InHex文件是ASCII文件包含了應用程序的16進制表達式將它們裝入器件編程器就可寫EPROMLIB51庫管理器可使用戶創(chuàng)建和保存庫文件庫文件提供簡便的方法可組合和大量的目標文件BL51可有效地使用庫文件庫管理器可使用戶創(chuàng)建一個庫文件將目標模塊加入庫文件從庫文件中移去目標模塊和列出庫文件的內(nèi)容庫管理器dScope-51WindowsdScope-51是一個源級的調(diào)試器和模擬器 可調(diào)試/模擬由KeilC51編譯器和A51匯編器以及PL/M-51編譯器和ASM-51匯編器所創(chuàng)建的程序 dScope-51是一個純軟件產(chǎn)品它可使用戶在沒有目標硬件的情況下模擬8051的特性 用戶可在硬件準備之前用dScope-51調(diào)試自己的嵌入式應用程序dScope-51可模擬許多8051的功能包括內(nèi)部串行口外部I/O口和定時器dScope-51請參考dScope模擬/調(diào)試器概述Vision/51WindowsVision/51是一個集成的軟件開發(fā)平臺包括全功能編輯器項目管理器程序生成工具和環(huán)境控制當用戶使用Vision/51時就不再需要學習任何一個工具令語句Vision/51提供以下特性可加速標準Windows如何使用Vision/51參考VisionIDE概述80518051產(chǎn)品系列Keil提供一個評估磁盤裝有一個演示程序和工具的限制版演示程序也包含在標準的產(chǎn)品套件中該章介紹了Vision和dScope 并演示如何使用它們進行編譯連接和運行所給的演示程序該章 建立和運行演示程序建立和運行演示程序本章中的演示程序和描述使用Windows版工具作為圖解C51C51評估套件所分配的工具相同如果想得到DOS版的評估套件請和銷售商聯(lián)系注C51評估套件包括8051工具的評估版本評估工具在功能和應用程序的代碼規(guī)模上受到限制請參考評估套件說明 參考第三章8051產(chǎn)品系列VisiondScopeWindows版應用程序通過雙擊由安裝程序創(chuàng)建的程序組中對應的VisionIDEVision是一個集成軟件開發(fā)平臺其中包含了編輯器項目管理器和程序 Vision支持所有的Keil8051,251和166工具Vision提供以下特性幫助用戶加快嵌入式應用的開發(fā)過程在Vision中用戶可通過鍵盤或鼠標選擇開發(fā)工具的菜單命令 設置和選項也可使用鍵盤輸入Vision屏幕提供一個用于命令輸入的菜單條一個可迅速選擇命令按鈕的工具條和一個或多個源程序窗口框及顯示信息Vision可同時打開和查看多個源文件 息通過鼠標或鍵盤可移動或調(diào)整窗口大小Vision自帶的編輯器可定制成和許多流行的文本編輯器相似對幾乎所有編輯器用戶都可改變鍵配置下面列出了一些可實現(xiàn)的編輯器功能BeginningofNextBeginningofEndofOpenBeginningofEndofPageEndofPageCloseExclusivePastefromCopytoForwardQuickPreviousCursorForwardRePreviousCursorFullPrintCursorInsertTemRepeatLastCursorMarkReverseQuickCuttoMarkMarkDeleteDeletetoEndofMove/ResizeNew可以通過菜單條上的下拉菜單和編輯器命令控制Vision的操作可使用鼠標或鍵盤選取菜單條上 編輯器操作項目保存外部程序執(zhí)行開發(fā)工具選項設置窗口選擇及VisionC51A51匯編器等軟件開發(fā)工具的選項使用鼠標或鍵盤可選擇相應的 件需要用C51編譯器進行編譯一些文件需要匯編還有一些需要自定義轉換以創(chuàng)建一個目標程序為了適應復雜的項目管理Vision帶有項目管理功能項目管理器可使用戶創(chuàng)建和保存一個項目 文件相關性包含文件嵌套和建立目標 然后使用模擬和仿真器命令執(zhí)行測試和調(diào)試應用程序項目的所有特征都保存在項目文件中項目文件包括組成目標程序的源文件編譯器匯編器和連接器命令行選項調(diào)試和模擬器選項制造工具選項dScopeKeil軟件產(chǎn)品系列的源級調(diào)試/模擬器dScope調(diào)試應用程序此外dScope還可調(diào)試InPL/M-51編譯器和ASM-51匯編器生成的應用程序dScope8051微控制器的特性而不需要目標硬件用戶可在硬件準備好之前使用dScope測試和調(diào)試嵌入式應用系統(tǒng)dScope可模擬許多8051的功能包括內(nèi)部串行口外部I/O口和定時器通過使用動態(tài)連接庫DLLs可支持不同的8051派生器件除了模擬CPU外dScope還具有8051程序MON51接口界面dScope中用戶可使用鍵盤或鼠標選擇菜單命令和調(diào)試選項dScope屏幕還提供一個用于命令輸入的菜單條一個可快速選擇命令按鈕的工具條和幾個顯示寄存器器內(nèi)dScope8051微控制器可通過使用DLLsCPU在裝入目標程序之前必須從工具條上的CPU驅(qū)動器框中選擇合適的CPU驅(qū)動器也可從文件菜單中選擇裝入CPU驅(qū)動器命令下面是dScopeCPU驅(qū)動器CPU8051,8031,80C51,and80C515and80C515Aand80C517and80C517Aand8052,8032,80C52,and8xC750,8xC751,anddScope最多可模擬16M字節(jié)的器這些器可讀寫或代碼執(zhí)除了器映象之外dScope還提供集成功能的支持CPU的片內(nèi)DLLCPU驅(qū)動器支持 CPU驅(qū)動器之后用戶準備裝入目標程序可使用工具條上的按鈕打開目標文件或當應用程序裝入之后dScope調(diào)試窗口就顯示出用戶的 ViewHigh ViewMixed. ViewAssembly. 除了目標程序外調(diào)試窗口還可顯示最多512條先前執(zhí)行命令的歷史記錄 要使能歷史記錄選用鍵盤和鼠標選擇選項來輸入命令控制dScope 在窗口中可輸入幾乎所有的dScope命令在命令提示符> 從命令窗口還可顯示和改變變量寄存器和器位置還可輸入?yún)R編代碼補充或測試部分程序例如可在命令提示符后輸入下列文本命令R7=12index=dScope是不受限制的也可用鼠標從從菜單條中選擇下拉式菜單和從工具條調(diào)dScopeCPU輸出的串行數(shù)據(jù)顯示在該窗口中在CPU這使用戶不需要外部硬件就可模擬CPUUART功能 性能分析器窗口顯示每個函數(shù)的名稱或每個模塊的范圍還帶有一個條狀圖顯示在函數(shù)或模塊上占用的時間比率用戶可選擇一個函數(shù)觀察在窗口底部的統(tǒng)計數(shù)據(jù)下面所示為每個函數(shù)或程序塊min max avg total 除了上述特征以外dScope還提供許多其它功能支持調(diào)試環(huán)境dScopeCdScope函數(shù)操作片內(nèi)功能dScope的擴展命令集以及產(chǎn)生輸入到硬件口的數(shù)字和模擬信號dScope可實 產(chǎn)生輸入到8051功能的信 提供可用于用戶或信號函數(shù)的便利的應用程序例如printf和memset參考信號函數(shù)一節(jié)了解如何使用dScope中的函數(shù)在高級語句匯編器指令和條件表達式中可方便地設置斷點 或指令雙擊即可當dScope到達一個斷點時可自動執(zhí)行寬范圍的操作探針以運行宏函數(shù)dScope提供將已執(zhí)行的代碼行進行標注的代碼覆蓋功能在調(diào)試窗口中已執(zhí)行的代碼行左邊標 可使用該功能代碼覆蓋框還 具此外用戶還可將演示程序用于自己的應用程序 下每個演示程序和項目文件以及批處理文件存放在一個單獨 下這樣可幫助用戶迅速建立和評估每個演示程序 A51是一個用于A51BADCODE是一個帶有一些語法錯誤的演示程 使用Vision打BADCODE.PRJ項目文件并進行編譯Vision將BADCODE.C中的每個誤詳見BADCODEBL51_EX1是一個用C寫成的區(qū)切換程序該演示程序調(diào)用不同代區(qū)的函數(shù)使用BL51_EX1.PRJBL51_EX2C程序BL51_EX2.PRJBL51_EX3是一個代碼區(qū)切換程序模塊使用BL51_EX3.PRJBL51_EX4是一個調(diào)用不同區(qū)內(nèi)函數(shù)的代碼區(qū)切換的 PL/M-51程序該PL/M-51格式BL51_EX1相同BL51_EX3.PRJ立該程序需要使用 CSAMPLE是一個簡單加減法計數(shù)器的演示程序可使用CSAMPLE.PRJDHRY是一個DHRYSTONE基準程序計算并在主CPU每秒顯示一次數(shù)該程序主要提供給基準者使用DHRY.PRJ項目文件建立該程FIBfibonacci數(shù)并指導用戶如何使用再入函數(shù)屬性說明遞歸函數(shù)使 O是一個嵌入式8051C程序使 LSIEVEEratosthenesprime給基準者使用LSIEVE.PRJ項目文件建立該程MEASURE是一 模擬和數(shù)字數(shù)據(jù)的C程序它模擬一個可能建立在氣 系統(tǒng)使用MEASURE.PRJ項目文件建立該序詳見有關章節(jié)RTX_EX1RTX-51進行一系列多任務處理使用RTX_EX1.PRJRTX_EX2RTX-51應用使用RTX_EX2.PRJSAMPL51780C517RPN-1型計算器使SSIEVEEratosthenesprime給基準者使用SSIEVE.PRJ項目文件建立該程TDP程序演示如何將中斷驅(qū)動串行I/O口和由中斷驅(qū)動定時器驅(qū)動的時TDP.PRJTRAFFICRTX-51實時執(zhí)行程序控制交通燈使用WHETS是一個WHETSTONE基準程序計算并在主CPU每秒顯示一次dhrystone數(shù)使用WHETSTONE.PRJ要開始使用其中某個演示程序必須進入到每個例子所在的 然后可使用所提供的DOS批處理文件或VisionWindows版項目文件建立和測試演示程序 O8051C演示程序O位于\C51\EXAMPLES\ 下O實現(xiàn)的功能僅僅是從串行口輸 oWorld 整個程序包含在單個源文件O.C中如下所示Copyright1995KEILSoftware,#pragmaDEBUGOBJECTEXTEND /*pragmalinescan /*commandline #include /*specialfunctionregister /*fortheintended8051 #include /*prototypedeclarationsforI/Ofunctions/*mainprogramvoidmain /*executionstartshereafterstack SCON= /*SCON:mode1,8-bitUART,enable TMOD|= /*TMOD:timer1,mode2,8-bit TH1= /*TH1:reloadvaluefor2400 TR1= /*TR1:timer1 = /* setTItosendfirstcharof printf o /*the`printf`function while(1) /*Anembeddedprogramdoesnotstop ;/*... /*neverreturns.We`veusedan /*loop.Youmaywishtoputinyour /*codewerewe`veprintedthedots(.. 連接及調(diào)試一個程序這些操作可以通過批處理文件 O的硬件基于標準8051CPU片內(nèi)功能僅使用了串行口由于dScope可以模擬該程序所需要的硬件因此用戶不需要目標CPU在Vision中應用都保存在項目文件中項目文件包括了所有與項目有關的源文件名并告知工具如何編譯匯編和連接以產(chǎn)生一個可執(zhí)行的目標程序一個名為 O.PRJ的文件已創(chuàng)建出來用于O要裝入該項目文件選擇項目菜單的打開命令并從\C51\EXAMPLES\ O目錄下選擇O.PRJ編輯 Vision出現(xiàn)一個打開文件框從文件 O.C并按下OK按鈕Vision在一個窗口裝入并顯示O.C編譯和連接BuildAll按鈕或者選擇項目菜單中建立項目命令Vision開始編譯和連接項目中的源文件并創(chuàng)建一個絕對目標模塊可將其裝入dScope進試在建立過程中Vision在窗口中顯示狀態(tài)當建立完成時Vision O程序編譯和連接之后用戶可使用dScope調(diào)試/模擬器進試在Vision中從菜單中選擇DS51模擬器命令并當dScope命令參數(shù)框顯示時按 O.INI傳遞給dScope該文件包含用于裝入CPU驅(qū)動器DLL dScope命令dScope裝入時運行 O程序在調(diào)試窗口中單擊Go按鈕或在命令提示符下輸入g O程序執(zhí)行并在 oWorld”在O輸 o 之后程序就進入死循環(huán)若要終止執(zhí)行單擊調(diào)試窗口中的按鈕或鍵入Ctrl+C 在終止程序后可鍵入exit退出dScope調(diào)試器單步運行O使用調(diào)試窗口中的Step按鈕可單步運行O程首先確認復位CPU驅(qū)動器終止程序模擬運行reset8051CPUg,mainC函數(shù)時停止要單步執(zhí)行程序單擊調(diào)試窗口中的StepOver按鈕每按一次執(zhí)行一條語句當前執(zhí)行的指令總是處于高亮狀態(tài)它隨著指令的執(zhí)行而向下移動如果一直按著StepOver按鈕程序就一直運行下去用戶可隨時退出dScope終止O的執(zhí)行并在命令提示符下輸入exit即可退出MEASURE一個測量系MEASURE演示程序位于\C51\EXAMPLES\MEASURE\子下MEASURE運行一個收集模擬及數(shù)字信號的測量系統(tǒng)例如氣象站和過程控制應用中的系統(tǒng)MEASURE由三個源文件組成GETLINE.CMCOMMAND.CMEASURE.CMEASURE記錄兩個8位數(shù)字口和4個模擬輸輸入的數(shù)據(jù)定時器控制采樣率采樣間隔可1608K字節(jié)的RAM緩沖區(qū)MEASURE80516CPU該微控制器提供模擬和數(shù)字輸入功能口45用作數(shù)字輸入AN0AN3用作模擬輸入由于dScope模擬了該程序所需要的所有硬件功能因此不需要CPUMEASURE的項目文件名為 要裝入該項目文件選擇項目菜單的打開命令并\C51\EXAMPLES\O下選擇O.PRJ打開從項目菜單中選擇EditProject命令將顯示項目管理器框項目管理器框顯示MEASURE項目所包含的源文件 C0中斷子程序主函數(shù)初始化80517的所有功能并執(zhí)行系統(tǒng)的處理命令定時器0中斷子程序管08051 該源文件處理顯示時間和間隔命令這些功能從主函數(shù)調(diào)用顯示命令0.00V5.00V之間電壓的浮點格式值 要從項目管理器框中打開一個源文件雙擊文件名即可要關閉項目管理器框按CancelBuildAll按鈕或者選擇項目菜單中建立項目命令Vision開始編譯和連接項目中的源文件并當建立完成時顯示建立完成信息編譯和連接完成后就可開始測試MEASURE演示程序dScopeMEASUREMEASURE演示程序設計成從片內(nèi)串行口接受命令如果有實際的目標硬件可使用主計算機或啞80517CPU進行通訊如果沒有目標硬件可使用dScope模擬硬件也可使用串行窗口提供串MEASURE程序結束編譯和連接之后可使用dScope進試在Vision中選擇DS51模擬器命令在出現(xiàn)框后按Enter鍵VisiondScope的初始化文件自動加載到CPUMEASURE程序dScope顯示下面MEASURE支持的串行命令如下表所示這些命令由ASCII碼文本字符組成所有令必須以CDT設置當前時間24I設置測量采樣的間隔時 間隔時間必須 1ms到 60分鐘之S啟動測量記錄在收到啟動命令后顯示測量數(shù)據(jù)read顯示的數(shù)量如果未指定數(shù)量read所有記錄的測量值1秒讀出測量值否則QMEASURE演示程序配置了所有調(diào)試信息其中包括全局和局部符號行號和高級類型信息要看到這些信息單擊工具條上的SymbolBrowserLocalsradio按鈕dScope支持使用鼠標拖曳的方式 符號用鼠標將idx符號從符號瀏覽窗口拖曳到命令窗口選擇命令窗口并回車dScope顯示idx的值通過選擇空間過濾器可過濾顯示的符號如果清除數(shù)據(jù)檢查框數(shù)據(jù)區(qū)內(nèi)的所有符號 的字符顯示鍵入I* 單擊Apply按鈕dScope在器窗口顯示HEX和ASCII碼 單擊工具條上的Memory按鈕打開器窗口 命令窗口輸入想要查看的地址范圍例如 X:0x0000,X:由于器窗口不能立即顯示整個器范圍 圍由指定的地址范圍決定該例為0x0000到0xFFFF區(qū)區(qū) I:0x0000,I:當應用程序運行時dScope可動態(tài)地更新器窗口要打開動態(tài)更新從Setup菜單選擇UpdateMemory窗口命令當檢查UpdateMemory窗口時動態(tài)顯示使能dScope調(diào)試窗口的模式單擊工具條上的Debug按鈕打開調(diào)試窗口然后打開調(diào)試窗口的CommandsViewHighlevel,ViwMixedViewAssembly例如ViewMixed改變?yōu)樵次腗EASURE程序之前使用工具條上的Debug,RegisterSerial按鈕顯示調(diào)試寄存器和串行窗口如果屏幕不夠大可關閉其它窗口從工具條上選擇ResetdScopeCommandsViewMixed命令StepInto按鈕StepInto按鈕可單步執(zhí)行程序并進入函數(shù)調(diào)用多次重復按下StepInto按鈕將循環(huán)CPU片內(nèi)要跳過初始化代碼并直接進入主函數(shù)選擇命令窗口并輸入G dScope執(zhí)行啟動代碼并當前光標行是指標記當前匯編或高級語句的行可使用鍵盤或鼠標移動該行dScope允許將當前光標行作為一個臨時斷點使用該特性可跳過程序中的代碼例如用戶可跳過初始化代碼并停止在主函數(shù)調(diào)用的前一條指令可使用下列兩種方式之一來實現(xiàn)Variant1LJMPmainGoTilCurs按鈕dScopeVariant2LJMPmain指令處雙擊鼠標右鍵可選擇當前光標行dScopePC啟動并運行單擊調(diào)試窗口中的StepInto按鈕dScope跳轉到MEASURECommand菜單中選擇ViewHighlevel 令單擊StepInto按鈕并當程序計數(shù)器行向下移動時進行觀察注StepOverStepInto很相似StepOverStepOut 顯示[BRn]標號如果在 1這條語句設置斷點調(diào)試窗口如下所Go按鈕dScope開始執(zhí)行程序并在到達斷點時停止要去掉斷點雙擊設置斷點的行dScopeCallStack窗口可隨時觀察函數(shù)嵌套按下工具條上的CallStack按鈕顯示CallStack窗口該框列出了當前所有嵌套的函數(shù)每行包含嵌套級數(shù)調(diào)用函數(shù)的dScopePeripheral菜單觀察和改變輸線的狀態(tài)或在命令窗口輸入I/O的值下面所示為在命令窗口輸入命令改變口的值 將數(shù)字輸3設為 將模擬輸AIN1設為3.3伏dScope允許用戶建立信號函數(shù)作為數(shù)字或模擬輸入信號要裝入信號函數(shù) 該命令裝入文件OG.INC 該文件定義一個信號函數(shù)用于調(diào)整模擬通道0的模擬輸入值函SIGNAL og0(float{floatprintf OG0(%f)ENTERED\n",limit)while /*forevervolts=0while(volts<= ain0=volts /*oginput-0twatch(30000); /*30000CyclesTime-Break*/volts+=0.5; /*increasevoltage*/}volts=limit-0.5;while(volts>=0.5) ain0=voltstwatch(30000); /*30000CyclesTime-Break*/volts-=0.5 /*decreasevoltage}}} G 選擇串行窗口并輸入DEnter 就可以觀察到模擬輸入的信號從0 5V間變化在調(diào)試到達斷點時用戶一般都想得到在斷點處諸如寄存器值和其它一些細節(jié)的信息 dScope為要使能記錄選擇Commands菜單中的RecordTrace命令打開指令記錄當記錄使能時dScope512條匯編指令和寄存器內(nèi)容以MEASURE程序為例開始運行MEASURE程序單擊調(diào)試窗口中的Go按鈕并選擇串行窗口MEASURECommandd輸入此命令后MEASURE開始顯示測量值單擊調(diào)試窗口中的Stop按鈕可立即終止程序的執(zhí)行單擊ViewTrace按鈕觀察緩沖 歷史記錄行以負數(shù)開始緩沖器的記錄為- 當緩沖器已滿時最 容注在觀察緩沖器之前必須停止程序的執(zhí)行觀察點用于觀察簡單變量結構和數(shù)組的內(nèi)容用戶可使用Watchpoints框設置觀察點從下面的步驟教您如何定義兩個觀察點int 在Expr輸入行鍵入sindex并單擊Definecurrent在Expr輸入行鍵入current并選擇Multiple按鈕在單獨的行顯示結構成員再單擊Definewatch按鈕sindex的值在單獨行內(nèi)顯示第二個觀察點current產(chǎn)生較多輸出在單獨行顯示的結構成員縮進以反映嵌套的級數(shù)最后幾行顯示保存在 og數(shù)組中的數(shù)據(jù)觀察窗口在每次命令StepInto,StepOut或Go執(zhí)行結束時更新用戶Setup菜單中的UpdateWatchWindow命令將dScope配置為程序執(zhí) 執(zhí)行斷點是最簡單的形式一個函current.time.sec結構3時如何停止程序的執(zhí)行從Setup菜單選擇Breakpoints命令顯示斷點框在表達式輸入行輸入current.time.sec= Count輸入行輸入1 選擇寫檢查框該選項指定當表達式寫入時僅作為斷點測試完成以后單擊Define按鈕設置斷點按下列步驟測試斷點條件MEASURE演示程序Go在MEASURE在幾秒鐘后dScope停止運行調(diào)試窗口中的程序計數(shù)器行標志產(chǎn)生斷點所在的行dScopedScope使用的地址范圍或一個函數(shù)如要進行時序分析在命令窗口輸入以下命令PAmainPAtimer0PAclear_recordsPAmeasure_disyPAsave_current_measurementsPAread_indexRESET /*InitializePASetup菜單中的SetupPerformanceyzer命令創(chuàng)建或觀察范圍使用工具條上的按鈕打開性能分析器窗口顯示以上定義的地址范圍<unspecified>行累加定SEnterD BADCODE FileOpenBADCODE.CProjectCompileFile命令編譯該文件在編譯完成后Vision確定文件中有錯誤并顯示一個錯誤信息窗口供用戶閱讀 當光標在行之間移動時源程序Keil8051的軟件開發(fā)當前ProROMEPROMProROM是一個EPROM仿真器通過它將PC的并行口和目標硬件的ROM插座相連使用ProROMEPROM仿真器可以迅速開發(fā)并測試你的嵌入式目標程序?qū)?4K字節(jié)程序到ProROM中只需數(shù)秒在軟件反復操作時不需要花費幾分鐘時間等待EPROM編程器和擦除器ProROM帶有一個裝載器程序使二進制或十六進制文件更容易此外還可以使用帶VisionProROM使開發(fā)周期實現(xiàn)自動化28腳DIPRTX-51實時操作系統(tǒng)是一個多任務處理內(nèi)核用于8051系列微控制器它簡化了的對時間以下為RTX-51RTX-51Full4個任務優(yōu)先級RTX-51Full和中斷函數(shù)以并行方式工作可使用一個郵箱系統(tǒng)在任務間傳遞信號和信息從器庫中可分配和釋放器還可強制一個任務等待另一個任務或中斷產(chǎn)生中斷定時溢出信號或信息RTX-51Tiny是RTX-51Full的子集RTX-51Tiny不需要外部數(shù)據(jù)器就可運行在單片系統(tǒng)上RTX-51TinyRTX-51Full的許多特性該章余下部分將RTX-51FullRTX-51TinyRTX-51不同之處在應用處說明許多微控制器的應用要求同時進行多任務或工作的執(zhí)行RTOS對系統(tǒng)資源CPU器等等進行靈活的安排RTX-51功能強大且簡單易用可用于8051派生器件CRTX-51程序然后使用C51對其進行編譯為了指定任務ID和優(yōu)先級數(shù)偏離標準CRTX-51程序還需要包含實時可執(zhí)行頭文件使用BL51代碼庫連接/RTX-51庫文件C程序從主函數(shù)開始執(zhí)行在嵌入式應用中續(xù)執(zhí)行的單任務intcounter;voidmain(void){counter=while(1) /*repeatforever /*incrementcounter}}CRTOS的循環(huán)偽-多任務處理模式在該模式中任務或函數(shù)從一個死循環(huán)中循環(huán)調(diào)用例如intcounter;voidmain(void){counter=0while(1) /*repeatforevercheck_serial_io()process_serial_cmds(); /*processserialinput*/check_kbd_io();process_kbd_cmds() /*processkeyboardinputadjust_ctrlr_parms() /*adjustthecontrollercounter++ /*incrementcounter}}RTX-51執(zhí)行循環(huán)多任務處理允許幾個循環(huán)或任務準并行執(zhí)行任務并不同時執(zhí)行而是按時間分段執(zhí)行有效的CPURTX-51將時間段分配給每個任務每個任務允許執(zhí)行預定數(shù)量的時間然后RTX-51切換到另一個任務運行時間段非常短通常僅有幾個毫秒因此任務看RTX-518051的硬件定時器提供的產(chǎn)生周期性中斷用作驅(qū)動RTX-51時鐘RTX-510 RTX-51Full函數(shù)人為地啟動RTX-RTX-51應用僅使用循環(huán)任務排程該程序中的兩個任務都是簡單的計數(shù)器循環(huán)RTX-51job00job1job0執(zhí)行一會兒后RTX-51job1job0該處理過程無限重復下去intcounter0;intvoidjob0(void)_task_{os_create/*marktask1asreadywhile(1)/*loopforever/*updatethecounter}}voidjob1(void)_task_{while(1)/*loopforever/*updatethecounter}}51在等待一個任務段結束時可使用os_wait函數(shù)向RTX-51發(fā)出信號使其可以開始執(zhí)行另一個任務的執(zhí)行該函數(shù)暫停當前任務并等待產(chǎn)生指定的 在該時間里可執(zhí)行任何其它的任務使用os_wait函數(shù)等待的最簡單的是RTX-51時鐘報時信號中的超時周期該類型的可用50ms檢查一次切換#include<rtx51tny.h>intcounter0;intvoidjob0(void)_task_0os_create /*marktask1asreadywhile(1) /*loopforevercounter0++ /*updatethecounteros_wait(K_TMO,3) /*pausefor3clockticks}}voidjob1(void)_task_1while(1) /*loopforevercounter1++ /*updatethecounteros_wait(K_TMO,5) /*pausefor5clockticks}}在上面的例子中job0job1counter01之后job0os_wait函數(shù)暫停3個報時信號此時RTX-51job1counter11之后job1os_wait函5個報時信號現(xiàn)在RTX-51job0之前只有進入3個報時信號過去3個報時信號counter015個報時信號counter1在等待另一個任務的信號或二進制信號時可使用os_wait函數(shù)暫停一個任務這可用于協(xié)調(diào)0任務暫停直到信號發(fā)送出去為止如果當任務查詢信號時信號標志已經(jīng)為1標志且任務繼續(xù)執(zhí)行如下面程#include<rtx51tny.h>intcounter0;intvoidjob0(void)_task_{os_create(1)while(1)/*marktask1asready/*loopforeverif(++counter0==0) /*updatethecount
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 11 Lesson 2 Function and Pronunciation教案2024-2025學年仁愛科普版英語七年級下冊
- 小學語文課外提高試題及答案
- 行業(yè)標準對二手車評估的指導作用試題及答案
- 寧夏青銅峽市高中化學 第三章 水溶液中的離子平衡 3.3 鹽類的水解教學設計 新人教版選修4
- 計算機基礎考試典型案例試題及答案
- 中秋月餅我會做(教案)-2024-2025學年三年級上冊勞動人民版
- 美容師專業(yè)機構選擇與合作策略題及答案
- 四年級思想與社會上冊 鄉(xiāng)風鄉(xiāng)俗教學設計 北師大版
- 音樂劇歌劇魅影觀后感8篇
- 善用言語溝通 (教學設計)2023-2024學年初三下學期教育主題班會
- 2024全球感染預防與控制報告
- 第二單元+新音樂啟蒙+課件【高效課堂精研】高中音樂粵教花城版必修音樂鑒賞
- 2024年云南省昆明市五華區(qū)小升初數(shù)學試卷
- 2025年全球創(chuàng)新生態(tài)系統(tǒng)的未來展望
- 體育業(yè)務知識培訓課件
- 《淞滬會戰(zhàn)》課件
- 《社區(qū)共治共建共享研究的國內(nèi)外文獻綜述》4300字
- 軟件代碼審計與測試作業(yè)指導書
- 上消化道出血護理疑難病例討論記
- 城市軌道交通自動售票機
- 環(huán)境設計專業(yè)考察課程教學大綱
評論
0/150
提交評論