单片机输出PWM波//*******************函数声明,变量定义*******************#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedint//端口定义sfrp0=0x80;sfrp1=0x90;sfrp2=0xa0;sfrp3=0xb0;//键sbitadd_speed=P1^0;sbitsub_speed=P1^1;//PWM控速uinttime_PWM=0;//PWM时间计数uinthigh_PWM=0;//PWM高电平时间uintt_PWM=16;//PWM周期//*******************延时程序*******************voiddelayms(unsignedcharms){unsignedchari;while(ms--){for(i=0;i120;i++);}}//*******************键盘扫描程序*******************voidkey_change(){if(add_speed==0){delayms(10);if(add_speed==0){if(high_PWM16){high_PWM++;}}}if(sub_speed==0){delayms(10);if(sub_speed==0){if(high_PWM0){high_PWM--;}}}}//*******************中断程序*******************//PWM波生成,T0中断voidPWM_T0(void)interrupt1{TH0=0Xd8;TL0=0Xf0;time_PWM++;if(time_PWMhigh_PWM){p2=0xff;}if(time_PWM==high_PWM){p2=0x00;}elseif(time_PWM==t_PWM){p2=0xff;time_PWM=0;}}//*******************主程序*******************voidmain(){p0=0xff;p1=0Xff;p2=0xff;p3=0xff;TH0=0xd8;//定时10usTL0=0xf0;TMOD=0x01;EA=1;ET0=1;TR0=1;while(1){key_change();}}