```c
include define C4 44778 define D4 44257 define E4 43792 define F4 43579 define G4 43189 define A4 42841 define B4 42531 define C5 42388 // 延时函数 void delay(unsigned int count) { while (count--); } // 发声函数 void beep(unsigned int frequency, unsigned int duration) { unsigned int i; unsigned long time; time = 1000000 / frequency; // 将频率转换为周期 for (i = 0; i < duration; i++) { P1 = 0x08; // 输出高电平 delay(time / 2); // 上半周期 P1 = 0x00; // 输出低电平 delay(time / 2); // 下半周期 } } // 主函数 void main() { // 设置定时器 TMOD = 0x01; TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; TR0 = 1; // 播放音乐 beep(C4, 100); beep(D4, 100); beep(E4, 100); while (1); } ``` 这个代码示例使用了STC89C52RC单片机,通过设置定时器T0来产生不同频率的方波信号,从而驱动蜂鸣器发出音乐。每个音符的频率和持续时间可以通过修改`beep`函数中的参数来调整。 如果你需要播放更复杂的音乐,可以编写更复杂的音乐播放函数,或者使用现有的音乐库和函数来生成音乐。