单片机里面如何确定地址在某个范围内,貌似和C语言不一样,不能直接用地址
单片机里面怎么确定地址在某个范围内,貌似和C语言不一样,不能直接用地址具体就是在51MCU中,我想将一块存有
单片机里面怎么确定地址在某个范围内,貌似和C语言不一样,不能直接用地址
具体就是在51MCU中,我想将一块存有字符串的地址中内容整体拷贝出来放到另外一个地址,使用了动态分配内存,但是由于内部RAM区域中00H-20H为寄存器组区域,所以当如果内存被分配到这片区域的话会引起r0-r7改变进而产生错误,导致读取的数据错误,现在只有判断分配的内存不在00H-20H才可以解决这个问题,
//动态分配内存不考虑内存覆盖问题:但需注意要在20H-FFH之间,因为00H-1FH为寄存器组区
s[EnumCount]=(char idata *)malloc(12*sizeof(char)+EnumCount);
//if((char idata *)0x0020<(char idata *)s[EnumCount]<(char idata *)0x00FF))
strcpy(s[EnumCount],port);
因此我想问一下,怎么确定内部RAM地址位于某个范围内??
由于他和C语言地址形式不一样,是i:0034这种形式的,直接比较编译通不过
[解决办法]要不分配到内部XDATA上去算了,省事
[解决办法]找到问题聊,LZ比较地址大小方法错了,
改成下面试试,proteus仿真通过了
if( ( (char idata *)0x20<s[EnumCount] )&&( s[EnumCount]<(char idata *)0x7F ) )