|
#include <REGX51.H>
sbit key1=P0^0;
sbit key2=P0^1;
sbit key3=P0^2;
sbit key4=P0^3;
sbit key5=P0^4;
sbit key6=P0^5;
sbit key7=P0^6;
sbit key8=P0^7;
sbit beep=P2^7;
bit mode;
unsigned char TH,TL;
code unsigned int music[]={3816,3401,3030,2857,2551,2272,2024, 958,852,759,714,638,568,506};
void delay_ms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<123;i++);
}
unsigned char key_scan()
{
unsigned char key_no=14;
if(key1==0)
{
delay_ms(10);
if(key1==0)
{
mode=!mode;
}
while(!key1);
}
if(mode==0)
{
if(key2==0) key_no=0;
if(key3==0) key_no=1;
if(key4==0) key_no=2;
if(key5==0) key_no=3;
if(key6==0) key_no=4;
if(key7==0) key_no=5;
if(key8==0) key_no=6;
}else
{
if(key2==0) key_no=7;
if(key3==0) key_no=8;
if(key4==0) key_no=9;
if(key5==0) key_no=10;
if(key6==0) key_no=11;
if(key7==0) key_no=12;
if(key8==0) key_no=13;
}
return key_no;
}
void main()
{
unsigned char key_no;
TMOD=0x00;
ET0=1;
TR0=0;
EA=1;
while(1)
{
key_no=key_scan();
if(key_no!=14)
{
TR0=1;
TH=65536-music[key_no]/256;
TL=65536-music[key_no]%256;
}else
{
TR0=0;
}
}
}
void time0() interrupt 2
{
TH0=TH;
TL0=TL;
beep=!beep;
}
|
|