遍历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);
}
2k edata + 32k xdata 神农鼎 发表于 2025-8-1 17:28
2k edata + 32k xdata
收到,感谢
页:
[1]