女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

8位單片機的程序優化

MCU開發加油站 ? 來源:MCU開發加油站 ? 2020-06-15 09:20 ? 次閱讀

1、采用短變量

一個提高代碼效率的最基本的方式就是減小變量的長度。使用 C 編程時,我們都習慣于對循環控制變量使用 int 類型,這對 8 位的單片機來說是一種極大的浪費,你應該仔細考慮你所聲明的變量值可能的范圍,然后選擇合適的變量類型,很明顯,經常使用的變量應該是unsigned char,只占用一個字節。

2、使用無符號類型

為什么要使用無符號類型呢?原因是8051不支持符號運算,程序中也不要使用含有帶符號變量的外部代碼,除了根據變量長度來選擇變量類型外,你還要考慮是否變量是否會用于負數的場合。如果你的程序中可以不需要負數那么把變量都定義成無符號類型的。

3、避免使用浮點指針

在 8 位操作系統上使用 32 位浮點數是得不償失的。你可以這樣做,但會浪費大量的時間,所以當你要在系統中使用浮點數的時候,你要問問自己這是否一定需要,可以通過提高數值數量級和使用整型運算來消除浮點指針,處理ints和longs比處理doubles和floats要方便得多,你的代碼執行起來會更快,也不用連接處理浮點指針的模塊。如果你一定要,采用浮點指針的話,你應該采用西門子 80517 和達拉斯半導體公司的 80320 這些已經對數,處理進行過優化的單片機。如果你不得不在你的代碼中加入浮點指針,那么你的代碼長度會增加程序執行速度也會比較慢。如果浮點指針運算能被中斷的話,你必須確保要么中斷中不會使用浮點指針運算,要么在中斷程序前使用 fpsave 指令把中斷指針推入堆棧,在中斷程序執行后使用 fprestore 指令把指針恢復,還有一種方法是,當你要使用像 sin()這樣的浮點運算程序時,禁止使用中斷,在運算程序執行完之后再使能它。

4、使用位變量

對于某些標志位應使用位變量而不是 unsigned char,這將節省你的內存,你不用多浪費7位存儲區,而且位變量在RAM中訪問他們只需要一個處理周期。

5、用局部變量代替全局變量

把變量定義成局部變量比全局變量更有效率,編譯器為局部變量在內部存儲區中分配存儲空間,而為全局變量在外部存儲區中分配存儲空間,這會降低你的訪問速度,另一個避免使用全局變量的原因是你必須在你系統的處理過程中調節使用全局變量,因為在中斷系統和多任務系統中,不止一個過程會使用全局變量。

6、為變量分配內部存儲區

局部變量和全局變量可被定義在你想要的存儲區中,根據先前的討論,當你把經常使用的變量放在內部 RAM 中時,可使你的程序的速度得到提高,除此之外,你還縮短了你的代碼,因為外部存儲區尋址的指令相對要麻煩一些考慮到存儲速度,按下面的順序使用存儲器DATA IDATA PDATA XDATA,當然你要記得留出足夠的堆棧空間。

7、使用特定指針

當你在程序中使用指針時,你應指定指針的類型確定它們指向哪個區域如 XDATA 或CODE 區,這樣你的代碼會更加緊湊,因為編譯器不必去確定指針所指向的存儲區,因為你已經進行了說明。

8、使用調令

對于一些簡單的操作,如變量循環位移,編譯器提供了一些調令供用戶使用,許多調令直接對應著匯編指令,而另外一些比較復雜并兼容 ANSI 所有這些調令都是再入函數,你可在任何地方安全的調用他們和單字節循環位移指令 RL A 和 RR A 相對應的調令是_crol_ 循環左移 和_cror_(循環右移)。如果你想對 int 或 long 類型的變量進行循環位移,調令將更加復雜而且執行的時間會更長 對于 int 類型調令為_irol_,_iror_ ,對于 long 類型調令為_lrol_,_lror_。在 C 中也提供了像匯編中 JBC 指令那樣的調令_testbit_ ,如果參數位置位他將返回1,否則將返回 0 這條調令在檢查標志位時十分有用,而且使 C 的代碼更具有可讀性調令將直接轉換成 JBC 指令。

#include 《instrins.h》void serial_intr(void) interrupt 4 {if (!_testbit_(TI)) { // 是否是發送中斷P0=1; // 翻轉 P0.0_nop_(); // 等待一個指令周期P0=0;。..}if (!_testbit_(RI)) {test=_cror_(SBUF, 1); // 將SBUF中的數據循環// 右移一位。..}}

