#include "REG51.h" #include "INTRINS.h" sbit K1 =P1^4 ; //增加键 sbit K2 =P1^5 ; //减少键 sbit P00 =P0^1; unsigned char PWM=0xe7; //赋初值 void delayms(unsigned char ms); void delay(unsigned char t); /*********************************************************/ void main() { P1=0xff; TMOD=0x21 ; TH0=0xff ; //50us延时常数 TL0=0xce ; //频率调节 TH1=PWM ; //脉宽调节 TL1=0 ; EA=1; ET0=1; ET1=1; TR0=1 ; while(1) { do{ if(PWM!=0xff) {PWM++ ;delayms(10);} else Beep() ; } while(K1==0); do{ if(PWM!=0xce) {PWM-- ;delayms(10);} else Beep() ; } while(K2==0); } } void timer0() interrupt 1 { TR1=0 ; TH0=0xff ; TL0=0xce ; TH1=PWM ; TR1=1 ; P00=0 ; //启动输出 } void timer1() interrupt 3 { TR1=0 ; P00=1 ; //结束输出 } /*********************************************************/ // 延时子程序 /*********************************************************/ void delay(unsigned char t) { while(t--) ; } /*********************************************************/ // 延时子程序 /*********************************************************/ void delayms(unsigned char ms) { unsigned char i ; while(ms--) { for(i = 0 ; i < 120 ; i++) ; } } /*********************************************************/