欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2607|回復: 1
打印 上一主題 下一主題
收起左側

問大家c51定義a為idata改成data程序運行和正常不一樣,什么原因?

[復制鏈接]
跳轉到指定樓層
樓主
ID:315153 發表于 2018-6-29 22:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 jimjassdf 于 2018-6-30 12:02 編輯

問大家c51定義int idata a改成int a程序編譯不出錯,運行和正常不一樣,什么原因?謝謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:279005 發表于 2018-12-19 15:13 | 只看該作者
人個經驗:不建議使用idata,idata會使用SFR特殊功能寄存器0x80H~0xFF,因為這塊通常用于中斷與函數調用的堆棧,程序處理不好的話會有沖突,導致程序異常。

Keil C51 語言中的關鍵字,代表了 RAM 不同區域的劃分

data:片內 RAM 從 0x00~0x7F
idata:片內 RAM 從 0x00~0xFF
pdata:片外 RAM 從 0x00~0xFF
xdata:片外 RAM 從 0x0000~0xFFFF


在 Keil 默認設置下, data 是可以省略的,即什么都不加的時候變量就是定義到 data 區域中的。 

data 區域 RAM 的訪問在匯編語言中用的是直接尋址,執行速度是最快的。如果你定義成 idata,不僅僅可以訪問 data 區域,還可以訪問 0x80H~0xFF 的范圍,但加了 idata 關鍵字后,訪問的時候 51 單片機用的是通用寄存器間接尋址,速度較 data會慢一些。

而且我們平時大多數情況下不太希望訪問到 0x80H~0xFF,因為這塊通常用于中斷與函數調用的堆棧, 所以在絕大多數情況下,我們使用內部 RAM 的時候,只用 data 就可以了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表