此帖出自嵌入式系统论坛
最新回复
环境keil uVserion3, memory model选择 large:variables in xdata的时候出现如下情况
static unsigned int ADC0_result[9]
function ()
{
unsigned int kk;
int temp0;
int temp1;
unsigned char i;
...
for(i=0;i > 4;
temp1 = temp1 < < 4;
kk=temp1+temp0;
ADC0_reslut=kk;
}
}
调试发现如果
i=0
temp0=AD0SL----->temp0=0x00a0
temp1=AD0SH----->temp1=0x0090
temp0=temp0>>4----->temp0=0x000a
temp1=temp1 < temp1=0x0900
kk=temp1+temp0----->kk=0x090a
但是
ADC0_result[0]=kk----->ADC0_result[0]=0x0a0a 这一句赋值不正确!!!找不到原因,类型都是正确的。
为什么0x090a会变成0x0a0a 把高位换成了低位?
更奇怪的是运行调试中,Delay_ms(100);运行好,temp1的值会莫名其妙变化,但其实没有操作!!
怎么这么奇怪,但是memory mode选择 small正常
详情
回复
发表于 2008-9-28 23:19
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持