功能:直流電機調速 時間:2010—7—21 _____________________________________________ #include<reg52.h> sbit KEY1 = P3^1; //定義調速按鍵 sbit PWM = P1^5; //定義調速端口 unsigned char CYCLE; //定義周期T=x*0.1ms unsigned char PWM_ON ; //定義高電平時間 void delay(unsigned int cnt) { while(--cnt); } main() { unsigned char PWM_Num; TMOD |=0x01; TH0=(65536-1000)/256; TL0=(65536-1000)%256; IE= 0x82; TR0=1; CYCLE = 10; while(1) { if(!KEY1) { delay(10000); if(!KEY1) { PWM_Num++; if(PWM_Num==4) PWM_Num=0; switch(PWM_Num) { case 0:P0=0x06;PWM_ON=0;break; case 1:P0=0x5B;PWM_ON=4;break; case 2:P0=0x4F;PWM_ON=6;break; case 3:P0=0x66;PWM_ON=8;break; default:break; } } } } } void tim(void) interrupt 1 using 1 { static unsigned char count; TH0=(65536-1000)/256; TL0=(65536-1000)%256; if (count==PWM_ON) { PWM = 1; } count++; if(count == CYCLE) { count=0; if(PWM_ON!=0) PWM = 0; } }