欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C語言訪問51單片機中存儲器的核心代碼

 更新時間:2022年01月16日 13:01:16   作者:卻話夜雨  
這篇文章主要介紹了使用C語言訪問51單片機中存儲器的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

使用C語言訪問51單片機中存儲器

1.頭文件

在Keil C51工程中 #include <absacc.h> ,可以直接使用CBYTE, XBYTE, DBYTE, PBYTE

absacc.h 的部分內(nèi)容如下:

#ifndef __ABSACC_H__
#define __ABSACC_H__

#define CBYTE ((unsigned char volatile code  *) 0)
#define DBYTE ((unsigned char volatile data  *) 0)
#if !defined (__CX2__)
#define PBYTE ((unsigned char volatile pdata *) 0)
#endif
#define XBYTE ((unsigned char volatile xdata *) 0)

#define CWORD ((unsigned int volatile code  *) 0)
#define DWORD ((unsigned int volatile data  *) 0)
#if !defined (__CX2__)
#define PWORD ((unsigned int volatile pdata *) 0)
#endif
#define XWORD ((unsigned int volatile xdata *) 0)

code data pdata xdata 均為存儲器類型,下節(jié)將詳敘,此處用T替代:

unsigned char volatile T * 為指向存儲器T中無符號整型數(shù)的指針類型
((unsigned char volatile T * ) 0) 對0做強制類型轉換

2.code data pdata xdata

code data pdata xdata均為存儲器類型

  • code:用于存儲常數(shù)和函數(shù),使用16位地址訪問,可位于片內(nèi)或片外
  • ROMdata:用于存儲變量,使用8位地址,位于片內(nèi)RAMp
  • data:用于存儲變量,使用8位地址,位于片外RAMx
  • data:用于存儲變量,使用16位地址,位于片外RAM

3.CBYTE、DBYTE、PBYTE和XBYTE的區(qū)別

注意:以下存儲地址范圍均指理論上可訪問的最大范圍,具體操作時需根據(jù)存儲器大小調整
從存儲器類型的區(qū)別中可以得出本節(jié)四者的區(qū)別:

CBYTE

CBYTE 是用于訪問代碼存儲器的,即ROM部分。

rval = CBYTE[adress];    //訪問到代碼存儲器中的內(nèi)容

其中代碼存儲器地址(adress)范圍是 0X0000--0xFFFF ,大小為16K。

DBYTE

DBYTE 是用于訪問片內(nèi)數(shù)據(jù)存儲器的,即片內(nèi)RAM部分,

DBYTE[adress] = 0XFB;   //寫數(shù)據(jù)
rval = DBYTE[adress];   //讀數(shù)據(jù)

其中片內(nèi)存儲器地址(adress)范圍是 0x00--0xFF ,大小為256byte。

XBYTE

XBYTE 是用于訪問片外數(shù)據(jù)存儲器的,即片外RAM部分,但是XBYTE只能讀數(shù)據(jù)不能寫數(shù)據(jù)到片外RAM。

rval =XBYTE[adress]; //讀數(shù)據(jù)

片外數(shù)據(jù)存儲器的寫可以使用下面這條語句:

char  xdata  x1  _at_ 0x30 ;  //x1為char型全局變量,地址位于xdata區(qū)地址0x30 
x1  =  0x01; //給片外存儲器地址賦值

地址范圍為 0x0000--0xFFFF,大小為16K。

PBYTE

PBYTE也用來訪問擴展ram,但只能訪問開始的256字節(jié)。

4.CWORD、XWORD、DWORD和PWORD

上節(jié)所述四者為單字節(jié)訪問,對應雙字節(jié)訪問使用CWORD、DWORD、XWORD和PWORD。

5.參考

https://wenku.baidu.com/view/fe5a4b09f61fb7360a4c659c.html

到此這篇關于使用C語言訪問51單片機中存儲器的文章就介紹到這了,更多相關C語言51單片機存儲器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++改變編程入口為main函數(shù)

    C++改變編程入口為main函數(shù)

    這篇文章主要介紹了C++改變編程入口為main函數(shù)的方法的相關資料,需要的朋友可以參考下
    2015-06-06
  • C++基礎入門教程(八):函數(shù)指針

    C++基礎入門教程(八):函數(shù)指針

    這篇文章主要介紹了C++基礎入門教程(八):函數(shù)指針,本文講解了函數(shù)原型和函數(shù)定義、const限定符與指針、函數(shù)的指針參數(shù)、為什么要使用指針參數(shù)等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • C++迭代器失效問題及解決

    C++迭代器失效問題及解決

    這篇文章主要介紹了C++迭代器失效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 淺談關于C++memory_order的理解

    淺談關于C++memory_order的理解

    這篇文章主要介紹了淺談關于C++memory_order的理解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • C++中訪問字符串的三種方法總結

    C++中訪問字符串的三種方法總結

    以下是對C++中訪問字符串的三種方法進行了詳細的總結介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • C++ cin輸入的多種方法詳解

    C++ cin輸入的多種方法詳解

    cin是C++編程語言中的標準輸入流對象,即stream類的對象。cin主要用于從標準輸入讀取數(shù)據(jù),這里的標準輸入,指的是終端的鍵盤。接下來通過本文給大家分享C++ cin輸入的幾種方式,一起看看吧
    2021-09-09
  • C語言中bool變量的深入理解

    C語言中bool變量的深入理解

    C語言中沒有BOOL類型變量,它是C++獨有的,由于使用BOOL類型可以使代碼更具有可讀性,下面這篇文章主要給大家介紹了關于C語言中bool變量的相關資料,需要的朋友可以參考下
    2021-08-08
  • C++實現(xiàn)合并排序的方法

    C++實現(xiàn)合并排序的方法

    這篇文章主要介紹了C++實現(xiàn)合并排序的方法,實例分析了合并排序的原理與相關實現(xiàn)技巧,需要的朋友可以參考下
    2015-07-07
  • C++ accumulate函數(shù)詳細介紹和具體案例

    C++ accumulate函數(shù)詳細介紹和具體案例

    這篇文章主要介紹了C++ accumulate函數(shù)詳細介紹和具體案例,accumulate是numeric庫中的一個函數(shù),主要用來對指定范圍內(nèi)元素求和,但也自行指定一些其他操作,如范圍內(nèi)所有元素相乘、相除等
    2022-08-08
  • C語言實現(xiàn)的一個三子棋游戲詳解流程

    C語言實現(xiàn)的一個三子棋游戲詳解流程

    三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋等。將正方形對角線連起來,相對兩邊依次擺上三個雙方棋子,只要將自己的三個棋子走成一條線,對方就算輸了
    2021-10-10

最新評論