9、使用宏替代函數

對于小段代碼,像使能某些電路或從鎖存器中讀取數據,你可通過使用宏來替代函數使得程序有更好的可讀性你可把代碼定義在宏中,這樣看上去更像函數。編譯器在碰到宏時,按照事先定義的代碼去替代宏,宏的名字應能夠描述宏的操作,當需要改變宏時,你只要修該宏定義處。

#define led_on() {led_state=LED_ON; XBYTE[LED_CNTRL] = 0x01;}#define led_off() {led_state=LED_OFF; XBYTE[LED_CNTRL] = 0x00;}#define checkvalue(val) ( (val 《 MINVAL || val 》 MAXVAL) ? 0 : 1 )

宏能夠使得訪問多層結構和數組更加容易,可以用宏來替代程序中經常使用的復雜語句以減少你打字的工作量且有更好的可讀性和可維護性。

10、存儲器模式

C51提供了 3 種存儲器模式來存儲變量、過程參數和分配再入函數堆棧。你應該盡量使用小存儲器模式,很少應用系統需要使用其它兩種模式,像有大的再入函數堆棧系統那樣。一般來說如果系統所需要的內存數小于內部RAM 數時,都應以小存儲模式進行編譯。在這種模式下 DATA 段是所有內部變量和全局變量的默認存儲段,所有參數傳遞都發生在DATA 段中,如果有函數被聲明為再入函數,編譯器會在內部 RAM 中為他們分配空間,這種模式的優勢就是數據的存取速度很快,但只有120個字節的存儲空間供你使用,總共有128個字節,但至少有8個字節被寄存器組使用,你還要為程序調用開辟足夠的堆棧。如果你的系統有 256 字節或更少的外部 RAM 你可以使用壓縮存儲模式。這樣一來,如果不加說明,變量將被分配在 PDATA 段中,這種模式將擴充你能夠使用的 RAM 數量,對XDATA 段以外的數據存儲仍然是很快的,變量的參數傳遞將在內部 RAM 中進行,這樣存儲速度會比較快,對 PDATA 段的數據的尋址是通過 R0 和R1進行間接尋址,比使用 DPTR 要快一些在大存儲模式中,所有變量的默認存儲區是 XDATA 段 Keil C 盡量使用內部寄存器組進行參數傳遞,在寄存器組中可以傳遞參數的數量和和壓縮存儲模式一樣,再入函數的模擬棧將在 XDATA中 對 XDATA 段數據的訪問是最慢的,所以要仔細考慮變量應存儲的位置使數據的存儲速度得到優化。

11、混合存儲模式

Keil 允許使用混合的存儲模式,這點在大存儲模式中是非常有用的。在大存儲器模式下,有些過程對數據傳遞的速度要求很高。我就把過程定義在小存儲模式寄存器中,這使得編譯器為該過程的局部變量在內部 RAM中分配存儲空間,并保證所有參數都通過內部 RAM進行傳遞。盡管采用混合模式后編譯的代碼長度不會有很大的改變,但這種努力是值得的就像能在大模式下把過程聲明為小模式一樣,你像能在小模式下把過程聲明為壓縮模或大模式,這一般使用在需要大量存儲空間的過程上,這樣過程中的局部變量將被存儲在外部存儲區中,你也可以通過過程中的變量聲明,把變量分配在 XDATA 段中。

12、運行庫

運行庫中提供了很多短小精悍的函數,你可以很方便的使用他們,你自己很難寫出更好的代碼了。值得注意的是庫中有些函數不是再入函數,如果在執行這些函數的時候被中斷,而在中斷程序中又調用了該函數,將得到意想不到的結果。而且這種錯誤很難找出來,最好禁止使用這些函數的中斷。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6066

    文章

    44946

    瀏覽量

    648367
  • 操作系統
    +關注

    關注

    37

    文章

    7114

    瀏覽量

    125155
  • 變量
    +關注

    關注

    0

    文章

    614

    瀏覽量

    28865

原文標題:8位單片機的程序優化

