1、* 【使用说明】: 晶振为 11.0592M利用定时器控制产生占空比可变的 PWM 波按 K3,PWM 值增加,则占空比减小,LED 灯渐亮按 K4,PWM 值减小,则占空比增加,LED 灯渐暗当 PWM 值增加到最大值或减小到最小值时,蜂鸣器将报警*/#include#includesbit K1 =P34 ; /PWM 值增加键sbit K2 =P35; /PWM 值减少键sbit BEEP =P04; /蜂鸣器unsigned char PWM=0x7f ; /赋初值void Beep();void delayms(unsigned char ms);void delay(unsigne
2、d char t);/*/void main() P1=0xff;TMOD=0x21 ;TH0=0xfc ; /1ms 延时常数TL0=0x66 ; /频率调节TH1=PWM ; /脉宽调节TL1=0 ;EA=1;ET0=1;ET1=1;TR0=1 ;while(1)doif(PWM!=0xff)PWM+ ;delayms(10);else Beep() ; while(K1=0);doif(PWM!=0x02)PWM- ;delayms(10);else Beep() ; while(K2=0);/*/ 定时器 0 中断服务程序 (频率)/*/void timer0() interrupt
3、1 TR1=0 ;TH0=0xfc ;TL0=0x66 ;TH1=PWM ;TR1=1 ;P1=0x00 ; /启动输出/*/ 定时器 1 中断服务程序 (脉宽)/*/void timer1() interrupt 3 TR1=0 ;P1=0xff ; /结束输出/*/蜂鸣器子程序/*/void Beep() unsigned char i ;for (i=0 ;i100 ;i+)delay(100) ;BEEP=!BEEP ; /Beep 取反 BEEP=1 ; /关闭蜂鸣器delayms(100); /*/ 延时子程序/*/ void delay(unsigned char t) while(t-) ;/*/ 延时子程序/*/void delayms(unsigned char ms) unsigned char i ;while(ms-)for(i = 0 ; i 120 ; i+) ;/*/