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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1510|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

為什么32的寄存器可以這樣操作,而51單片機的不行

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1091094 發(fā)表于 2024-8-21 17:09 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
32的是可以直接將地址強制類型轉(zhuǎn)化為指針,然后再解引用,就可以直接給這個寄存器賦值操作了。
但是51的不行,不知道干嘛,





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

使用道具 舉報

沙發(fā)
ID:258566 發(fā)表于 2024-8-21 20:54 | 只看該作者
可以的,你那個括號有問題。
回復(fù)

使用道具 舉報

板凳
ID:828160 發(fā)表于 2024-8-21 22:42 | 只看該作者
51用匯編也可以實現(xiàn)同樣的效果
回復(fù)

使用道具 舉報

地板
ID:161164 發(fā)表于 2024-8-22 09:23 | 只看該作者

回復(fù)

使用道具 舉報

5#
ID:1091094 發(fā)表于 2024-8-22 09:45 | 只看該作者
cccc888 發(fā)表于 2024-8-21 20:54
可以的,你那個括號有問題。

那你試著不要“reg52.h"頭文件,看看能不能把P1的引腳都置0。
回復(fù)

使用道具 舉報

6#
ID:1034262 發(fā)表于 2024-8-22 09:58 | 只看該作者
51的寄存器只能直接尋址操作,不能用間接尋址,所以不能用指針。
回復(fù)

使用道具 舉報

7#
ID:526108 發(fā)表于 2024-8-22 19:36 | 只看該作者
是因為32比較落后,沒有bit功能,只能這么操作
而51就比較強大,不但能用bit賦值,也能用指針賦值
只是你沒寫對
回復(fù)

使用道具 舉報

8#
ID:258566 發(fā)表于 2024-8-22 21:23 | 只看該作者
3038838599 發(fā)表于 2024-8-22 09:45
那你試著不要“reg52.h"頭文件,看看能不能把P1的引腳都置0。

的確是這樣子的,但是xdata寄存器可以這樣定義,我看過別的單片機的頭文件定義。
回復(fù)

使用道具 舉報

9#
ID:258566 發(fā)表于 2024-8-22 21:33 | 只看該作者
又有新發(fā)現(xiàn)。參照別的頭文件加上內(nèi)存區(qū)塊名



發(fā)現(xiàn)加了data和加idata和不加生成的匯編代碼一樣。這算不算??,既然支持了,就應(yīng)該有區(qū)別吧。



回復(fù)

使用道具 舉報

10#
ID:21455 發(fā)表于 2024-8-23 14:47 | 只看該作者
我嘗試回答,不知道是否有誤,請指正。
1、51特殊功能寄存器與RAM使用統(tǒng)一編址,如果用這種指針方式訪問,編譯器不知道指向哪個鬼,編譯器會給出警告說:內(nèi)存空間或許無效。
2、所以,51使用關(guān)鍵字SFR訪問特殊寄存器。如:sfr   P1  = 0x90;        //P1口數(shù)據(jù)寄存器
回復(fù)

使用道具 舉報

11#
ID:1091094 發(fā)表于 2024-8-24 16:08 | 只看該作者
cccc888 發(fā)表于 2024-8-22 21:23
的確是這樣子的,但是xdata寄存器可以這樣定義,我看過別的單片機的頭文件定義。

是的 我也是看見過別的51內(nèi)核的單片機這么做,所以才需要搞懂
#define I2C_SR                    *(_IO  uint8 xdata *)0x402b        // RV:  00H      I2C狀態(tài)寄存器
回復(fù)

使用道具 舉報

12#
ID:1091094 發(fā)表于 2024-8-25 15:15 | 只看該作者

我也看了這段話,但是沒有整明白,有人說32的是地址映射,
回復(fù)

使用道具 舉報

13#
ID:828160 發(fā)表于 2024-8-26 00:21 | 只看該作者
3038838599 發(fā)表于 2024-8-24 16:08
是的 我也是看見過別的51內(nèi)核的單片機這么做,所以才需要搞懂
#define I2C_SR                    *(_IO ...

這個寄存器地址是在xdata區(qū)域,不在0x80--0xFF,所以可以這樣定義,大多數(shù)寄存器地址是0x80--0xFF,需要使用直接尋址,
如果用間接尋址訪問0x80--0xFF,就是訪問idata的RAM,
如果用直接尋址訪問0x80--0xFF,就是訪問寄存器
0x00-0x7F可以是data區(qū),也可以是idata區(qū)
如果用間接尋址訪問0x00--0x7F,就是訪問idata區(qū)
如果用直接尋址訪問0x00--0x7F,就是訪問data區(qū)
回復(fù)

使用道具 舉報

14#
ID:161164 發(fā)表于 2024-8-26 11:32 | 只看該作者
3038838599 發(fā)表于 2024-8-25 15:15
我也看了這段話,但是沒有整明白,有人說32的是地址映射,

總而言之
0x80~0xFF地址的寄存器只能用SFR來訪問, 如
sfr P3 = 0xB0;
...
P3 = 0x0F;
if(P3 != 0x0F)
{
...
}
回復(fù)

使用道具 舉報

15#
ID:624769 發(fā)表于 2024-8-26 21:08 | 只看該作者
你稍微懂一點點的 硬件知識,就不會有這個問題了。

指針訪問屬于 “間接訪問”。
而51的SFR 屬于 只能"直接訪問",是不能用指針訪問的。
至于,51的擴展寄存器 XSFR 屬于只能“間接訪問”,即無論如何都必須通過指針才能訪問的。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区视频 | 中文字幕一区二区三区在线观看 | 一区二区在线免费观看 | 国产69精品久久久久777 | 精品影院| 亚洲成人国产 | 日韩高清中文字幕 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 国产精品一区二区av | 男人的天堂久久 | 手机看片169| 97av视频在线| 色爱综合网 | 久久激情网 | 黄频视频| 国产一区二区在线视频 | 日韩视频在线免费观看 | 超碰97免费在线 | 免费观看成人鲁鲁鲁鲁鲁视频 | 天天干天天操天天射 | 日韩欧美在线免费观看视频 | 色婷婷精品 | 九九一级片| 亚洲精品欧美 | 2021狠狠干| 欧美视频二区 | 天天操网 | 在线播放亚洲 | 欧美午夜一区 | 综合久久av| 免费在线一区二区三区 | 日韩中文字幕高清 | 黄色精品 | 网站国产 | 日韩h| 久久三级av | 国产精品久久av | 久久成人免费视频 | 仙人掌旅馆在线观看 | 一级做a爰片久久毛片免费看 | 精品国产乱码久久久久久闺蜜 |