#include<reg52.h>
sbit P1_0=P1^0;
sbit P3_7=P3^7;
void delay(unsigned int t)//50ms
{
unsigned char j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void Degree0()//0
{
unsigned char i;
for(i=0;i<200;i++)
{
P1_0=1;
delay(10);//0.5ms
P1_0=0;
delay(390);//19.5ms
}
}
void Degree45()//45
{
unsigned char i;
for(i=0;i<200;i++)
{
P1_0=1;
delay(20);//1ms
P1_0=0;
delay(380);//19ms
}
}
void Degree90()//90
{
unsigned char i;
for(i=0;i<200;i++)
{
P1_0=1;
delay(30);//1.5ms
P1_0=0;
delay(370);//18.5ms
}
}
void Degree135()//135
{
unsigned char i;
for(i=0;i<200;i++)
{
P1_0=1;
delay(40);//2ms
P1_0=0;
delay(360);//18ms
}
}
void Degree180()//180
{
unsigned char i;
for(i=0;i<200;i++)
{
P1_0=1;
delay(50);//2.5ms
P1_0=0;
delay(350);//17.5ms
}
}
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main(void)
{
unsigned char ID;
while(1)
{
if(P3_7==0)
{
delay10ms();
if(P3_7==0)
{
ID++;
if(ID==5)
{
ID=0;
}
while(P3_7==0);
}
}
switch(ID)
{
case 0:
Degree0();
break;
case 1:
Degree180();
break;
case 2:
Degree90();
break;
case 3:
Degree180();
break;
case 4:
Degree0();
break;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>