在keil中编译提示;参数传递错误,指针参数处传递了非指针参数

void LCD_hz16_16(uchar x,uchar y,HZ_add)
{
uchar idata i,k;
uchar code *ip=HZ_add;
x=x&127;
y=y&3;
y=y<<1;
k=x;
set_xy(x,y);
for(i=0;i<16;i++)
{
if(k==64){set_xy(64,y);}
LCD_wr_dat(*(ip+i));
k++;
}
k=x;
set_xy(x,y+1);
for(i=0;i<16;i++)
{
if(k==64){set_xy(64,y+1);}
LCD_wr_dat(*(ip+i+16));
k++;
}
这是一段12864A液晶屏显示程序
请教如何修改?
Program Size: data=89.1 xdata=0 code=13335
LINK/LOCATE RUN COMPLETE. 2 WARNING(S), 0 ERROR(S)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_MENU20?1286
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_MENU21?1286
*** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
MODULE: C:\KEIL\C51\LIB\C51S.LIB (-----)
LIMIT: 0800H BYTES
Target not created
用的是 Keil uVision3编译器

第1个回答  2013-08-05
您好,最好把编译错误信息发上来。
你如果英文不好的话,可以下个翻译软件帮助翻译。
警告暂且不看它,你看他的错误,说受2k的限制。你根据你的错误信息可以百度或谷歌下很容易就找到答案了。

你的KEIL版本是评估板的,有2K可执行文件大小限制,现在KEIL的版本已经初到UV4了,你去官网下载一个,需要注册,再去网上下载一个KEIL的UV4注册机就可以破解2K限制了。
第2个回答  2013-08-05
前面两个警告是说你又两个函数menu20和menu21从没被调用过。
一个错误是说你的KEIL是评估版本,所以代码大小有2K限制,你找个注册机,破解了就好了。

在keil中编译提示;参数传递错误,指针参数处传递了非指针参数
您好,最好把编译错误信息发上来。你如果英文不好的话,可以下个翻译软件帮助翻译。警告暂且不看它,你看他的错误,说受2k的限制。你根据你的错误信息可以百度或谷歌下很容易就找到答案了。你的KEIL版本是评估板的,有2K可执行文件大小限制,现在KEIL的版本已经初到UV4了,你去官网下载一个,需要注册...

keil编译警告 ‘Argument':conversion:pointer to non-pointer是什么...
应该是参数传递错误,指针参数处传递了非指针参数。

MDK编译后:warning: #2748-D: null argument provided for parame...
这句话是个编译警告,意思是说把空自变量(null argument),即0,赋值给了标明属性为非零指针的参数。这个问题是由于参数不匹配引起的。可以参考http:\/\/www.keil.com\/support\/man\/docs\/armccref\/armccref_BABDGCBG.htm。例如memcpy (void *dest, const void *src, size_t len)函数,其第1和第...

keil编译出错error C216: subscript on non-array or too many dimensio...
void addmatrix(float* x,float* y,float* z,int m,int n)函数参数x,y,z都是一级指针,z[i][j]=x[i][j]+y[i][j];说明x,y,z都是二维数组。所以x,y,z都需要是二级指针才能编译通过。需要把函数定义为 void addmatrix(float** x,float** y,float** z,int m,int n)当然,调...

keil 编程中出现 error:illegal pointer conversion
read_n_byte(*POINT,0x01,2); 调用前,POINT申明怎么没有看到,你应该申明一下,然后指向一个有效地址,然后再调用这个函数传入申明好的指针。如果POINT在其他地方已经有申明的话,我想知道一下是申明成什么类型的,uchar * 还是 uchar 如果是uchar * 类型,直接把变量名传入即可,不需要在在...

在keil里面出现这样的错误!!?为什么呢!
应该是函数调用出了问题,参数的个数大于传递参数的寄存器数而出的错,也就是四个参数太多了,超过了能接受的范围吧。我采用比较笨的方法解决的:把你的WriteReg(a,b,c,d)函数拆分为两个函数实现其功能;当然有别的采用函数指针的方法,那个我也不太清楚怎么用。

keil C 编程初始化指针函数数组时出错
其二,就是在运行时将advanceModeFun的元素赋给advModeSetting,达到你的需求。例如:void (* advModeSetting[])(void) = { \/\/advanceModeFun[0].KeySetting, advMode1SetAdj, advMode2SetAdj,}; void main(){ advModeSetting[0](); advanceModeFun[1].Display(); advModeSetting[0] = ...

keil中C语言结构体指针传递时出现警告
。。你传参传错了呗。。 PidPara_Init(axi_x); 这样就行了额 如果需要这么传PidPara_Init(&axi_x); 需要 void PidPara_Init( PidBase **pid ){。。。}这样的实现函数

keil调试时老是出现这个:*** error 65: access violation at C:0x...
首先打开Keil软件,打开一个工程,点击keil的编译图标,编译软件。2.确保已经连接了仿真器,而且已经给MCU上电,然后下载程序,等待下载完成。3.软件程序下载完成,现在就完成了程序下载,可以开始仿真了。4.单击软件的调试图标,进入软件调试模式。5.现在就已经打开运行模式。6.单击全速运行,运行软件仿真。

keil的指针问题求教?
。在这个例程中,两个函数传入参数都是一个通用指针(指向code区的常量数组),然后分别按code专用指针解析(丢弃第1字节指针类型)和通用指针解析。从编译结果而言,二者都能够正常执行。如果按照C99乃至之后更严苛的语法校验,前一个是会报warning的,参数类型不符。这要感谢C51引用的C89标准。

相似回答
大家正在搜