|
#include <reg52.h>
sbit LED = P0^0;
sbit BEEP = P0^1;
unsigned int H,L;
void init(void)
{
BEEP = 1;
LED = 1;
P1 = 0xff;
EA = 1;
ET0 = 1;
TMOD = 0x01;
}
void main(void)
{
unsigned int i;
unsigned int code tone[] = {523,587,659,698,784,880,988};
init();
while(1)
{
switch(~P1)
{
case 0x80: i = 0;LED=0;break;
case 0x40: i = 1;break;
case 0x20: i = 2;break;
case 0x10: i = 3;break;
case 0x08: i = 4;break;
case 0x04: i = 5;break;
case 0x02: i = 6;break;
case 0x00: i = 7;break;
}
if(i!=7)
{
H = (65536-1000000/tone[i]/2)/256;
L = (65536-1000000/tone[i]/2)/256;
TH0 = H;
TH0 = L;
TR0=1;
while(P1!=0xff);
TR0=0;
BEEP=1;
LED = 1;
}
else
{
TR0= 0 ;
BEEP= 0 ;
}
}
}
void timer0(void) interrupt 1
{
TH0 = H;
TL0 = L;
BEEP = ~BEEP;
}
|
|