程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P2^0;
void main()
{
uchar i;
uchar idata test_a[10]={1,2,3,4,5,6,7,8,9,0};
uchar idata * data p=0;
for(i=0;i<128;i++)
{
*p=0;
p++;
}
led=0;
}
发现0x00和0x07怎么也清不了,请大侠们指点指点,谢谢!
(原文件名:idata clear.JPG)
for(i=0;i<128;i++) 其实也是INC R7(地址07)直到80H,其实它是也被清过零,只是你又把它加上去了。
-----------------------------------------------------------------------
没看大明白。R0-R7 在什么时候清零,又是在什么时候加上的???
-----------------------------------------------------------------------
我清的是Idata类型的数据,跟data类型没什么关系吧?我知道间接寻址内128字节的寄存器是要用到R0和R1,可那是data类型的啊,我查看的是idata类型的数据。
回复【1楼】flywater 落叶
-----------------------------------------------------------------------
我清的是idata类型的数据,跟data类型没什么关系吧?我知道间接寻址内128字节的寄存器是要用到r0和r1,可那是data类型的啊,我查看的是idata类型的数据。
-----------------------------------------------------------------------
低128字的data和idata是重叠的
i 变量会被反复清0, for 永远出不来.
而idata内存访问一定要用到Ri作为地址指针.
一周热门 更多>