main.c
#include
#include
#include
bit Moto_Dir=0;
uchar irq_count;
uchar irq_count_t;
uchar PWM_TIME_H,PWM_TIME_L;
短延时***************************bit i=0;
短延时
***************************
/*********************** void ShortDelay(void) { uchar x,y;
for(x=0;x<5;x++) for(y=0;y<125;y++) _Nop();
return;
}
***************************************************
************************
***************************
void main(void)
{
PWM1=0; PWM2=0; PWM3=1; PWM4=1;
irq_count=0;
i=0;
PWM_TIME_H=80;
PWM_TIME_L=20;
while(1){ //**************if(LEFT_KEY){
while(1)
{ //**************
if(LEFT_KEY)
{ ShortDelay();
if(LEFT_KEY) //
按键处理
**************************
延时去抖
ET1=1;
// T1
使能
TMOD=0x11;
// T1
都为方式 1计时 */
TH1=0xFC; TL1=0x18; // T1
初值
TR1=1;
//
定时器启动
EA=1;
//
开全局中断
Moto_Dir=1;
PWM3HPPWM4H1- } end if(LEFTIKEY) wh=e(LEFTIKEYX end if(LEFTIKEY) if(RQHTIKEY) 宀 shortDe-ay()八 if(RQHTIKEY)二 宀
MofolDig 八
PWM3H1- PWM4HP
)lend if(RQHTIKEY) wh=e(R_GHTIKEY)八 end if(RQHTIKEY) if(UPIKEY) 宀 shortDe-ay()八 if(UPIKEY) =
宀 if(PWMIT_MEIH V 70) 宀
PWMIT 一 MEIH—J.
PWMIT_MEIL H 100—PWMIT_MEIH- } end if(UPIKEY) wh=e(UPIKEYX end if(UPIKEY) if(DOWNIKEY) 宀 shortDe-ay()八 if(DOWNIKEY) =Mt卑卅草
if(PWMIT_MEIH A 96)
宀
PWMIT_MEIH++
PWMIT_MEIL H 100—PWMIT_MEIH- } end if(DlNIKEY) wh=e(DOWNIKEY)八 end if(DOWNIKEY) // end wh=e(_k)
}
}
// T1定时器中断发PW脉冲
void timer1(void) interrupt 3 using 1
{
TH1=0xFC;
TL1=0x18;
irq_count++;
if (irq_count>=irq_count_t)
{ irq_count=0; i=~i;
if(i==1)
irq_count_t = PWM_TIME_H; else
irq_count_t = PWM_TIME_L; if(Moto_Dir==1)
{ PWM2=~PWM2; PWM1=1; } else
{ PWM2=1; PWM1=~PWM1; }