標題: 做了個SOS的聲光求救告警程序,蜂鳴器響SOS聲音,數(shù)碼管顯示SOS字符。但是按K3按鍵... [打印本頁]
作者: csz9981 時間: 2017-4-8 21:48
標題: 做了個SOS的聲光求救告警程序,蜂鳴器響SOS聲音,數(shù)碼管顯示SOS字符。但是按K3按鍵...
做了個SOS的聲光求救告警程序,蜂鳴器響SOS聲音,數(shù)碼管顯示SOS字符。下載進單片機后,按K3,按鍵,中斷沒反應,
編譯時:提示警告:
void Int0Configuration()
沒有調(diào)用?
Build target 'Target 1'
compiling beep+key1.c...
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?INT0CONFIGURATION?BEEP_KEY1
Program Size: data=15.0 xdata=0 code=383
creating hex file from "SOS"...
"SOS" - 0 Error(s), 1 Warning(s).
下面是我的程序,請大家給看看唄。
/*
說明:蜂鳴器占用P1^5。數(shù)碼管占用P0口。
*/
#include<reg51.h>
sbit Beep=P1^5; //蜂鳴器占用P1^5。
sbit K3=P3^2; //獨立按鍵
sbit LSA=P2^2; //位選信號
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char SOS[]={0x6d,0x3f,0x6d}; //SOS的顯示碼
unsigned int i;
unsigned char e=0x01;
void delay(unsigned int a) //
{
unsigned char b;
for(a;a>0;a--)
for(b=155;b>0;b--);
}
void SOSdigital()
{
unsigned char d,j;
for(d=0;d<3;d++)
{
switch(d) //位選,選擇點亮的數(shù)碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
}
P0=SOS[d];//發(fā)送段碼
j=10; //掃描間隔時間設定
while(j--);
P0=0x00;//消隱
}
}
void Beepf()
{
Beep=0;
SOSdigital(); //
delay(1); //
Beep=1;
SOSdigital();
delay(1);
}
void Beep1()
{
i=150;
while(i--)
{
Beepf();
}
}
void Beep2()
{
i=450;
while(i--)
{
Beepf();
}
}
void SOSaudio() //
{
unsigned char c;
for(c=0;c<3;c++)
{
Beep1();
delay(200);
}
delay(400);
for(c=0;c<3;c++)
{
Beep2();
delay(600);
}
for(c=0;c<3;c++)
{
Beep1();
delay(200);
}
delay(2400);
}
void Int0Configuration()
{
//設置INT0
IT0=1;//跳變沿出發(fā)方式(下降沿)
EX0=1;//打開INT0的中斷允許。
EA=1;//打開總中斷
}
/*******************************************************************************
* 函數(shù)名 : Int0()
* 函數(shù)功能 : 外部中斷0 中斷函數(shù)
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void Int0() interrupt 0
{
if(K3==0)
{
e=~e;
}
}
void main()
{
while(e)
{
SOSaudio();
}
}
作者: 你像風兒來了 時間: 2017-4-9 13:39
void Int0Configuration(),你這個函數(shù)主函數(shù)里要調(diào)用啊,你開頭給出的警告提示不就是這個?
作者: imxuheng 時間: 2017-4-9 14:24
對,你的main里面沒有調(diào)用Int0Configuration
作者: csz9981 時間: 2017-4-9 15:07
哦,對了,差點忘了。
作者: yzzhai 時間: 2017-4-9 15:28
主函數(shù)需調(diào)用void Int0Configuration(),希望有幫助
作者: zl2168 時間: 2017-4-9 17:42
本帖最后由 zl2168 于 2017-4-9 17:52 編輯
給你個參考案例,里面有警報程序,你可在proteus仿真中聽聽警報聲,若滿意,則下一步。
先Proteus仿真一下,確認有效
電子密碼鎖1.rar
(1.13 MB, 下載次數(shù): 8)
2017-4-9 17:50 上傳
點擊文件名下載附件
電子密碼鎖Proteus仿真.jpg (307.48 KB, 下載次數(shù): 87)
下載附件
2017-4-9 17:51 上傳
以上摘自張志良編著《80C51單片機實用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9, 用于學習51單片機原理,程序(c和匯編)語句條條有注解,便于閱讀理解,便于自學。
《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。
書中電路和程序設計有詳細說明,程序語句條條有注解。
作者: 51Lovers 時間: 2017-4-10 12:46
主程序中的e沒定義呀,必須是全局的
作者: csz9981 時間: 2017-4-25 19:19
主函數(shù)需調(diào)用void Int0Configuration(),后, 功能 正常了。感謝大家。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |