標(biāo)題:
linking... *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS ...
[打印本頁]
作者:
heicad
時間:
2016-3-11 20:57
標(biāo)題:
linking... *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS ...
這是我根據(jù)別人的代碼加以優(yōu)化的,沒有錯誤只是有警告linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?KAISHI_KEYSCAN?1
Program Size: data=34.0 xdata=0 code=701
creating hex file from "1"...
"1" - 0 Error(s), 1 Warning(s).,求大神指教怎么改
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbit start_stop = P3^6;
sbit reset = P3^7;
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;
sbit key5 = P1^4;
sbit key6 = P1^5;
sbit key7 = P1^6;
sbit key8 = P1^7;
sbit state = P3^4;
sbit kaishi=P3^1;
uchar start_stop_flag = 0;
uchar key_flag = 0;
uchar reset_flag = 0;
uchar action = 0;
uchar kaishi_flag=0;//開始標(biāo)志
uchar second = 20;//倒計時20秒
uchar timer0_count = 0;
uchar number = 0;
uchar number_display = 0;
/*延時函數(shù)*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*數(shù)碼管顯示驅(qū)動函數(shù)*/
void display(uchar number,uchar second)
{
uchar second_first,second_second;
second_first = second / 10;
second_second = second % 10;
P2 = 0xfe;
P0 = table[number];
delay(2);
P2 = 0xfd;
P0 = 0x40;
delay(2);
P2 = 0xfb;
P0 = table[second_first];
delay(2);
P2 = 0xf7;
P0 = table[second_second];
delay(2);
}
/*開始鍵掃描函數(shù)*/
void start_stop_keyscan()
{
if(start_stop == 0)
{
delay(8);
if((start_stop == 0)&&(!start_stop_flag))
{
start_stop_flag = 1;
action = 1;
TR0 = 1;
state = 0;
}
}
else
{
start_stop_flag = 0;
}
}
/*八位搶答鍵掃描函數(shù)*/
key_scan8()
{
if(key1 == 0)
{
delay(8);
if((key1 == 0)&&(!key_flag))
{
key_flag = 1;
number = 1;
number_display = number;
}
}
else if(key2 == 0)
{
delay(8);
if((key2 == 0)&&(!key_flag))
{
key_flag = 1;
number = 2;
number_display = number;
}
}
else if(key3 == 0)
{
delay(8);
if((key3 == 0)&&(!key_flag))
{
key_flag = 1;
number = 3;
number_display = number;
}
}
else if(key4 == 0)
{
delay(8);
if((key4 == 0)&&(!key_flag))
{
key_flag = 1;
number = 4;
number_display = number;
}
}
else if(key5 == 0)
{
delay(8);
if((key5 == 0)&&(!key_flag))
{
key_flag = 1;
number = 5;
number_display = number;
}
}
else if(key6 == 0)
{
delay(8);
if((key6 == 0)&&(!key_flag))
{
key_flag = 1;
number = 6;
number_display = number;
}
}
else if(key7 == 0)
{
delay(8);
if((key7 == 0)&&(!key_flag))
{
key_flag = 1;
number = 7;
number_display = number;
}
}
else if(key8 == 0)
{
delay(8);
if((key8 == 0)&&(!key_flag))
{
key_flag = 1;
number = 8;
number_display = number;
}
}
else
{
key_flag = 0;
number = 0;
}
if(number_display != 0)
{
return 1;
}
else
{
return 0;
}
}
/*復(fù)位鍵掃描函數(shù)*/
reset_keyscan()
{
if(reset == 0)
{
delay(8);
if((reset == 0)&&(!reset_flag))
{ second=20;
reset_flag = 1;
number_display = 0;
state = 1;
}
}
else
{
reset_flag = 0;
}
}
/*主持人開始函數(shù)*/
kaishi_keyscan()
{
if(kaishi == 0)
{
delay(8);
if((kaishi == 0)&&(!kaishi_flag))
{
kaishi_flag = 1;
number_display = 0;
state = 1;
}
}
else
{
kaishi_flag = 0;
}
}
/*主函數(shù)*/
void main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=0;
while(1)
{
while((kaishi == 0)&&(!kaishi_flag))
{
start_stop_keyscan();
reset_keyscan();
while(action)
{
while(!key_scan8())
{
display(number_display,second);
if(second == 0)
{
second = 20;
break;
}
}
TR0 = 0;
second = 0;
display(number_display,second);
action = 0;
break;
}
display(number_display,second);
}
}
}
/*中斷服務(wù)函數(shù)*/
void timer0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
timer0_count++;
if(timer0_count == 20)
{
timer0_count = 0;
second--;
if(second == 0)
{
TR0 = 0;
number_display = 0;
state = 1;
action = 0;
}
}
}
作者:
heicad
時間:
2016-3-11 20:58
沒有錯誤,運行沒啥大問題的,這樣搶答器這樣已經(jīng)不錯了,干嘛還要這么較真。
作者:
heicad
時間:
2016-3-11 20:58
//void kaishi_keyscan()這個函數(shù)沒用到,不影響,注釋了就不會有警告了,還有一個帶返回值的函數(shù)沒寫返回值參數(shù)類型,不過也不影響,下面這個改好了,沒有警告了。你看一下可以用嗎,
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbit start_stop = P3^6;
sbit reset = P3^7;
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;
sbit key5 = P1^4;
sbit key6 = P1^5;
sbit key7 = P1^6;
sbit key8 = P1^7;
sbit state = P3^4;
sbit kaishi=P3^1;
uchar start_stop_flag = 0;
uchar key_flag = 0;
uchar reset_flag = 0;
uchar action = 0;
uchar kaishi_flag=0;//????
uchar second = 20;//???20?
uchar timer0_count = 0;
uchar number = 0;
uchar number_display = 0;
/*????*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*?????????*/
void display(uchar number,uchar second)
{
uchar second_first,second_second;
second_first = second / 10;
second_second = second % 10;
P2 = 0xfe;
P0 = table[number];
delay(2);
P2 = 0xfd;
P0 = 0x40;
delay(2);
P2 = 0xfb;
P0 = table[second_first];
delay(2);
P2 = 0xf7;
P0 = table[second_second];
delay(2);
}
/*???????*/
void start_stop_keyscan()
{
if(start_stop == 0)
{
delay(8);
if((start_stop == 0)&&(!start_stop_flag))
{
start_stop_flag = 1;
action = 1;
TR0 = 1;
state = 0;
}
}
else
{
start_stop_flag = 0;
}
}
/*?????????*/
uchar key_scan8()
{
if(key1 == 0)
{
delay(8);
if((key1 == 0)&&(!key_flag))
{
key_flag = 1;
number = 1;
number_display = number;
}
}
else if(key2 == 0)
{
delay(8);
if((key2 == 0)&&(!key_flag))
{
key_flag = 1;
number = 2;
number_display = number;
}
}
else if(key3 == 0)
{
delay(8);
if((key3 == 0)&&(!key_flag))
{
key_flag = 1;
number = 3;
number_display = number;
}
}
else if(key4 == 0)
{
delay(8);
if((key4 == 0)&&(!key_flag))
{
key_flag = 1;
number = 4;
number_display = number;
}
}
else if(key5 == 0)
{
delay(8);
if((key5 == 0)&&(!key_flag))
{
key_flag = 1;
number = 5;
number_display = number;
}
}
else if(key6 == 0)
{
delay(8);
if((key6 == 0)&&(!key_flag))
{
key_flag = 1;
number = 6;
number_display = number;
}
}
else if(key7 == 0)
{
delay(8);
if((key7 == 0)&&(!key_flag))
{
key_flag = 1;
number = 7;
number_display = number;
}
}
else if(key8 == 0)
{
delay(8);
if((key8 == 0)&&(!key_flag))
{
key_flag = 1;
number = 8;
number_display = number;
}
}
else
{
key_flag = 0;
number = 0;
}
if(number_display != 0)
{
return 1;
}
else
{
return 0;
}
}
/*???????*/
void reset_keyscan()
{
if(reset == 0)
{
delay(8);
if((reset == 0)&&(!reset_flag))
{ second=20;
reset_flag = 1;
number_display = 0;
state = 1;
}
}
else
{
reset_flag = 0;
}
}
/*???????*/
//void kaishi_keyscan()
//{
// if(kaishi == 0)
// {
// delay(8);
// if((kaishi == 0)&&(!kaishi_flag))
// {
// kaishi_flag = 1;
// number_display = 0;
// state = 1;
// }
// }
// else
// {
// kaishi_flag = 0;
// }
//}
/*???*/
void main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=0;
while(1)
{
while((kaishi == 0)&&(!kaishi_flag))
{
start_stop_keyscan();
reset_keyscan();
while(action)
{
while(!key_scan8())
{
display(number_display,second);
if(second == 0)
{
second = 20;
break;
}
}
TR0 = 0;
second = 0;
display(number_display,second);
action = 0;
break;
}
display(number_display,second);
}
}
}
/*??????*/
void timer0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
timer0_count++;
if(timer0_count == 20)
{
timer0_count = 0;
second--;
if(second == 0)
{
TR0 = 0;
number_display = 0;
state = 1;
action = 0;
}
}
}
作者:
heicad
時間:
2016-3-11 20:58
非常感謝撒,因為是要做考試設(shè)計還要焊接電路板,老師要求比較嚴(yán)格,親,你給我改的我運行之后發(fā)現(xiàn)有個問題,就是我斷開開關(guān)我的數(shù)碼管依然還是倒計時
作者:
heicad
時間:
2016-3-11 20:58
不好意思啊,原來開始函數(shù)注掉了,沒看到
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1