
/*名稱:報警與旋轉燈
說明:定時器控制報警燈
旋轉顯示,并發出仿真警報聲。
*/
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitSPK=P3^7;
ucharFRQ=0x00;
//延時
voidDelayMS(uintms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
//INT0中斷函數
voidEX0_INT()interrupt0
{
TR0=~TR0;//開啟或停止兩定時器,分別控制報警器的聲音和LED旋轉
TR1=~TR1;
if(P2==0x00)
elseP2=0xe0;//開3個旋轉燈
}
P2=0x00;//關閉所有LED
//定時器0中斷
voidT0_INT()interrupt1
{
TH0=0xfe;
TL0=FRQ;
SPK=~SPK;
}
//定時器1中斷
voidT1_INT()interrupt3
{
TH1=-45000/256;
TL1=-45000%256;
P2=_crol_(P2,1);
}
//主程序
voidmain()
{
P2=0x00;
SPK=0x00;
TMOD=0x11;//T0、T1方式1
TH0=0x00;
TL0=0xff;
IT0=1;
IE=0x8b;//開啟0,1,3號中斷
IP=0x01;//INT0設為最高優先
TR0=0;
TR1=0;//定時器啟停由INT0控制,初始關閉
while(1)
{
FRQ++;
DelayMS(1);
}
}



為了方便大家更好的學習,您還可以關注暢學電子和EDA的公眾號,每天推送相關知識,希望能對你的學習有所幫助!

