| #include<reg52.h> #define uchar unsigned char
 
 unsigned char N=0;
 unsigned char X=20;        //占空比初始值为20%
 
 int a,b;
 
 sbit PWM=P3^6;        //PWM输出脚
 
 sbit P3_0=P3^0;//正传
 sbit P3_1=P3^1;//反转
 sbit P3_2=P3^2;//加速
 sbit P3_3=P3^3;//减速
 
 sbit P1_0=P1^0;//M1
 sbit P1_1=P1^1;//M1
 sbit P1_2=P1^2;//M2
 sbit P1_3=P1^3;//M2
 
 
 void scjs(void)interrupt 3
 {
 TH1=0Xff;
 TL1=0x17;
 b++;
 }
 
 main()
 {
 TMOD=0x00;
 IE=0X88;
 TH1=0Xff;
 TL1=0X17;
 TR0=1;
 TR1=1;
 a=0;
 b=0;
 
 
 while(1)
 {
 PWM=1;
 while(1)
 {
 b=0;
 while(!b);
 if (N==X)
 PWM=0;
 if (N==100)break;
 N++;
 
 if(P3_0==0)//正传
 {
 P1_0=1;
 P1_1=0;
 P1_2=1;
 P1_3=0;
 }
 if(P3_1==0)//反转
 {
 P1_0=0;
 P1_1=1;
 P1_2=0;
 P1_3=1;
 }
 if(P3_3==0)           //速度加
 {
 X++;
 
 }
 if(P3_3==0)         //速度减
 {
 X--;
 }
 }
 N=0;
 }
 
 }
 
 
 
 
 
 |