久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2507|回復: 11
打印 上一主題 下一主題
收起左側(cè)

關(guān)于51單片機內(nèi)存理解問題

[復制鏈接]
回帖獎勵 20 黑幣 回復本帖可獲得 1 黑幣獎勵! 每人限 1 次(中獎概率 50%)
跳轉(zhuǎn)到指定樓層
樓主
ID:427646 發(fā)表于 2020-12-10 17:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在看51單片機代碼的時候,有一個疑問。

代碼如下:
-------------------------

uint8  code  gCode[256] _at_ 0x3A00;
uint8  xdata gXRam[256] _at_ 0;

memcpy(gXRam, gCode, 256);
-------------------------
定義地址空間后,gCode 沒有賦值,拷貝到 Ram 中,后續(xù)都是操作 gXRam,是為了加快執(zhí)行速度嗎?還是有其他的意義。
還有轉(zhuǎn)換問題:
---------------------

(uint8 xdata *)gCode
---------------------
將code區(qū)轉(zhuǎn)換為data區(qū),起始地址會不會改變? gCode 是否等于 0x3A00?


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:235200 發(fā)表于 2020-12-10 20:16 | 只看該作者
一方面可加快速度,另一方面是為了可改寫數(shù)據(jù)
回復

使用道具 舉報

板凳
ID:822755 發(fā)表于 2020-12-10 21:02 | 只看該作者
code就是程序區(qū),一般都是只讀的。有可能你看的程序在燒錄時,同時在0x3A00中裝入一些常數(shù)。
code區(qū)的指針不能強制轉(zhuǎn)換為xdata, idata, data等指針類型
回復

使用道具 舉報

地板
ID:160500 發(fā)表于 2020-12-10 21:08 | 只看該作者
code是代碼區(qū),也就是ROM里,xdata是外部RAM,在你這個代碼里沒有使用到gCode,只有一個copy它的代碼,它被編譯器優(yōu)化了,所以你看不到,后面使用的都是gXRam變量。至于類型轉(zhuǎn)換,這個不太清楚,沒有這樣用過。估計和編譯器有關(guān)系
回復

使用道具 舉報

5#
ID:235200 發(fā)表于 2020-12-10 22:52 | 只看該作者
將code區(qū)轉(zhuǎn)換為data區(qū),起始地址會不會改變?gCode的地址仍然是 0x3A00?gXRam的地址仍然是0x0,但gXRam區(qū)的數(shù)據(jù)變化了
回復

使用道具 舉報

6#
ID:427646 發(fā)表于 2020-12-11 09:53 | 只看該作者
經(jīng)過測試:
------------------------
u8  code  gCode[256] _at_ 0x3A00;
u8  xdata gXRam[256] _at_ 0x5000;

*gXRam = 6;
printf("%p\n", gXRam);
printf("%bd\n", *gXRam);
printf("%p\n", gCode);

*((u8 xdata *)gCode) = 5;

printf("%p\n", (u8 xdata *)gCode);
printf("%bd\n", *gCode);
printf("%bd\n", *((u8 xdata *)gCode));
-----------------------------
軟件是 keil5,編譯沒有錯誤警告,單片機為 C8051F340。
串口打印結(jié)果為:
x:5000
6
c:3a00
x:3a00
-1
5
--------------------------
code定義的代碼貌似可以轉(zhuǎn)換為xdata,然后起始地址的值好像沒有改變。
有個疑問就是是 C8051F340 的 RAM 只有 256字節(jié)+4KB 大小為啥我可以把地址定義超過空間大小?地址跟內(nèi)存大小無關(guān)嗎?
回復

使用道具 舉報

7#
ID:858925 發(fā)表于 2020-12-11 21:57 | 只看該作者
xdata是外部RAM,在你這個代碼里沒有使用到gCode,只有一個copy它的代碼,它被編譯器優(yōu)化了,所以你看不到,后面使用的都是gXRam變量。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:764088 發(fā)表于 2020-12-14 09:05 | 只看該作者
uint8  code  gCode[256] _at_ 0x3A00; // gCode 是數(shù)組
uint8  xdata gXRam[256] _at_ 0; // gXRam是數(shù)組

memcpy(gXRam, gCode, 256); //  memcpy的要求頭兩參數(shù)(gCode,gXRam)是指針類型
應該為
memcpy(&gXRam, &gCode, 256);
回復

使用道具 舉報

9#
ID:160500 發(fā)表于 2020-12-14 21:41 | 只看該作者
kjl123hh 發(fā)表于 2020-12-11 21:57
xdata是外部RAM,在你這個代碼里沒有使用到gCode,只有一個copy它的代碼,它被編譯器優(yōu)化了,所以你看不到 ...

抄襲也能被獎勵??!
回復

使用道具 舉報

10#
ID:427646 發(fā)表于 2020-12-15 10:08 | 只看該作者
MikeCai 發(fā)表于 2020-12-14 09:05
uint8  code  gCode[256] _at_ 0x3A00; // gCode 是數(shù)組
uint8  xdata gXRam[256] _at_ 0; // gXRam是數(shù)組 ...

數(shù)組名就是地址
回復

使用道具 舉報

11#
ID:621026 發(fā)表于 2020-12-15 12:53 | 只看該作者

uint8  code  gCode[256] _at_ 0x3A00; // gCode 是數(shù)組
uint8  xdata gXRam[256] _at_ 0; // gXRam是數(shù)組
回復

使用道具 舉報

12#
ID:860714 發(fā)表于 2020-12-15 16:44 | 只看該作者
強制轉(zhuǎn)換為xdata, idata, data等指針類型
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: a级片在线免费观看 | 99视频网站 | 欧美激情综合 | av基地网 | 伊人2222| 91蜜桃在线观看 | 欧美性猛交xxxx | 夜夜操网站| 中文字幕亚洲欧美 | 伊人国产在线 | 在线播放黄色 | 国产不卡在线视频 | 亚洲一区二区三区中文字幕 | 美日韩一区二区三区 | 色多多视频在线观看 | 黄色一级片网站 | 国产免费无遮挡 | 亚洲成人欧美 | 黄色三级免费 | 精品第一页 | 午夜视频一区二区三区 | 三年中文在线观看免费大全中国 | 青青草免费在线观看 | 亚洲另类自拍 | 日韩精品免费 | 97在线免费 | 死神来了4无删减版在线观看 | 一级黄色性生活片 | 日韩视频免费大全中文字幕 | 一级免费黄色片 | 日韩中文视频 | av黄色网 | 亚洲欧美日韩国产 | 日韩在线视频网站 | 久久精品久久精品 | 欧美第一页 | 中文字幕av片 | 日韩成人三级 | 激情五月综合网 | 日本在线不卡视频 | 亚洲激情综合网 |