//4级速度可调:0、1、2、3; 对应占空比:0、1/4、2/4、3/4#includesbit key=P3^6;sbit motor=P2^4;unsigned char key_scan(void);void motor_set(unsigned char v) ;void motor_init(void);unsigned char PWM_H=0,n=0,i=0;void main(){ motor_init(); while(1) { if (key_scan() == 1) { motor_set(i%4); } }}//电机转动void motor_run() interrupt 3{ if(n=4) n=0;}//速度控制,4级速度可调:0、1、2、3; 对应占空比:0、1/4、2/4、3/4void motor_set(unsigned char v){ if (v>3) v=3; if (v == 0) TR1 = 0; else { TR1 = 1; PWM_H = v; }}//电机初始化void motor_init(void){ EA=1; ET1=1; TMOD=TMOD & 0X0F | 0x20;}//扫描按键unsigned char key_scan(void){ unsigned char on = 0,i; while(1) { if(key==0) //判断是否按下 { for(i=0;i<100;i++); //软件延时 if(key==0) //再次判断是否按下 { on = 1; break; //跳出循环 } } } while(key==0); return 1;}