#include<reg51.h> sbitIN1=P1^0; sbitIN2=P1^1; sbitENA=P1^2; voiddelay(unsigned int z); voiddelay_us(unsigned int aa); /******************主函数******************************/ voidmain() { while(1) { unsigned int i, cycle=0,T=2048; IN1=1;//正转 IN2=0; for(i=0;i<200;i++) { delay(10);//PWM占空比为50%,修改延时调整PWM脉冲 ENA=~ENA; } IN1=0;//反转 IN2=1; for(i=0;i<100;i++) { delay(20);// PWM占空比为50%,修改延时调整PWM脉冲 ENA=~ENA; IN1=1;//自动加速正转 IN2=0; while(cycle!=T) { ENA=1; delay_us(cycle++); ENA=0; delay_us(T-cycle); } cycle=0; IN1=0;//自动减速反转 IN2=1; while(cycle!=T) { ENA=1; delay_us(cycle++); ENA=0; delay_us(T-cycle); } }
} } /*******************************Z秒延时函数*************************/ voiddelay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*******************************微秒延时**************************/ voiddelay_us(unsigned int aa) { while(aa--); }
|