Keil调试程序编译时显示 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY SEGMENT: ?PR?READ_RO

#include<AT89X52.H>
#include "INTRINS.H"
#define BUSY1 (DQ1==0) //定义busy信号
sbit LED_0=P2^0; //定义数码管控制脚为P1口的0-3脚
sbit LED_1=P2^1;
sbit LED_2=P2^2;
sbit LED_3=P2^3;
sbit DQ1=P1^6; //定义18B20单总线引脚
void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4);//声明显示函数
void ds_reset_1(void); //声明18B20复位函数
void wr_ds18_1(char dat); //声明18B20写入函数
void time_delay(unsigned char time);//声明延时函数
int get_temp_1(void); //声明18B20读入温度函数
void delay(unsigned int x); //声明延时函数
void read_ROM(void); //声明18B20读ROM函数
int get_temp_d(void); //声明获取温度函数
void ds_init(void); //声明18B20初始化函数
void ds_getT(void); //声明18B20获得温度显示值函数
/*定义数码管段码=====0-9=====A-G=====*/
unsigned char a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//共阳极数码管的段码0 1 2 3 4 5 6 7 8 9 A B C D E F

仔细看编译对话框的内容,我也遇到过类似的是拼写写错导致报错,display中的l和a顺序调换导致错误;函数拼写错误,调用时又写成正确的,导致报错定义的函数没有被调用。

    查找方法*(参考图片中标注):

    搜索编译对话框中的SEGMENT提示内容dispaly

    并参考SYMBOL下提示的比对查找display。

*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

意思是:定义了一个函数,但是在main等函数中并没调用。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-02-17

我研究了半小时,甚至函数名都改成和书一样的了,最后发现main写成mian了。。。

应该仔细检查一下函数名,别写错了

第2个回答  推荐于2018-02-26
这个你看英语就明白了:
警告:有一个没有调用的函数。
是告诉你,有一个函数,你定义了,却没有调用,这个函数的名字叫:Read_RO()
C51编译器是用于51单片机的,早在C51成立之初,51单片机的ROM是非常小的,只有几K,所以,为了节省ROM空间,C51编译器对于你定义了,但是没有调用的函数会提出警告,意思是提醒你节能减排,不要浪费ROM空间。
这个警告你可以忽略,如果你不想忽略,那么就调用那个函数或者屏蔽掉那个函数就行了。本回答被提问者和网友采纳
第3个回答  2019-04-20
你在主函数用就行了呀

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答