|
偶的程序出了點問題,不知道怎么回事(單片機的C)
[复制链接]
51單片機寫9850控制字的子程序如下:
void dds9850_w(void)
{
extern num_input;
uint ret,i,tw;
uchar xdata *addr = DDS1_FRQ4;
ret = 0;
i = 0;
while((i < num_input)&&(value[r7] != 0x20))
{
ret *= 10;
ret += ((value[r7] - 0x30)&0xf);
i++;
}
tw = ret * (2^32) / REFCLK_9850;
DDS1_PHASE = 0x00;
for(i = 0;i < 4;i++)
{
*addr = tw&0xff;
tw>>=8;
addr--;
}
IOUD1 = 0x00;
}
其中的说明:DDS1_FRQ4之前定义的9850寄存器地址,
num_input输入的数字的个数,
value[r7]存放输入数据的数组,
ret得到的value[r7]处理之后的数,
tw需要写入的频率控制字。
条件:我输入了7个数字5000000,存放于value[r7]={0x35,0x30,0x30,0x30,0x30,0x30,0x30}, 处理之后应该得到ret=5000000。
可是问题是:while那个循环应该执行7次,但是第一次执行完就跳出来了,得到ret=5。。。不知道为什么,那位达人帮帮欧吧~~
小弟谢谢了。。。
还有就是小弟忙毕业设计,第一次自己写c程序,格式和变量命名不是很好,希望大家提出批评和建议,谢谢了。。呵呵。。。
留个自己的QQ:258598377。
|
|