#include<8051.h> unsigned char PWMH; unsigned char PWM; unsigned char COUNTER; bit dflg; void timer0init(void) { TMOD=(TMOD&0xF0)|0x02; TH0=(256-200); TL0=(256-200); ET0=1; EA=1; TR0=1; } void timer0(void) interrupt 1 { COUNTER++; if ((COUNTER==PWM)) { COUNTER=0; P1_0=0; if (dflg==0) PWMH++; else PWMH--; } else if (COUNTER==PWMH) { P1_0=1; } } void main(void) { dflg=0; P1_0=1; PWMH=0; PWM=60; timer0init(); while (1) { if (PWMH==PWM) { PWMH--; COUNTER=0; dflg=1; } if ((PWMH==0)&&(dflg==1)) { PWMH=1; COUNTER=0; dflg=0; } } }