文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何優化單片機項目的功耗

    在現代電子設計中,功耗優化已成為一個不可忽視的重要議題。對于單片機(MCU)項目而言,功耗不僅關系到產品的能效比,還直接影響到電池壽命和熱管理。 硬件層面的功耗優化 1. 選擇合適的單片機
    的頭像 發表于 11-01 14:16 ?1177次閱讀

    單片機怎么寫入程序

    程序通常涉及以下幾個步驟: 選擇單片機和開發環境 : 確定項目需求,選擇合適的單片機型號。 安裝相應的開發環境,如Keil、IAR、MPLAB等。 硬件連接 : 將單片機連接到開發板或
    的頭像 發表于 10-21 11:21 ?2268次閱讀

    性價比高的8單片機有哪些?

    單片機作為電子產品的核心主控芯片,廣泛應用于家用電器、智能儀表、工業控制、汽車電子、安防監控等多個領域。英銳恩科技小編將介紹幾款在市場上表現突出的高性價比8單片機,幫助電子產品開發工
    發表于 09-27 14:27

    國產主流8單片機-RISC架構精簡指令集單片機

    、儀器儀表、汽車電子、物聯網等領域電子產品的應用 英銳恩科技的8單片機采用RISC架構設計,優化了指令執行流程,顯著提升了處理效率。此外,結合高可靠性和低成本,EN
    發表于 09-27 10:15

    國產8單片機在國內的應用情況及發展趨勢!

    隨著科技的迅速發展,單片機作為電子產品的核心控制器,其應用領域不斷擴大。特別是國產8單片機,因其低成本、易編程及良好的兼容性,越來越受到國內電子產品開發者和企業的青睞。英銳恩科技的小
    發表于 09-26 16:09

    低功耗8單片機:技術特性與應用前景!

    不必要的能耗。 優化指令集:通過高效的指令集設計,減少執行任務所需的時鐘周期,從而降低能耗。 2. 8數據總線 8
    發表于 09-26 14:09

    8單片機,32單片機編程和應用優勢

    的微型計算機系統,英銳恩科技的電子工程師小編老唐將從靈活性、成本效益、開發效率、應用廣泛性等方面進行詳細闡述8單片機,32單片機編程和應
    發表于 09-26 11:45

    有哪些便宜的8單片機可供選擇?

    便宜的8單片機在市場上有多種選擇,這些單片機因其低成本、高性能和豐富的外設接口而受到廣泛應用。以下是一些性價比較高的8
    發表于 09-26 10:26

    32單片機的電路設計技巧分享!

    。在這種情況下,使用32單片機比在電路中使用幾個邏輯IC更經濟。 3.當程序的代碼大小對于8單片機
    發表于 09-25 11:21

    MCU前沿市場趨勢:8單片機和32單片機

    的處理能力,所需的接口程度以及對于電池供電的設計的所有重要功耗曲線,仔細確定對MCU的要求。毫無疑問,32單片機8設備具有更高的性能,但是工程師面臨傳統的選擇,即在市場上最好的設
    發表于 09-24 17:47

    8單片機為何不會被高端單片機取代?

    的控制器選擇。 (1)架構:8單片機通常采用馮諾依曼架構,其中程序和數據存儲器共享一條公共總線。它們還有一個哈佛架構,程序和數據存儲器是
    發表于 09-24 16:51

    8單片機,32單片機就找英銳恩!

    深圳市英銳恩科技有限公司創立于 2008 年,是一家從事單片機及模擬器件電路芯片應用、設計研發、銷售一體的國家高新技術半導體企業。 英銳恩科技公司憑著自身在半導體電子行業MCU(8單片機
    的頭像 發表于 09-23 10:32 ?669次閱讀

    keil可以讀出單片機程序

    Keil是一款廣泛應用于單片機程序開發的軟件,它提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案。然而,關于Keil是否能直接“讀出”單片機程序
    的頭像 發表于 09-02 10:32 ?2072次閱讀

    單片機燒錄程序用什么軟件

    單片機燒錄程序單片機開發過程中的一個重要環節,涉及到將編寫好的程序代碼通過燒錄器寫入單片機的ROM中,以實現對
    的頭像 發表于 09-02 10:05 ?3211次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序單片機開發過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸到單片機內部的存儲器中,使
    的頭像 發表于 09-02 09:47 ?2591次閱讀
    主站蜘蛛池模板: 洛隆县| 南召县| 乌苏市| 怀集县| 抚顺市| 扶绥县| 石林| 阜宁县| 天长市| 江西省| 铜陵市| 南昌县| 洪湖市| 五河县| 邳州市| 罗源县| 怀仁县| 化德县| 金寨县| 姚安县| 青田县| 唐海县| 普兰县| 玉环县| 上高县| 荃湾区| 澜沧| 徐水县| 赣榆县| 玉屏| 诸城市| 德惠市| 宜宾市| 乾安县| 海宁市| 汶上县| 镇远县| 德化县| 元江| 平塘县| 澄江县|