我写了一个X5045的写数据函数,在单个输入字符的时候,没有问题,想着连续写入3-8个字符的时候,出现错误,请帮忙指出错误原因,万分感谢,程序附下:
void x5045_byte_write(uchar addh,addl,dat_num,unsigned int *dat_add) //写入系统参数
{
uchar ah,i,k=0;
if(addh==0)
ah = 0x02; //低128用0x02,高128用0x0a;
else
ah = 0x0a;
stax(); //启动信号
byte_in(0x06);//写指令
stax(); //开始信号
byte_in(ah); //写入数据的高位地址
byte_in(addl); //写入数据的低位地址
for(i=dat_num;i>0;i--) //循环写入指定个数的字节
{
byte_in(*(dat_add+k));
k++;
}
endx(); //结束
status_ready(); //查询总线状态
}
上面是子程序,子程序把循环写入指定个数的字节的部分改成直接写入某一个字节,主程序调用时好用的,但是想要连续写入3-8个字节时,在主程序中调用时是这样设想的:
x5045_dat[0] = 1;
x5045_dat[2] = 2;
x5045_dat[3] = 3;
p = x5045_dat;
x5045_byte_write(0,0x10,3,*p);
比如上例中,要在X5045的0X10,0X11,0X12中依次写入 1,2,3,程序报错
SINGLE_C.C(72): error C214: illegal pointer conversion
x5045_byte_write(0,0x10,3,*p); 本句错误;
请高手指明错误原因,以让俺对指针的理解更进一步,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
非常感谢,就是在这个*这里。
也在这里给像我一样的初学者提醒一个,函数定义的形参如果是指针变量,那么实参传递的时候直接传递指针给形参的指针变量,就是hexiaoxiao帮我指出来的这个*去掉。再次谢谢哦。
一周热门 更多>