keil 編譯的時候出現這個警告*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS 要怎么消除??沒有任何錯誤
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit S1=P3^5; //定義"啟動"按鈕
sbit S2=P3^4; //定義"停止"按鈕
sbit S3=P3^3; //定義"清零"按鈕
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
uchar p,q,a,s,g,hms,hmg;
unsigned char disp[4];
uchar code table[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80,0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E}; //共陽極數碼管編碼
void display(uchar s,uchar g,uchar hms,uchar hmg); //聲明顯示函數
void delay(uint z); //聲明延時函數
void init(); //聲明初始化函數
void main()
{
init(); //調用初始化程序
while(1)
{
if(S1==0) //檢測"啟動"按鈕是否按下
{
delay(10); //延時去抖動
if(S1==0) //再次檢測"啟動"按鈕是否按下
{
while(!S1);//松開手檢測,若按鍵沒有釋放,S1始終為0,那么!S1始終為1,程序就一直停在此
TR0=1; //啟動定時器
}
}
if(S2==0) //檢測"停止"按鈕是否按下
{
delay(10); //延時去抖動
if(S2==0) //再次檢測"停止"按鈕是否按下
{
while(!S2);//松手檢測
TR0=0; //關閉定時器
}
}
if(S3==0) //檢測"清零"按鈕是否按下
{
delay(10); //延時去抖動
if(S3==0) //再次檢測"清零"按鈕是否按下
{
while(!S3);//松手檢測
p=0; //將變量p的值清零
q=0; //將變量q的值清零
s=0; //將秒的十位清零
g=0; //將秒的個位清零
hms=0; //將毫秒的十位清零
hmg=0; //將毫秒的個位清零
TR0=0; //關閉定時器
}
}
display(s, g, hms, hmg); //調用顯示函數
}
}
void delay(uint z) //延時函數
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar s,uchar g,uchar hms,uchar hmg) //顯示程序
{
P2=0x7f;
s=disp[0];
delay(10);
P2=0xbf;
g=disp[1];
delay(10);
P2=0xdf;
hms=disp[2];
delay(10);
P2=0xef;
hmg=disp[3];
delay(10); //使用動態掃描的方法實現數碼管顯示
}
void init() //初始化程序
{
p=0;
TMOD=0x01; //使用定時器T0的方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //定時5ms中斷一次
EA=1; //中斷總允許
ET0=1; //允許定時器T0中斷
}
void timer0() interrupt 1
{
TH0=(65536-5000)/256; //重新賦初值
TL0=(65536-5000)%256;
a++; //中斷一次變量a加一
if(a==20)
{
a=0;
p++; if(p>99) //當秒表中毫秒的值大于99時回零
{
p=0;
q++; //秒表中秒的值加一
if (q==60) //當秒表中秒的值等于60時回零
{
q=0;
}
}
s=q/10; g=q%10; hms=p/10; hmg=p%10; //分離秒的個位和十位,分離毫秒的個位和十位
}
}
|