⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 综合编程.c

📁 此例程为益芯科技为单片益智系列智能防撞机器人你的综合应用例程,全面包括了对LED灯,数码管,串口嗵信,中断/查询,声控,光敏,红外反射与接收等操作.是真正的一款不可多得的例程资料.
💻 C
📖 第 1 页 / 共 2 页
字号:
	    break;                                        //返回
	   }
	  case 10: //6                                    //说明按下了数字6键
	   {ShowPort= LedShowData[6];                     //数码管显示数字6
	    break;                                        //返回
	   }
      case 6: //7                                     //说明按下了数字7键
       {ShowPort= LedShowData[7];                     //数码管显示数字7
        break;                                        //返回
       }
      case 14: //8                                    //说明按下了数字8键
       {ShowPort= LedShowData[8];                     //数码管显示数字8
        break;                                        //返回
       }
      case 64: //9                                   //说明按下了数字9键
       {ShowPort= LedShowData[9];                    //数码管显示数字9
        break;                                       //返回
       }
      case 72: //0/30                                //说明按下0/30键
       {ShowPort= LedShowData[0];                    //数码管显示数字0
        break;                                       //返回
       }
      case 68: //10+                                 //说明按下10+键
       {//在这里填写你自己的代码                     //根据你的功能写代码
        break;                                       //返回
       }
      case 76: //20+                                 //说明按下了20+键
       {//在这里填写你自己的代码                     //根据你的功能写代码
         break;                                       //返回
       }
      case 36: //CH-                                 //说明按下了CH-键
       {//在这里填写你自己的代码                     //根据你的功能写代码
	    break;                                       //返回
       }
      case 40: //CH+                                  //说明按下了CH+键
       {//在这里填写你自己的代码                      //根据你的功能写代码
	    break;                                        //返回
       }
     }
   }
   RecvData=0;                                      //将接收到的数据清零
   CountData=0;                                     //将接收计数器清零
   HeardData=0;                                     //将接收高低数据变量清零
   return;                                          //返回
  }
  AddData=0;                                        //将定时器计数器清零
  ET0=1;                                            //打开定时器中断
}
void ComBreak() interrupt 4                         //定义串口通信子程序
{unsigned char RecvData;                            //定义串口数据接收变量
 if(RI==1)                                          //判断是否接收数据
 { RecvData=SBUF;                                   //将接收到的数据放入暂时变量
   if(RecvData<10)                                  //判断接收到的数据是否小于10
   {
    ShowPort=LedShowData[RecvData];                 //将接收到的数据通过数码管显示出来
    ControlCar(RecvData);                           //将串口数据置于小于状态
   }
   SBUF=RecvData;                                   //向电脑返回当前接收到的数据
   RI=0;                                            //清除接收中断标志位
 }
 if(TI==1)                                          //判断是否是发送中断
 {
   TI=0;                                            //清除发送中断标志位
 }
}
void main(void)                                     //主程序入口
{
 bit ExeFlag=0;                                   //定义可执行标志位变量
 RecvData=0;                                      //将接收变量数值初始化
 CountData=0;                                     //将计数器变量数值初始化
 AddData=0;                                       //将定时器计数器初始化
 HeardData=0;                                     //将高低计数器初始化
 LedFlash=1000;                                   //对闪灯数据进行初始化
 TMOD=0x01;                                       //选择定时器0为两个16位定时器
 TH0=0xFF;                                        //对定时器进行计数值进行初始化
 TL0=0x19;                                        //同上,时间大约为25uS
 TR0=1;                                           //同意开始定时器0
 EX1=1;                                           //同意开启外部中断1
 IT1=1;                                           //设定外部中断1为低边缘触发类型
 ET0=0; 
 SCON=80;                                         //设置串口模式为8位数据
 TMOD=33;                                         //设置定时/计数器模式
 TH1=0xFD;                                        //给定时器1高八位初始化初值
 TL1=0xFD;                                        //给定时器1低八位初始化初值
 TR1=1;                                           //开启定时器1
 ES=1;                                            //开启串口通信功能
 REN=1;                                           //开启接收中断标志
 EA=1;                                            //总中断开启
 ControlCar(1);                                   //将小车置于前进状态
 ShowPort=LedShowData[0];                         //数码管显示数字0
 while(1)                                         //程序主循环
 {
   while(LedFlash--)                              //闪灯总延时
    { 
     if(RL1==1)                                   //判断光敏电阻的状态
	 { RightLed=0;                                //将前方右侧指示灯点亮
	   LeftLed=0;                                 //将前方左侧指示灯点亮
	 }
	 else                                         //在光敏电阻为不通的状态下
	 {
	   RightLed=1;                                //将前方右侧指示灯熄灭
	   LeftLed=1;                                 //将前方左侧指示灯熄灭
	 }
	 if(IR1==0)                                   //判断延时期间是否有红外信号输入
     {ExeFlag=1;                                  //将可执行标志位置1
     }
	 if(S1==0)                                    //判断是否有S1按下
	 { 
	  ControlCar(8);                              //将小车置于停止状态
	  RunFlag==1;                                 //改变小车运行状态标志位
	  S1State=!S1State;                           //改变S1按键标志位
	  goto NextRun;                               //跳转到NextRun标签
	 }
	 if(S2==0)                                    //判断是否有S2按下
	 {
	  ControlCar(1);                              //将小车置于前进状态
	  RunFlag==0;                                 //改变小车运行状态标志位
	  S2State=!S2State;                           //改变S2按键标志位
	  goto NextRun;                               //跳转到NextRun标签
	 }
	 FontIRState=FontIR;                          //前方红外指示灯显示正前方红外探头状态
	 LeftIRState=LeftIR;                          //左侧红外指示灯显示前方左侧红外探头状态
	 RightIRState=RightIR;                        //右侧红外指示灯显示前主右侧红外探头状态
     if(FontIR==0 || LeftIR==1 || RightIR==1)     //判断正前方,前左侧,前右侧红外探头状态
     {ControlCar(2);                              //改变小车状态为后退
      SB1=!SB1;                                   //将蜂鸣器取反
      Delay();                                    //调用延时子程序
      SB1=!SB1;                                   //将蜂鸣器取反
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
   	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  ControlCar(3);                              //改变小车左转状态
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  Delay();                                    //调用延时子程序
	  SB1=!SB1;                                   //将蜂鸣器取反
	  ControlCar(1);                              //改变小车为前进状态
	  SB1=1;                                      //关闭蜂鸣器声音
     }
    if(B1==0)                                     //判断是否有话筒信号输入
    { if(RunFlag==0)                              //判断小车当前的运行标志位
      { ControlCar(8);                            //将小车置于停止状态
	    RunFlag=1;                                //改变小车运行标志位
	  }
	  else
	  { ControlCar(1);                            //将小车置于前进状态
	    RunFlag=0;                                //改变小车运行标志位
	  }
	  B1State=!B1State;                           //将话筒信号指示灯取反
    }
  }
NextRun:                                          //跳转标签
  if(RunFlag==0)                                  //判断运行标志位
  {
   RunStopState=!RunStopState;                    //改变小车运行停止状态标志位
  }
  else
  {
   RunStopState=1;                                //将运行停止状态标志位置1
  }
  LedFlash=1000;                                  //运行闪动时间重设定
  if(ExeFlag==0)                                  //判断可执行标志位
  {
   EX1=1;                                         //开启外部中断1
   TR1=1;                                         //开启定时/计数器1
  }
  ExeFlag=0;                                      //可执行标志位置0
 }
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -