| 
 
| 现正在做一个键盘,有一系列按键和四个旋转编码器。当其中任意一个编码器处于旋转的临界状态时,其余的按键和编码器都不能正常工作了。我采用的是查询方式来做的。其中一个编码器的处理程序如下: void judge_D1B(void)
 {
 delay(12);
 if((D1_A==0)&&(D1_B==1))
 {
 timer_flag=0;
 num_timer=0;
 TR0=1;                      //启动定时器0
 while((D1_A==0)&&(timer_flag==0)) ;
 TR0=0;
 if(timer_flag==1)return;
 delay(12);
 if(D1_A==1&&D1_B==1)
 {
 timer_flag=0;
 num_timer=0;
 TR0=1;                    //启动定时器0
 while((D1_A==1)&&(timer_flag==0)) ;
 TR0=0;
 if(timer_flag==1) return;
 P1=0x23;
 delay(12);
 P1=0x80;
 }
 }
 }
 
 void timer0(void) interrupt 1 using 1
 {
 TH0=-(46080/256);
 TL0=-(46080%256);
 num_timer++;
 if(num_timer==8)
 {
 num_timer=0;
 timer_flag=1;
 }
 }
 
 在主程序里面检测编码器的状态if((D1_A==0)&&(D1_B==1)),如果该条件成立则执行上面的编码器处理程序。临界状态就是指编码器停留在((D1_A==0)&&(D1_B==1))这个状态上。还请各位指点下,谢谢!!!
 | 
 |