按键检测程序问题

设定的参数tt代表半周期,step代表脉冲个数,范围(50~200),仿真时按键调整的时候tt的调整一切正常,step增大调整也正常,step减小调整的时候在最小时就变成了一条直线,不再计数了,问题到底出在哪里?

unsigned int tt,step;
sbit PWM=P2^3;
sbit DIR=P2^4;
sbit EN=P2^5;
sbit k7=P3^7;
sbit k8=P3^6;
sbit k9=P2^7;  
sbit k10=P2^6;
void Manual()
	{
         EN=1;
		  tt=5000;
		  step=50;
	    while(1)
			{
			shoudong();
			keyscan();
			}				
	}
 void keyscan()
{
 while(1)
 {	
	if(k7==0)
		{
			delay(10);
			tt=tt+500;
			if(tt>=5000)
			{
				tt=5000;
		  }
		while(!k7);	
		}
	else if(k8==0)
	 {	
		delay(10);
		tt=tt-500;
		if(tt<=2500)
		{
     tt=2500;
    }
		while(!k8);
	 }
	else if(k9==0)
	{
		delay(10);
		step=step+50;
		if(step>=200)
		{
     step=200;
    }
		while(!k9);
	}
	else if(k10==0)
	 {
		delay(10);
		step=step-50;
		if(step<=50)
     {
      step=50;
     }
		while(!k10);
	 }	  
 }
}
void shoudong()
{
  TMOD=0x01;
  TH0=(65536-tt)/256;
  TL0=(65536-tt)%256;
  EA=1;
  ET0=1;
  TR0=1;
}
void zhongduan( ) interrupt 1
{   
    TH0=(65536-tt)/256;
    TL0=(65536-tt)%256;
    PWM=~PWM;
	  t++;
	  if(t==step)
		{
     t=0;
		 DIR=~DIR;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值