粗略看了一下,有几点错误,首先一般PWM控制不这么用,应该用硬件PWM功能输出,再然后控制延时的变量“i”没有控制范围,i++到0xff,以后容易溢出错误。况且i对9取余是要干嘛?对5取余也比9对啊,再然后你这按键延迟delay(1000)太短,容易出错,你知道12M晶振的单片机t--1000次才用多长时间么?可以说是不到1ms,能去抖?