<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          Keil C51中變量的使用

          作者: 時間:2011-06-23 來源:網(wǎng)絡(luò) 收藏

          4.6 二義性
          在標(biāo)準(zhǔn)C中如果要一個二義性,只能用枚舉類型。如:
          e.JPG
          以上程序在 時,t雖然僅有0和1兩種狀態(tài),但在目標(biāo)代碼中仍占用一個字節(jié)。此處理方法既浪費存儲資源,又延長了處理時間,這對于8086內(nèi)核算不上多大問題,但在資源有限、運行速度不高的51內(nèi)核中就不能不考慮了。在 中可以下方法:
          f.JPG
          這兩種方式效果是完全相同的,但在目標(biāo)代碼中變量t僅占用1位(即1/8字節(jié)),而且因為51內(nèi)核單片機指令系統(tǒng)中有位處理指令,生成的目標(biāo)代碼占用內(nèi)存少、運行速度快。
          4.7 特殊功能寄存器變量(包括位變量)
          特殊功能寄存器中,累加器A、寄存器B、堆棧指針SP和數(shù)據(jù)指針DPTR是歸系統(tǒng)使用的,在中不提供給用戶。其他的特殊功能寄存器都可以用sfr定義成變量,其中地址可以被8整除者的各位,還可以用bsfr定義成位變量。訪問這些變量,就可以對特殊功能寄存器及其可以位尋址的各位進(jìn)行讀寫,達(dá)到操作單片機內(nèi)部各硬件的目的。對于標(biāo)準(zhǔn)的51內(nèi)核單片機,頭文件reg51.h、reg52.h或其他頭文件中已對這些特殊功能寄存器變量作了定義,用戶可以用#include將此頭文件包含進(jìn)來,然后就可以使用了?,F(xiàn)在很多51內(nèi)核兼容型單片機擴展了更多的特殊功能寄存器,這些就需要用戶自行定義,具體方法可參考器件的使用說明。
          4.8 外部數(shù)據(jù)存儲器變量
          若設(shè)置成pdata和xdata存儲類型,將把變量存儲在片外數(shù)據(jù)存儲器中。這兩種存儲類型的訪問速度最慢,非迫不得已不要使用。在使用這兩種存儲類型時,注意盡量只用它保存原始數(shù)據(jù)或最終結(jié)果,盡量減少對其訪問的次數(shù),需要頻繁訪問的中間結(jié)果不要用它。
          4.9 用外部數(shù)據(jù)存儲器地址擴展的其他硬件
          在單片機外部擴展的其他硬件,一般都借用外部數(shù)據(jù)存儲器地址,表現(xiàn)為外部數(shù)據(jù)存儲器單元形式。對于這些硬件,可以用指針進(jìn)行讀寫操作。例如:
          g.JPG

          結(jié)語
          C51中的變量增加了存儲類型,在使用時而顯得比標(biāo)準(zhǔn)C稍微復(fù)雜。在Keil C51中,變量的存儲類型不同,訪問變量所需要的時間也不同,由于C51內(nèi)核單片機資源少、速度慢,變量存儲類型對系統(tǒng)工作速度的影響不可忽視。在了解變量與單片機存儲結(jié)構(gòu)關(guān)系的基礎(chǔ)上,根據(jù)程序?qū)ψ兞康氖褂靡?,合理地選擇變量的存儲類型,可以在相同的硬件上獲得更高的工作效率。

          本文引用地址:http://www.ex-cimer.com/article/172665.htm

          存儲器相關(guān)文章:存儲器原理



          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 使用 變量 C51 Keil

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();