📄 main.c
字号:
#include <REG52.H>
void delay(unsigned char n);
code unsigned song[]={0xf0,0xf0,0xf8,0x8b,0xf9,0x5b,0xfa,0x14,0xfa,
0x0c,0xfb,0x03,0xfb,0x8f,0xfc,0x0b,0xfc,0x43,0xfc,0xab,0xfd,
0x08,0xfd,0x33,0xfd,0x81,0xfd,0xc7,0xfe,0x05,0xfe,0x32,0xfe,
0x55,0xfe,0x84,0xfe,0x99,0xfe,0xc0,0xfe,0xe3,0xff};
code int note[]={
0x0000,0xFB03,0xFB8E,0xFC0B,0xFC43,0xFCAB,0xFD08,0xFD32,
0xFD81,0xFDC7,0xFE05,0xFE21,0xFE55,0xFE83,0xFE99,0xFEC0};
unsigned char i=0;
unsigned char hi_note,low_note;
static void timer1_isr(void) interrupt TF1_VECTOR using 2
{
TR1=0;
TL1=low_note;
TH1=hi_note;
TR1=1;
P3_7=~P3_7;
}
static void timer1_initialize(void)
{
EA=0;
TR1=0;
TMOD = 0X10;
ET1=1;
EA=1;
}
void singing()
{
unsigned char beat,temp;
i=0;
do {
temp=song[i];
if (temp==0) {
TR1=0;
return;
}
beat=temp & 0x0f;
temp=(temp >> 4) & 0x0f;
if (temp==0) TR1=0;
else {
hi_note=note[temp] >> 8;
low_note=note[temp] & 0x00FF;
TR1=1;
}
delay(beat);
i++;
} while(1);
}
void main (void) {
timer1_initialize();
do {
singing();
} while (1); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -