新聞中心

Keil C51中變量的使用

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

4.6 二義性
在標準C中如果要一個二義性,只能用枚舉類型。如:
e.JPG
以上程序在 時,t雖然僅有0和1兩種狀態(tài),但在目標代碼中仍占用一個字節(jié)。此處理方法既浪費存儲資源,又延長了處理時間,這對于8086內(nèi)核算不上多大問題,但在資源有限、運行速度不高的51內(nèi)核中就不能不考慮了。在 中可以下方法:
f.JPG
這兩種方式效果是完全相同的,但在目標代碼中變量t僅占用1位(即1/8字節(jié)),而且因為51內(nèi)核單片機指令系統(tǒng)中有位處理指令,生成的目標代碼占用內(nèi)存少、運行速度快。
4.7 特殊功能寄存器變量(包括位變量)
特殊功能寄存器中,累加器A、寄存器B、堆棧指針SP和數(shù)據(jù)指針DPTR是歸系統(tǒng)使用的,在中不提供給用戶。其他的特殊功能寄存器都可以用sfr定義成變量,其中地址可以被8整除者的各位,還可以用bsfr定義成位變量。訪問這些變量,就可以對特殊功能寄存器及其可以位尋址的各位進行讀寫,達到操作單片機內(nèi)部各硬件的目的。對于標準的51內(nèi)核單片機,頭文件reg51.h、reg52.h或其他頭文件中已對這些特殊功能寄存器變量作了定義,用戶可以用#include將此頭文件包含進來,然后就可以使用了?,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ù)存儲器單元形式。對于這些硬件,可以用指針進行讀寫操作。例如:
g.JPG

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

本文引用地址:http://m.butianyuan.cn/article/172665.htm

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



上一頁 1 2 3 下一頁

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

評論


相關(guān)推薦

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

關(guān)閉