void Out_5618(uint16 value)
{
uint8 temp;
uint8 i;
i = 1; //watch 看到 i 的值是 0x000000cd
i++; //watch 看到 i 的值是 0x000000cd
i = i + 3; //watch 看到 i 的值是 0x000000cd
// i = 1 << 5; //watch 看到 i 的值是 0x000000cd
// IO0SET = CS_5618;
for(i = 0; i < 16; i++) //此时i正常,但循环里的语句没执行,只是i在增加
{
// data = value & 0x8000;
// value = value << 1;
temp = 5;
temp = temp << 2;
// IO0SET = CLK_5618;
// IO0CLR = CLK_5618;
}
// IO0CLR = CS_5618;
}
void DA(fp32 value, uint8 volt, uint8 flag)
{
uint16 value_I16;
fp32 value_f32;
value_I16 = 1;
if(flag == ARM_DAC)
{
if(volt == 1) value_f32 = 1024 / volt_range;
else value_f32 = 1024 / current_range;
value_I16 = (uint16)(value * value_f32);
value_I16 = value_I16 << 6;
DACR = value_I16;
}
else if(flag == TLC_5618)
{
if(volt == 1)
{
value_f32 = 4096 / volt_range;
}
else value_f32 = 4096 / current_range;
value_I16 = (uint16)(value * value_f32);
Out_5618(value_I16);
}
}
我在task1中调用DA函数,在DA函数中运算都是正常的,但是进入了Out_5618之后运算好象就出错了。用的是LPC2132,code 是 20K, data 是9K。请大家帮我分析分析是什么原因啊,谢谢! |