#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--); }
|