MCU型号 STC 89C52RC
#include
#define RldTmr(fr) 65536 - (11059200 / 12) / (fr << 1)
#define FuDian(n) (n << 1) / 3 //附点n分音符的换算
typedef unsigned char UCHAR;
typedef unsigned int UINT;
typedef unsigned long ULONG;
sbit BUZZ = P1^6;
UINT code noteFreq[] = { //中音 1-7 和高音 1-7对应的频率列表
523, 587, 659, 698, 784, 880, 988,
1047, 1175, 1319, 1397, 1568, 1760, 1976
};
UINT code tmrRld[] = { //中音 1-7 和高音 1-7对应的定时器重载值
RldTmr(523), RldTmr(587), RldTmr(659), RldTmr(698), RldTmr(784), RldTmr(880), RldTmr(988),
RldTmr(1047), RldTmr(1175), RldTmr(1319), RldTmr(1397), RldTmr(1568), RldTmr(1760), RldTmr(1976),
};
UCHAR code musicNote[] = { //音名
1, 2, 3, 1,
1, 2, 3, 1,
3, 4, 5,
3, 4, 5,
5, 6, 5, 4, 3, 1,
5, 6, 5, 4, 3, 1,
1, 5, 1,
1