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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

求助51單片機怎樣通過索引獲取地址中的數(shù)據(jù)

查看數(shù): 3879 | 評論數(shù): 5 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2020-8-3 09:41

正文摘要:

我的目的是在數(shù)據(jù)數(shù)組中存放著一組數(shù)據(jù),然后通過另一個數(shù)組所謂索引儲存著數(shù)據(jù)數(shù)組的地址,然后在主函數(shù)中只需要通過指針訪問索引中的數(shù)據(jù)數(shù)組的地址就可以獲得數(shù)據(jù)。 麻煩大神幫忙找下問題點,提供點思路 ////// ...

回復

ID:298952 發(fā)表于 2020-8-3 14:28
修改索引數(shù)組數(shù)據(jù)類型,索引數(shù)據(jù)類型改為32位
ID:298952 發(fā)表于 2020-8-3 14:26
已解決
#include "reg51.h"
#include "intrins.h"
//測試工作頻率為11.0592MHz
unsigned int dat[4]={0xb5b5,0xb5b6,0xb5b7,0xb5b8};
long code address[1]={&dat};
int num[4];
sfr     T2L         =   0xd7;
sfr     T2H         =   0xd6;
sfr     AUXR        =   0x8e;
void UART1_init()
{
         SCON = 0x50;
    T2L = 0xe8;                                 //65536-11059200/115200/4=0FFE8H
    T2H = 0xff;
    AUXR = 0x15;                                //啟動定時器
    ES = 1;                                     //使能串口中斷
    EA = 1;
}
void UART1_Interrupt() interrupt 4
{
    if (TI)
    {
        TI = 0;                                 //清中斷標志
    }
    if (RI)
    {
        RI = 0;                                 //清中斷標志
    }
}
void main()
{
        unsigned int i;
   unsigned int *addr;
       
   UART1_init();

        addr=address[0];
        for(i=0;i<4;i++)
        {
        num[i]=*addr;//將address中儲存的地址賦給j
       
                addr++;
        }
       
       
    while (1);
}

評分

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

查看全部評分

ID:275826 發(fā)表于 2020-8-3 10:50
定義指針變量就可以查數(shù)組元素了
ID:298952 發(fā)表于 2020-8-3 10:40
那個中斷中的P10和P11那句請忽略
ID:804115 發(fā)表于 2020-8-3 09:41
你這樣用指針就把你的程序玩壞了。
unsigned char code dat[4]={0x11, 0x22, 0x33, 0x44};
unsigned char *pAddr;

如果讓pAddr = &dat[0];
那么*pAddr和pAddr[0]則為0x11;

如果繼續(xù)進行如下操作:pAddr++;
那么*pAddr和pAddr[0]則為0x22;

如果此時重新給指針賦值:pAddr = &dat[3];
那么*pAddr和pAddr[0]則為0x44;

如果繼續(xù)進行如下操作:pAddr--;
那么*pAddr和pAddr[0]則為0x33;
且*(pAddr+1)和pAddr[1]則為0x44;

總結:將指針指向某個數(shù)組地址后,該指針則存儲其對應數(shù)組的起始地址,指針如果增加或者減小,它存儲的地址就相應的偏移,且偏移的大小由指針定義時的類型來決定。我們這個例子是uchar型,所以是8bit。我們隨時可以用*或者數(shù)組的方式從對應的地址取出數(shù)據(jù)。取出數(shù)據(jù)的寬度是指針類型的寬度,與數(shù)組無關。

例如:
對于32位的單片機:
unsigned char code dat[4]={0x11, 0x22, 0x33, 0x44};
unsigned int *pAddr;
那么pAddr[0]或者*pAddr的值是多少呢?
在小端模式下:答案是0x44332211
在小端模式下:答案是0x11223344
你可以測試一下 51是什么模式。

評分

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

查看全部評分

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区在线视频 | 最新av在线播放 | 亚洲色图综合 | 日韩www | 成人福利在线 | 羞羞视频网站免费观看 | 久久国产一区二区三区 | 免费久| 偷拍亚洲色图 | 天天天操操操 | 日本精品一区二区三区在线观看 | 高清人人天天夜夜曰狠狠狠狠 | 色爱综合网 | 欧美精品久久久久 | 在线看h | 欧美日韩国产传媒 | 天天澡天天狠天天天做 | 日韩视频在线一区 | 蜜桃一区二区三区 | 欧美一级片在线 | 亚洲欧美日韩在线 | 本道综合精品 | 亚洲精品欧美一区二区三区 | 午夜影院网站 | 亚洲免费网站 | 高清人人天天夜夜曰狠狠狠狠 | 国产精品成人av | 国产乱码久久久久久 | 欧州一区| av片在线播放 | 亚洲国产成人精品女人 | 国产乱码精品一区二区三区五月婷 | 亚洲精品久久国产高清情趣图文 | 亚洲日日 | 久久久人成影片免费观看 | 国产一区二区在线免费视频 | 中文字幕一级毛片视频 | 国产在线精品一区二区三区 | www.色.com| 色噜噜亚洲男人的天堂 | 日韩在线一区二区三区 |