#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit SPK = P3^7;
uchar FRQ = 0x00;
void Delayms(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void main()
{
P2 = 0x00;
TMOD = 0x11;//兩個16bit定時器全開
TH0 = 0x00;
TL0 = 0xff;
IT0 = 1;
IE = 0x8b;//10001011三個中斷被允許
IP = 0x01;//外部中斷0優(yōu)先級最高
TR0 = 0;
TR1 = 0;
while(1)
{
FRQ++;
Delayms(1);
}
}
void EX0_INT() interrupt 0
{
TR0 = !TR0;
TR1 = !TR1;
if(P2 == 0x00)//當(dāng)前狀態(tài)決定了按鍵的作用
P2 = 0xe0;//同時亮3個
else
P2 = 0x00;
}
void T0_INT() interrupt 1//響鈴
{
TH0 = 0xfe;
TL0 = FRQ;//隨時間增加(中斷加快,頻率提高,聲調(diào)變高),之后溢出
SPK = ~SPK;
}
void T1_INT() interrupt 3//亮燈
{
TH0 = -45000/256;
TL0 = -45000%256;
P2 = _crol_(P2,1);
}
Powered by 單片機教程網(wǎng)