各位大神,麻烦帮我看看,这段程序有什么问题?
各位大神,麻烦帮我看看,这段程序有什么问题?用的是STC单片机的定时器2
主要实现开始关箱时蜂鸣器需要响2声,每声500ms,现在经常出现2个按键按下时蜂鸣器响声不正常并且,串口只返回“TEST”,却不返回“READY”,中间只延时了3S而已,不知到为什么,大家能不能帮忙看看。
//定时50ms
T2MOD = 0; //初始化模式寄存器
T2CON = 0; //初始化控制寄存器
TL2 = 0x00; //设置定时初值
TH2 = 0x4C; //设置定时初值
RCAP2L = 0x00; //设置定时重载值
RCAP2H = 0x4C; //设置定时重载值
TR2 = 0; //定时器2开始计时
ET2=0;
void Timer2() interrupt 5
{
TF2=0;
if(count--==0)
{
count=10;
j++;
if(j<3)
BUZZER=~BUZZER; //500ms翻转一次
else
{ j=0; BUZZER=1; TR2=0; ET2=0;}
}
}
void keyscan()//按键扫描
{
if(INC==0) //先按下关箱按键
{
delay_ms(100);
if((INC==0)&&(INO==0))
{ boxclose(); while(INO==0); while(INC==0);}
}
if(INO==0) //先按下开箱按钮
{
delay_ms(100);
while((INO==0)&&(INC==1));
if(INC==1) //开箱按钮松开,则开箱
boxopen();
else if(INC==0) //开箱按钮松开前按下关箱按钮,则关箱
{ boxclose(); while(INO==0); while(INC==0);}
}
}
void boxclose()//关箱
{
BUZZER=0;//蜂鸣器响
ET2=1;
TR2=1;//开始定时
Send_test();//返回TEST
delay_ms(3000);
Send_ready();//返回READY
}
if(INO==0) //先按下开箱按钮
{
delay_ms(100);
while((INO==0)&&(INC==1));
if(INC==1) //开箱按钮松开,则开箱
boxopen();
else if(INC==0) //开箱按钮松开前按下关箱按钮,则关箱
{ boxclose(); while(INO==0); while(INC==0);}
}
}
这一段有问题把,应该全速跑的话怎么也跑不到这一句判断里else if(INC==0) //开箱按钮松开前按下关箱按钮,则关箱
当我按下开箱按钮后,执行到这一句 while((INO==0)&&(INC==1)); 然后按关箱按钮(INC=0),不就到了 else if(INC==0) //开箱按钮松开前按下关箱按钮,则关箱 这句了吗
你最好一个功能一个功能的先调试好了,再往一起组合。
我如果屏蔽掉定时器2就可以正常工作了,每次都能运行到 Send_ready();//返回READY,是定时器2 哪里有问题了吗?
谢谢各位的建议,已经找到原因了,是硬件问题!
