找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 844|回复: 2
打印 上一主题 下一主题
收起左侧

单片机小车运行时如何不带动voice这个程序让他俩互不干涉的运行?

[复制链接]
跳转到指定楼层
楼主
ID:1013009 发表于 2022-9-21 11:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
100黑币
#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;
                                        }
                    }
         }

                                
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:151348 发表于 2022-9-21 14:19 | 只看该作者
把voice在函数放到定时器中断函数里,假如定时器50ms中断一次,那记录定时器中断20次就触发一次voice函数,相当于间隔1s,voice函数运行一次
回复

使用道具 举报

板凳
ID:123289 发表于 2022-9-21 16:07 | 只看该作者
1、将voice写成一个子函数。
2、设立一个标记GV,GV=1就运行voice,GV=0就不运行voice。
3、这样voice是否运行,你只要设置GV就可以控制了。例如:
    小车运行时让GV=0,反之让GV=1。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表