freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

最新keilμvision4集成開發(fā)環(huán)境與c語言程序設計(編輯修改稿)

2025-08-03 15:00 本頁面
 

【文章內容簡介】 況下,首先使用軟件模擬仿真調試,通過之后,再用硬件仿真器或者直接下載到MCU中進行在線仿真調試。由于軟件模擬仿真調試與在線仿真調試方法基本相同,所以就以軟件模擬仿真調試為例,介紹程序的調試方法。為了對前面編寫的程序能夠在不連接硬件仿真器或者MCU的情況下進行仿真調試(即軟件模擬),需對Keil μVision4做一下設置?!癘ptions for Target ‘Target 1’…”對話框,選中“Debug”頁,如圖A18所示。一般情況下,如果沒有進行硬件仿真,則“Use Simulator”單選框是默認選中的,此時,進行軟件模擬調試,其它選項不做修改;否則,則選中“Use:”單選框,并在其下拉框中選擇相應的硬件驅動,并點擊“Settings”按鈕對目標仿真硬件進行設置。圖A18 設置“Options for Target ‘Target 1’…”對話框中的“Debug”頁通過以上設置,就可以進行軟件模擬調試了。單擊工具欄中的“Start/Stop Debug Session”按鈕,或者從“Debug”菜單中選中“Start/Stop Debug Session”項(其快捷鍵為Ctrl+F5),開始模擬調試過程。在調試過程中,可以進行如下操作:單擊工具欄中的按鈕,或者“Debug”菜單中的“Run”(快捷鍵F5),可以使程序全速運行。當程序全速運行時,可以單擊工具欄中的按鈕,或者“Debug”菜單中的“Stop”,使程序停止運行。當程序運行過一次以上后,累加器A、某些寄存器或者其它資源的值修改了,而再次運行需要恢復到初始狀態(tài),這時就需要執(zhí)行復位CPU的命令。單擊工具欄中的按鈕,或者“Debug”菜單中的“Reset CPU”,可以使MCU恢復到初始狀態(tài)。單擊工具欄中的按鈕,或者“Debug”菜單中的“Step”(快捷鍵F11),可以執(zhí)行一行程序。如果遇到函數(shù)調用,則進入函數(shù)內部并單步運行。單擊工具欄中的按鈕,或者“Debug”菜單中的“Step Over”(快捷鍵F10),可以執(zhí)行一行程序。如果遇到函數(shù)調用,則將函數(shù)調用看做一行程序運行,不進入函數(shù)內部運行。這種情況出現(xiàn)在單步運行后進入到函數(shù)內部運行程序,通過單擊工具欄中的按鈕,或者“Debug”菜單中的“Step Out”(快捷鍵Ctrl+F11),以運行到當前函數(shù)的結束。單擊工具欄中的按鈕,或者“Debug”菜單中的“Run to Cursor Line”(快捷鍵Ctrl+F10),可以執(zhí)行到光標所在的程序行。在要設置斷點的程序行上雙擊鼠標左鍵,或者單擊工具欄上的按鈕,或者“Debug”菜單中的“Insert/Remove Breakpoint”(快捷鍵F9),可以在當前行上插入或者刪除斷點。只要在當前行上設置了斷點,則在當前行的最左邊顯示一個紅色的小方塊。連續(xù)運行程序后,執(zhí)行到該行時,程序會暫停運行。此時用戶可以查看程序運行的一些中間狀態(tài)和結果(累加器A、工作寄存器、SFR、數(shù)據(jù)存儲器等)。當進入調試狀態(tài)后,Keil μVision4集成開發(fā)環(huán)境中左側的項目管理器,變成寄存器查看器。如圖A19所示。用戶可以通過這個窗口觀察工作寄存器、部分SFR的內容。圖A19 觀察寄存器的內容在調試狀態(tài)中,在Keil μVision4集成開發(fā)環(huán)境中的右下側會出現(xiàn)如圖A20所示的窗口,即調用堆棧和變量查看窗口(使用C語言編程調試的時候常用)。圖A20 調用堆棧和變量查看窗口在圖A20中單擊Memory1選項卡則在在Keil μVision4集成開發(fā)環(huán)境中的右下側會出現(xiàn)如圖A21所示的窗口,即存儲器查看窗口。圖A21 存儲器查看窗口默認情況下,想查看內部RAM(片內數(shù)據(jù)存儲器)中的內容,需在“Address”編輯框中輸入“D:0”并按回車鍵即可。拖動窗口的左邊框可以調整窗口的大小,經(jīng)過調整,最佳的顯示范圍如圖A22所示。圖A22 片內數(shù)據(jù)存儲器查看窗口可以通過“View”菜單中的“Memory Windows”項,添加存儲器查看窗口,這樣可通過不同的窗口查看不同存儲器的內容。例如,可再增加一個窗口查看外部RAM中的內容。如圖A23 所示,在在“Address”編輯框中輸入“X:0”并按回車鍵即可。圖A23 片外數(shù)據(jù)存儲器查看窗口要改變某個地址單元中的內容,可在上面雙擊鼠標左鍵即可修改;或者在要修改內容的單元上單擊鼠標右鍵,彈出菜單,選擇“Modify Memory at …”修改。通過彈出菜單,還可修改進制、有符號數(shù)、無符號數(shù)、ASCII碼等“Address”編輯框一般輸入格式如下:X:XXXX其中X為:D,查看內部RAM;X,查看外部RAM;I,查看間接訪問的內部RAM;C,查看程序ROM。XXXX為:查看的起始地址(0000H~FFFFH)。單擊菜單“Peripherals”可選擇查看所選MCU集成的不同外部設備。例如:(1)“Interrupt”打開中斷向量表窗口,在窗口里顯示了所有的中斷向量。如圖A24所示。對選定的中斷向量可以用窗口下面的復選框進行設置。圖A24 中斷向量表窗口(2)“I/OPorts”:打開I/O端口(P0~P3)的觀察窗口,在窗口里顯示了程序運行時的端口狀態(tài)。可以隨時查看并修改端口的狀態(tài),從而模擬外部的輸入。例如,要查看P2口的狀態(tài),可打開P2口的觀察窗口,如圖A25所示。當運行到第10行時,則如圖A26所示。圖中標有“√”的復選框表示這一位的值是1,沒有的為0。對于不同的MCU,可能圖A2圖A26的顯示略有不同。圖A25 剛進入調試狀態(tài)時P2口的查看窗口圖A26 運行到程序行第10行時P2口的查看窗口(3)“Serial”:打開串行口的觀察窗口,可以隨時修改窗口里顯示的不同狀態(tài)。(4)“Timer”:打開定時器的觀察窗口,可以隨時修改窗口里顯示的不同狀態(tài)。除此以外,對于不同公司生產(chǎn)的MCU,在“Peripherals”菜單中會出現(xiàn)很多與該型號MCU相關的外部設備資源菜單項。掌握了上述的操作過程,就可以進行基本的程序調試工作了。只有不斷調試程序,才能逐步積累經(jīng)驗,增強對MCU的使用,做到靈活運用,熟練掌握。 Keil C51語言雖然MCU上使用的C語言都是直接針對具體硬件的,但任何一家公司開發(fā)的C語言,都必須符合ANSI C的標準,或者說,要與ANSI C兼容。因此,不論哪一家公司為MCU開發(fā)的C語言,其主要部分必然要與ANSI C保持一致,不同的只是非ANSI C的擴展部分,Keil C51也不例外。Keil C51是一個兼容ANSI C的編譯器,為了支持80C51系列MCU加入了一些擴展的內容。C51編譯器與ANSI C相比,擴展的內容包括:數(shù)據(jù)類型、存儲器類型、存儲模式、指針及函數(shù)(包括:定義函數(shù)的重入性、指定函數(shù)的寄存器組、指定函數(shù)的存儲模式及定義中斷服務程序)。閱讀本書的讀者請注意,本書沒有詳細介紹標準的C語言,只是介紹Keil C51對ANSI C的擴展。對于通用的C語言部分,如果需要,請查閱相關介紹C語言的教材。下面詳細介紹Keil C51對ANSI C的擴展部分。Keil C51編譯器支持的各種規(guī)格的數(shù)據(jù)類型列于表A8。除了這些數(shù)據(jù)類型以外,變量可以組合成結構、聯(lián)合及數(shù)組。表A8 KeilC51支持的數(shù)據(jù)類型數(shù)據(jù)類型位數(shù)字節(jié)數(shù)值范圍signed char81128到+127unsigned char810到255signed short16232768到+32767unsigned short1620到65535signed int16232768到+32767unsigned int1620到65535signed long3242147483648到+2147483647unsigned long324 0到4294967295 float324+38bit10或1sbit10或1sfr810或255sfr 161620或65535 數(shù)據(jù)表A1所列的數(shù)據(jù)類型中,關鍵字bit、 sbit 、sfr 和sfr16 等四種類型在ANSI C中是沒有的,是Keil C51編譯器中新增加的。其中,關鍵字bit用于操作80C51中的位尋址區(qū),而關鍵字sbit、sfr和sfr16用于操作80C51的特殊功能寄存器SFR。例如,下面的表達式: sfr P0 = 0x80。 /* 定義 80C51 P0 口的特殊功能寄存器 */ 聲明了一個變量P0,并且把它和位于0x80(80C51的P0口)處的特殊功能寄存器聯(lián)系在一起。bit 數(shù)據(jù)類型用于定義操作位尋址區(qū)的變量,可用于變量聲明、參數(shù)列表、函數(shù)聲明和函數(shù)返回值等。所有的 bit 變量存放在80C51 內部存儲區(qū)的位尋址區(qū)。因為這個區(qū)域只有16 字節(jié)長,所以最多只能聲明128個位變量。一個bit 變量的聲明與其它數(shù)據(jù)類型相似,例如:static bit gbFlag = 0。 /* 位變量 */ bit bFunc ( /* 位函數(shù) */ bit bFlag1, /* 位變量 */ bit bFlag2 ) /* 位變量 */{ ? ? return(0) /* 位返回值 */}bit 變量的聲明中,可包含存儲器類型。但是因為 bit 變量存儲在80C51的內部數(shù)據(jù)區(qū),只能使用data 和idata 存儲類型,不能使用別的存儲類型。例如: int data iBase。 /* 在在直接訪問數(shù)據(jù)區(qū)定義一個整型變量iBase */ char idata cAry[4]。 /* 在間接訪問數(shù)據(jù)區(qū)定義一個數(shù)組iBase */ bit mybit0 = iBase ^ 0。 bit mybit15 = iBase ^ 0。 bit bAry07 = cAry[0] ^ 7。 bit bAry37 = cAry [3] ^ 7。bit 變量和 bit 聲明有以下限制:(1)如果在函數(shù)中禁止使用中斷(pragma disable)或者函數(shù)中包含有明確的寄存器組切換(using n),則該函數(shù)不能返回一個位值。否則,在編譯時會產(chǎn)生編譯錯誤。(2)一個位不能被聲明為一個指針,如bit *bPtr。是錯誤的。(3)不能聲明使用一個 bit 類型的數(shù)組,如bit bArr[5];是錯誤的。sfr和C語言的其它類型變量聲明是一樣的。例如: sfr P0 = 0x80。 /* P0口,地址為80H */ sfr P1 = 0x90。 /* P1口,地址為90H*/ sfr P2 = 0xA0。 /* P2口,地址為0A0H */ sfr P3 = 0xB0。 /* P3口,地址為0B0H*/P0、PP2 和P3 是聲明的SFR名。在等號(=)后指定的地址必須是一個常數(shù)值不允許用帶操作數(shù)的表達式。標準的80C51系列支持SFR地址從0x80 到0xFF。Keil C51編譯器提供的sfr16數(shù)據(jù)類型,可以將兩個8位的SFR作為一個16位的SFR來訪問。訪問該16位的SFR只能是低字節(jié)跟著高字節(jié),即將低字節(jié)的地址用作sfr16聲明的地址。例如:sfr16 T2 = 0xCC。 /*定義Timer2的16位數(shù)據(jù)寄存器, TL2的地址為0CCH,TH2的地址為0CDH */在這個例子中,定時器T2的16位的數(shù)據(jù)寄存器被聲明為16 位SFR。當然,這個16位的數(shù)據(jù)寄存器可以聲明為2個8位的數(shù)據(jù)寄存器。如下所示:sfr TL2 = 0xCC。 /*定義Timer2的16位數(shù)據(jù)寄存器的低8位, TL2的地址為 0CCH */sfr TH2 = 0xCD。 /*定義Timer2的16位數(shù)據(jù)寄存器的高8位, TH2的地址為 0CDH */sfr16 聲明和 sfr 聲明遵循相同的原則。任何符號名可用在 sfr16 的聲明中。等號(=)指定的地址,必須是一個常數(shù)值。不允許使用帶操作數(shù)的表達式,而且必須使用SFR的低位和高位字節(jié)中的低位字節(jié)的地址。在80C51系列MCU中,經(jīng)常需要訪問SFR中的某些位,這時需使用關鍵字sbit,利用它可以定義可位尋址的對象。定義方法有如下三種。(1)sbit 位變量名 = 位地址這種方法將位的絕對地址賦給位變量,位地址必須位于0x80~0xFF之間。例如:sbit OV = 0xD2。sbit CY = 0xD7。(2)sbit 位變量名 = SFR名 ^ 位位置當可位尋址的位位于SFR中的時候,可采用此方法?!拔晃恢谩笔且粋€0~7之間的常數(shù)。例如:sfr PSW = 0xD0。sbit OV = PSW ^ 2。sbit CY = PSW ^ 7。(3)sbit 位變量名 = 字節(jié)地址 ^ 位位置這種方法以字節(jié)地址作為基地址,該字節(jié)地址必須位于0x80~0xFF之間。“位位置”是一個0~7之間的常數(shù)。例如:sbit OV = 0xD0 ^ 2。sbit CY = 0xD0 ^ 7。80C51的存儲區(qū)域有兩個特奌:★ 程序存儲器和數(shù)據(jù)存儲器是截然分開的;★ 特殊功能寄存器與內部數(shù)據(jù)存儲器是統(tǒng)一編址的。C51編譯器支持80C51的這種存儲器結構,能夠訪問80C51的所有存儲器空間。針對80C51存儲空間的多樣性,提出了修飾存儲空間的修飾符,用以指明所定義的變量應分配在什么樣的存儲空間,如表A9所示。
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1