新手一个,c语音只能看懂一小部分,需要控制一个舵机往复运动一次,一个按键。现在的代码要按键2次才能转回来,问下大神们怎么修改下按键一次就往复回来,按键一下来回运动一次。
#include<reg52.h>
#define unchar unsigned char
unsigned char count; //0.5ms次数标识
unsigned char jd=0;
sbit pwm1 = P2^1;
unsigned char flag=1;
unsigned char flag1=1;
sbit key1=P3^1;
//void delayms(unsigned int t)
//{
// int i = 0;
// for(;t>0;t--);
// for(i=110;i>0;i--);
//
//}
void Time0_Init() //定时器初始化
{
TMOD = 0x01; //定时器0工作在方式1
TH0 = (65535-500)/256;
TL0 = (65535-500)%256; //12MZ晶振,0.5ms
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
void Time0_Int() interrupt 1
{
static int t=0;
t++;
TH0 = (65535-500)/256; //重新赋值
TL0 = (65535-500)%256;
if(count< jd) //判断0.5ms次数是否小于角度标识
{
pwm1=1; //确实小于,PWM输出高电平
}
else
{
pwm1=0; //大于则输出低电平
}
count++;//(count+1); //0.5ms次数加1
if(count>=40)
count=0;
//count=count%40; //次数始终保持为40 即保持周期为20ms
// if(t<2000)
// {
// jd=4;
// }
// else if(t<4000)
// {
// jd=1;
// }
// else
// t=0;
}
unsigned char count; //0.5ms次数标识
void keyscan() //按键扫描
{
if(key1==0&&flag1)
{
flag=!flag;
flag1=0;
}else if(key1) flag1=1;
}
void main()
{
count=0;
Time0_Init();
while(1)
{
keyscan();
if(flag)
{
jd=4;
}
else
jd=1;
}
}
æ°æå°å¦çï¼ä¸æåï¼æ ¢æ ¢å¦ä¹ å§ï¼è½å¸®æåä¸ä¸ªä¸ï¼å¸®æä¿®æ¹ä¸ï¼è°¢è°¢å¦ï¼