文档详情

C语言直流电机控制主程序.docx

发布:2025-02-04约2.35千字共5页下载文档
文本预览下载声明

main.c

#includeat89x52.h

#includeintrins.h

#includemain.h

bitMoto_Dir=0;

ucharirq_count;

ucharirq_count_t;

ucharPWM_TIME_H,PWM_TIME_L;

biti=0;

/***********************短延时***************************/

voidShortDelay(void)

{ucharx,y;

for(x=0;x5;x++)

for(y=0;y125;y++)

_Nop();

return;

}

/************************主函数***************************/

voidmain(void)

{

PWM1=0;PWM2=0;PWM3=1;PWM4=1;

irq_count=0;

i=0;

PWM_TIME_H=80;

PWM_TIME_L=20;

ET1=1;//T1使能

TMOD=0x11;//T1都为方式1计时*/

TH1=0xFC;TL1=0x18;//T1初值

TR1=1;//定时器启动

EA=1;//开全局中断

while(1)

{//**************按键处理**************************/

if(LEFT_KEY)

{ShortDelay();

if(LEFT_KEY)//延时去抖

{

Moto_Dir=1;

PWM3=0;PWM4=1;

}//endif(LEFT_KEY)

while(LEFT_KEY);

}//endif(LEFT_KEY)

if(RIGHT_KEY)

{ShortDelay();

if(RIGHT_KEY)//延时去抖

{

Moto_Dir=0;

PWM3=1;PWM4=0;

}//endif(RIGHT_KEY)

while(RIGHT_KEY);

}//endif(RIGHT_KEY)

if(UP_KEY)

{ShortDelay();

if(UP_KEY)//延时去抖

{

if(PWM_TIME_H70)

{

PWM_TIME_H--;

PWM_TIME_L=100-PWM_TIME_H;

}

}//endif(UP_KEY)

while(UP_KEY);

}//endif(UP_KEY)

if(DOWN_KEY)

{ShortDelay();

if(DOWN_KEY)//延时去抖

{

if(PWM_TIME_H96)

{

PWM_TIME_H++;

PWM_TIME_L=100-PWM_TIME_H;

}

}//endif(DOWN_KEY)

while(DOWN_KEY);

}//endif(DOWN_KEY)

}//endwhile(1)

}

//T1定时器中断发PWM脉冲

voidtimer1(void)interr

显示全部
相似文档