想买车车 发表于 2025-8-1 10:42:38

遍历AI8051u34k-64,为何xadata结果比32k还大?

如题,在使用AI8051U前,被其32k的xdata震惊,于是使用绝对地址的访问方式进行访问,结果如下:

好奇之处在于:得到的结果比手册上写的32k稍微大一丢丢(应该原本的结果是0x8000)
下面是使用的程序代码部分:

                if(time_1s_flag == 1)
                {
                        u8 i;               
                        for(i = 0 ;i<5;i++)
                        {
                                *((unsigned char xdata *)addr) = data_cnt;
                                NOP(5);
                                read_cnt = *((unsigned char xdata *)addr);
                                NOP(5);
                               
                                if(data_cnt >= 255)
                                {
                                        data_cnt = 0x12;
                                }                               
                                addr++;
                                if( addr == 0x0080)
                                {
                                        addr = 0X0085;
                                }
                        }       
                        printf("addr's address: %p\n", &addr);
                        printf("addr bytes: 0x%lx 0x%lx 0x%lx 0x%lx\n",
                   *((unsigned char*)&addr + 0),// 低字节
                   *((unsigned char*)&addr + 1),
                   *((unsigned char*)&addr + 2),
                   *((unsigned char*)&addr + 3)); // 高字节                       
                       
                        if(read_cnt == data_cnt)
                        {
                                printf("ok is data_cnt 0x%bx\n",data_cnt);
                                printf("addr is   0x%lx \n",addr);
                                data_cnt++;
                                if(data_cnt >= 255)
                                {
                                        data_cnt = 0x12;
                                }
                        }
                        else
                        {
                                printf("addr is error%lx \n",addr);
                       
                        }
                        data_cnt++;                       
                        time_1s_flag = 0;
                        printf(" u8 dummyis %p%p%p %p \n",&dummy,&dummy,&dummy,&dummy,&dummy);
                        printf(" u8 dummyis %bx%bx%bx %bx \n",dummy,dummy,dummy,dummy,dummy);
                }

神农鼎 发表于 2025-8-1 17:28:08

2k edata + 32k xdata

想买车车 发表于 2025-8-4 09:35:37

神农鼎 发表于 2025-8-1 17:28
2k edata + 32k xdata

收到,感谢
页: [1]
查看完整版本: 遍历AI8051u34k-64,为何xadata结果比32k还大?