音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請(qǐng)教C51中如何直接訪問(wèn)內(nèi)存地址?(利用數(shù)組存放地址)

作者:javasdk 欄目:單片機(jī)
請(qǐng)教C51中如何直接訪問(wèn)內(nèi)存地址?(利用數(shù)組存放地址)
事情是這樣的,我想對(duì)某些I/O口進(jìn)行掃描看是高或低電平(不是全部),因?yàn)椴贿B續(xù),先
把地址放在一個(gè)數(shù)組中:
code unsigned CHAR MYPORTS[18]=
{0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,
0xB6,0xB7
}; //P1.0~P1.7, P2,0~P2.7, P3.6,P3.7
之后掃描時(shí)用for循環(huán),定義局部變量i, 這時(shí)我想把對(duì)應(yīng)的MYPORTS[i]取出來(lái)作為地址,再
讀取相應(yīng)的內(nèi)容,我是這樣用的,
先    unsigned CHAR *pi2= &MYPORTS[i];
再        if((*(*pi2))==1) { /* */} else { /* */}
可是提示“*是錯(cuò)誤的指向”,真不知該如何了,請(qǐng)前輩指教一下如何是好啊,多謝!

2樓: >>參與討論
lanmp
是啊,*pi2已經(jīng)不是指針了
用強(qiáng)制類(lèi)型轉(zhuǎn)換或者指向指針的指針

3樓: >>參與討論
xwj
當(dāng)然不對(duì)啦
 
4樓: >>參與討論
xwj
原因:
1.指針轉(zhuǎn)換不對(duì),沒(méi)有明確指明尋址范圍的指針有3字節(jié),沒(méi)法賦值
2.指針不是這樣用的
3.就算編譯通過(guò),執(zhí)行也不會(huì)正確的,因?yàn)橛玫街羔樆驍?shù)組就注定是間接尋址,對(duì)于51間接尋址是訪問(wèn)不到端口的哦



5樓: >>參與討論
mmcu
just for reference!
    unsigned CHAR *pi2;
    unsigned CHAR i = 0;
    unsigned CHAR *p;

    pi2 = MYPORTS;

    for (i = 0; i < 10; i++)
    {
        p = (unsigned CHAR idata *)(*(pi2+i));
        if((*p) == 0x01)
        {
            break;
        }
        else
        {
            ;/* */}
    }

6樓: >>參與討論
xwj
3.就算編譯通過(guò),執(zhí)行也不會(huì)正確的,訪問(wèn)不到端口的
 
7樓: >>參與討論
mmcu
C51中如何直接訪問(wèn)內(nèi)存地址?(利用數(shù)組存放地址)的問(wèn)題解決了
C51中如何直接訪問(wèn)內(nèi)存地址?(利用數(shù)組存放地址)的問(wèn)題解決了,訪問(wèn)端口的話是沒(méi)有辦法的。

8樓: >>參與討論
xwj
這樣編寫(xiě)可以更快更省,但如樓上所說(shuō),訪問(wèn)端口的話是沒(méi)有辦法的。
code unsigned CHAR MYPORTS[18]=
{0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,
0xB6,0xB7
}; //P1.0~P1.7, P2,0~P2.7, P3.6,P3.7

void main(void)
    {
    unsigned CHAR code *pi2;
    unsigned CHAR i = 0;
    unsigned CHAR idata *p;

    pi2 = MYPORTS;

    p = (*(pi2));
    for (i = 0; i < sizeof(MYPORTS); i++)
    {
        if((*p) == 0x01)
        {
            break;
        }
        else
        {
            ;/* */}
        p++;
    }
}
//本貼的:Program Size: data=9.0 xdata=0 code=53
//mmcu的:Program Size: data=12.0 xdata=0 code=145


9樓: >>參與討論
gqh
??
   寄存器間接尋址用R1,R2做地址指針,可尋址片內(nèi)RAM的256個(gè)單元,但不能訪問(wèn)SFR;
   直接尋址可訪問(wèn)片內(nèi)RAM的低128個(gè)單元,同時(shí)也是訪問(wèn)高128個(gè)單元的特殊功能寄存器SFR的唯一方法
   52系列片內(nèi)RAM有256個(gè)單元,高128個(gè)單元與SFR的地址重疊
   51系列高128個(gè)單元不重疊
那 C51中如何直接訪問(wèn)內(nèi)存地址?



參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
誰(shuí)有keil uv3的漢化版或漢化補(bǔ)丁
請(qǐng)問(wèn)寫(xiě)字樓失火報(bào)警裝置中所用的傳感器是什么傳感器?
關(guān)于P87C591 接LED的問(wèn)題
誰(shuí)能告訴我?
誰(shuí)有普通IO口實(shí)現(xiàn)i2c例子?急
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)