#include <reg51.h> //头文件
#define uchar unsigned char
#define uint unsigned int
unsigned char keyval; //存储按键值
code BeatCode[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正转
code defeatcode[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反转
void delay(uint z); //延时函数
int i; //变量
sbit S1=P3^0; //按键
unsigned long beats=0;
void StartMotor(unsigned long angle);
unsigned char tmp;
static unsigned char index=0;
void StartMotor(unsigned long angle)
{
EA=0;
beats=(angle*4076)/360;
EA=1;
}
void moveup()
{
tmp = P1;
tmp = tmp & 0xF0;
tmp = tmp | BeatCode[index];
P1 = tmp;
index++;
index = index & 0x07;
beats--;
}
void main()
{
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=0xF8;
TL0=0xCD;
keyval=0;
StartMotor(10); //转动十度
while(1)
{
switch(keyval)
{
case 1:moveup();break;
}
}
}
void Time0() interrupt 1
{
TH0=0xF8;
TL0=0xCD;
if((P3&0x0f)!=0x0f)
{
delay(5);
if(S1==0)
keyval=1;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
|