#include <AT89X52.h>
sbit k1=P1^1;//启动
sbit k2=P1^0;//正反转
sbit k3=P1^2;//加速
sbit k4=P1^3;//减速
unsigned int x=50000;
unsigned char i=0;
unsigned char code motorInstruction[8]= {0x7F,0x3F,0xBF,0x9F,0xDF,0xCF,0xEF,0x6F};
void motor();
void main()
{
TMOD=0x01;
TH0=x/256;//
TL0=x%256;//
TCON=0x10;
IE=0x82;
while(1);
}
void time_0(void) interrupt 1
{
TR0=0;
motor();
if(x>36000 && x<65000)//上下限
{if(!k3) x=x-2000;//加速
else if(!k4) x=x+2000;}//减速
TR0=1;
}
void motor()
{
if(!k1)
{if(!k2)//正反转
{i+=1;
if(i>7) i=0;}
else
{i-=1;
if(i<0) i=7;}
P2=motorInstruction[i];
}
else P2=0xFF;
}