程序的状态比较乱,这样不方便处理信号,也不方便修改。你把流程理清楚了,程序自然也就出来了。
控制时间,可以用定时器设置标志位,也可以用计数器。
象 if((PORTB&0x02)==0X00&&(PORTB&0x04)==0X00) 最好改成
if(((PORTB&0x02)==0X00)&&((PORTB&0x04)==0X00))避免不同编译器引起歧义。
if((PORTB&0x02)==0X00&&(PORTB&0x04)==0X00) //冲压开始
{
chongya=1; //进入冲压循环
}
while(chongya==1) //下行循环
{
if((PORTB&0x02)==0X00&&(PORTB&0x04)==0X00) // RB1上死点信号
{
PORTD=0B11111110; // 下行低压
}
①这一段是同一个功能,但作为两步写,编译优化后可能产生异常
②另外,如果用T2作为定时器,你本身的标志位chongya和fuwei是可以作为判断的(建议作为位标志判断)
③如果是判断PB1和PB2引脚的电平状态,那么
if((PORTB&0x02)==0X00&&(PORTB&0x04)==0X00) 最好改为:
if( (!(PORTB&0x02)) &&(!(PORTB&0x04)) )方式判断最好.下同.
谢谢大家指正,刚开始写程序,经验欠缺,多谢各位指正,另外,用定时器来做那个定时我也试过,就是那个标志位,好像不起作用,每次的时间不同,搞了半天也没搞出来。希望有人能帮我写下。谢谢