#include<reg52.h>
sbit beep
= P1
^ 5;
sbit k1
= P3
^ 1;
sbit k2
= P3
^ 0;
sbit k3
= P3
^ 2;
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar th0_h
, tl0_l
, time
;
uint key
;
ulong i
, j
;
code uchar th0high_8
[] = {
0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,
0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,
0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF
};
code uchar tl0light_8
[] = {
0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,
0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F,
0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,
0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16
};
code uchar song_1
[] =
{
0,2,2,1,2,1,5,2,2,5,2,1,5,2,2,5,2,1,5,2,2,3,2,1,3,2,2,3,2,1,3,2,2,3,2,1,4,2,2,5,2,1,2,2,3,1,2,3,
5,2,2,5,2,1,5,2,2,5,2,1,5,2,2,3,2,1,5,2,2,5,2,1,3,2,2,3,2,1,3,2,2,5,2,1,2,2,3,1,2,3,3,2,6,2,2,1,3,2,6,2,2,1,
3,2,3,5,2,3,5,2,6,5,2,1,2,2,6,1,2,1,2,2,6,1,2,1,5,2,2,1,2,3,1,2,2,7,1,3,
1,2,3,1,2,3,2,1,1,3,2,3,3,2,1,5,2,3,5,2,1,1,2,3,2,2,3,1,2,3,7,2,1,1,2,3,1,2,3,2,2,1,3,2,3,1,3,1,
7,2,3,7,2,1,1,2,3,1,2,1,2,2,3,2,2,1,1,2,3,7,2,1,1,2,3,1,2,2,1,2,3,1,2,1,3,2,3,3,2,1,3,2,3,3,2,1,2,2,3,2,2,1,1,2,3,
2,2,3,0,2,3,0,2,3,0,2,2,1,2,1,5,2,3,5,2,1,5,2,3,5,2,1,5,2,3,6,2,1,3,2,3,2,2,1,
3,2,3,3,2,3,3,2,2,1,3,3,7,2,2,5,2,3,5,2,1,5,2,3,7,2,1,3,2,3,2,2,1,3,2,3,2,2,1,2,2,3,2,2,1,1,2,3,7,1,3,
1,2,3,7,2,1,5,1,3,3,2,3,2,2,1,2,2,3,1,2,1,1,2,3,2,2,4,1,2,1,3,2,1,1,2,1,2,2,1,1,2,2,1,2,4,3,2,4,2,2,4,1,2,4
7,1,4,1,2,4,7,1,4,1,2,4,
};
code uchar song_2
[] =
{
5, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 2, 1, 2, 6, 5, 1, 6,
1, 2, 2, 3, 2, 2, 1, 3, 2, 7, 2, 2, 6, 2, 3, 3, 2, 1, 5, 2, 12,
6, 2, 2, 7, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 6, 6, 1, 6,
7, 1, 2, 6, 1, 2, 5, 1, 2, 5, 2, 2, 1, 2, 3, 2, 2, 1, 3, 2, 12,
5, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 2, 1, 2, 6, 5, 1, 6,
1, 2, 2, 3, 2, 2, 1, 3, 2, 7, 2, 2, 2, 3, 3, 1, 3, 1, 6, 2, 12,
1, 3, 2, 7, 2, 2, 6, 2, 2, 5, 2, 6,
6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 6,
7, 1, 4, 6, 1, 2, 5, 1, 4, 2, 2, 2, 1, 2, 12,
8, 2, 2, 2, 3, 2, 3, 3, 2, 2, 3, 2, 8, 2, 2, 6, 2, 2, 7, 2, 2, 6, 2, 3, 3, 2, 1, 5, 2, 12,
8, 2, 2, 2, 3, 2, 3, 3, 2, 2, 3, 2, 8, 2, 2, 6, 2, 2, 7, 2, 2, 5, 2, 3, 3, 2, 1, 6, 2, 12,
5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 6, 7, 1, 2, 6, 1, 2, 5, 1, 2, 3, 2, 6, 4, 2, 6, 2, 2, 4, 1, 2, 2, 1, 2, 10,
};
code uchar song_3
[] =
{ 1,3,2,2,3,2,3,3,3,1,3,2,6,2,2,6,2,2,2,3,3,7,2,3,5,2,2,3,2,2,3,2,3,7,2,3,6,2,3,5,2,2,1,2,2,1,2,3,5,2,3,3,2,6,2,2,2,3,2,2,
4,2,4,1,3,3,7,2,1,7,2,1,1,3,2,5,2,4,4,2,3,3,2,2,4,2,1,4,2,4,1,3,3,7,2,1,7,2,1,6,2,1,5,2,5,1,3,2,2,3,2,3,3,3,1,3,2,6,2,2,6,2,3,2,3,3,
7,2,3,5,2,2,3,2,2,3,2,3,7,2,3,6,2,3,5,2,2,1,2,2,1,2,3,5,2,3,3,2,6,2,2,2,3,2,2,4,2,4,5,2,3,4,2,2,4,2,2,5,2,2,3,2,3,5,2,3,1,3,3,3,3,3,
2,3,4,2,3,2,2,3,2,1,3,3,1,3,2,1,3,6,0,2,3,0,2,3,0,2,3,0,2,3,0,2,3,0,2,3,1,3,2,2,3,2,3,3,3,1,3,2,6,2,2,6,2,3,2,3,3,
7,2,3,5,2,2,3,2,2,3,2,3,7,2,3,6,2,3,5,2,2,1,2,2,1,2,3,5,2,3,3,2,4,2,2,2,3,2,2,4,2,4,1,3,3,7,2,2,1,3,2,5,2,4,4,2,3,3,2,3,4,2,1,
4,2,4,1,3,3,7,2,2,7,2,2,6,2,2,5,2,5,1,3,2,2,3,2,3,3,3,1,3,2,6,2,2,6,2,3,2,3,3,7,2,3,5,2,2,3,2,2,3,2,3,7,2,3,6,2,3,5,2,2,1,2,2,1,2,3,5,2,3,
};
void delay1(uint m
)
{
while (m
--);
}
uchar
key_1()
{
key
= 0;
if (k1
== 0)
{
delay1(1000);
if (k1
== 0)
{
key
= 1;
}
while (!k1
);
}
if (key
== 1)
return 1;
else return 0;
}
uchar
key_2()
{
key
= 0;
if (k2
== 0)
{
delay1(1000);
if (k2
== 0)
{
key
= 1;
}
while (!k2
);
}
if (key
== 1)
return 1;
else return 0;
}
uchar
key_3()
{
key
= 0;
if (k3
== 0)
{
delay1(1000);
if (k3
== 0)
{
key
= 1;
}
while (!k3
);
}
if (key
== 1)
return 1;
else return 0;
}
void t0int() interrupt
1
{
TR0
= 0;
beep
= !beep
;
TH0
= th0_h
;
TL0
= tl0_l
;
TR0
= 1;
}
void delay(uchar t
)
{
uchar t1
;
ulong t2
;
for (t1
= 0;t1
< t
;t1
++)
for (t2
= 0;t2
< 2765;t2
++);
TR0
= 0;
}
void sing()
{
TH0
= th0high_8
;
TL0
= tl0light_8
;
TR0
= 1;
delay(time
);
}
void play_1()
{
i
= 0;
time
= 1;
while (time
)
{
a
:
j
= song_1
[i
] + 7 * song_1
[i
+ 1] - 1;
th0_h
= th0high_8
[j
];
tl0_l
= tl0light_8
[j
];
time
= song_1
[i
+ 2];
if (song_1
[i
] != 0)
{
sing();
i
+= 3;
}
else
{
beep
= 1;
delay(time
);
i
+= 3;
goto a
;
}
if (key_3() == 1 || key_2() == 1)
{
beep
= 1;
break;
}
}
}
void play_2()
{
i
= 0;
time
= 1;
while (time
)
{
a
:
j
= song_2
[i
] + 7 * song_2
[i
+ 1] - 1;
th0_h
= th0high_8
[j
];
tl0_l
= tl0light_8
[j
];
time
= song_2
[i
+ 2];
if (song_2
[i
] != 0)
{
sing();
i
+= 3;
}
else
{
beep
= 1;
delay(time
);
i
+= 3;
goto a
;
}
if (key_1() == 1 || key_3() == 1)
{
beep
= 1;
break;
}
}
}
void play_3()
{
i
= 0;
time
= 1;
while (time
)
{
a
:
j
= song_3
[i
] + 7 * song_3
[i
+ 1] - 1;
th0_h
= th0high_8
[j
];
tl0_l
= tl0light_8
[j
];
time
= song_3
[i
+ 2];
if (song_3
[i
] != 0)
{
sing();
i
+= 3;
}
else
{
beep
= 1;
delay(time
);
i
+= 3;
goto a
;
}
if (key_1() == 1 || key_2() == 1)
{
beep
= 1;
break;
}
}
}
void main(void)
{
TMOD
= 1;
ET0
= 1;
EA
= 1;
while (1)
{
beep
= 1;
if (key_1())
{
play_1();
}
if (key_2())
{
play_2();
}
if (key_3())
{
play_3();
}
}
}
懒得打解释了,等有空再打上去 除了中间那首歌是完整的 其他两首歌我还没有编写完全,工作量太大了
转载请注明原文地址: https://lol.8miu.com/read-23810.html