标题: 单片机小车运行时如何不带动voice这个程序让他俩互不干涉的运行? [打印本页]

作者: hyihang    时间: 2022-9-21 11:40
标题: 单片机小车运行时如何不带动voice这个程序让他俩互不干涉的运行?
#include<AT89X52.H>                  
#include<ZY-4WD_PWM.H>
                  
        sbit beep=P2^2;
        sbit key=P3^6;

        bit mode;              
        unsigned int cnt;
        unsigned char i;

void voice()
{
        if(mode)
        {
                beep=0;                              
         }
         else
         {
                  beep=1;
         }
}

   
        void main(void)
{        

        
            P1=0X00;           
                         TMOD=0X01;
                TH0= 0XFc;               
                 TL0= 0X18;
                   TR0= 1;
                ET0= 1;
                EA = 1;        
                                          

        while(1)        
        {
         
                        if( LeftIRBZ == 0 || RightIRBZ == 0 )  

                        {
                        
                          stop();                  

                        }
            
                        

                          else

                         {                                     if(Left_1_led==0&&Right_1_led==0)

                           {
                             run();   

                          
                           }
                                             
                                                           if(Left_1_led==1&&Right_1_led==0)            
                                  {
                                           leftrun();                  
                                

                             }
                           
                                                             if(Right_1_led==1&&Left_1_led==0)        
                                  {         
                                      rightrun();                  

                                  }
                                                    if(Right_1_led==1&&Left_1_led==1)               
                                  {         
                                      stop();               

                                  }

                        }        
                         voice();
                           if(key==0)
                           {
                                mode=1;         
                    }        
                                if(mode==1)
                           {
                                         cnt++;
                                        if(cnt>300)
                                        {
                                                        cnt=0;
                                                        mode=0;
                                        }
                    }
         }

                                
}

作者: imxuheng    时间: 2022-9-21 14:19
把voice在函数放到定时器中断函数里,假如定时器50ms中断一次,那记录定时器中断20次就触发一次voice函数,相当于间隔1s,voice函数运行一次
作者: yzwzfyz    时间: 2022-9-21 16:07
1、将voice写成一个子函数。
2、设立一个标记GV,GV=1就运行voice,GV=0就不运行voice。
3、这样voice是否运行,你只要设置GV就可以控制了。例如:
    小车运行时让GV=0,反之让GV=1。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1