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

📄 settings.c

📁 知能车源码,CCD采样道路,飞思卡尔智能车比赛源码.
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#include "lib.c"     
#include "funtion.h"

uchar  GATE0=0x32;       //CCD比较门槛电压0,负责0-2行,13-15行
uchar  GATE1=0x39;       //CCD比较门槛电压1,负责4-12行

uint   L_S=150;             //最低速度
uchar  STP=5;             //加速度进
uchar  ACC=2;             //加速特性
uchar  SSS=1;             //S弯策略

void get_s(void)      //获取设置参数
{
 uchar wf=0;        //错误码标记
 out(1,4094);
 delay(10);
 get(1);        //从flash 中获取设定参数
 delay(10);
 //效验数据是否正确
  
 if(buf[101]==buf[1]&&buf[102]==buf[2])
     L_S=(buf[2]<<8)+buf[1];
 else
     L_S=185,wf=1;
 
 if(buf[103]==buf[3])
     STP=buf[3];
 else
     STP=5,wf=1;
 
 if(buf[104]==buf[4])
     ACC=buf[4];
 else 
     ACC=2,wf=1;
 
 if(buf[105]==buf[5])
      SSS=buf[5];
 else
      SSS=1,wf=1;
 
 if(buf[110]==buf[10])
     GATE0=buf[10];
 else
     GATE0=0x32,wf=1;    //出错,使用默认值
     
 if(buf[111]=buf[11])
     GATE1=buf[11];
 else
     GATE1=0x39,wf=1;
 
 
 if(wf)     //效验出错
    {
     wu(CN1[7],CN1[20],CN1[23],CN1[7]);
     delay(1000);
    }
 else       //正确
    wu(CN1[7],CN1[20],CN1[22],CN1[7]); 
 delay(800);
}


void save_s()       //保存设定参数
{
  uint i;
  buf[100]=buf[0]=0;      //空,填0
  
  buf[101]=buf[1]=L_S&0x00ff;    //所有参数一式两分,提高安全性
  buf[102]=buf[2]=L_S>>8;
  
  buf[103]=buf[3]=STP;
  buf[104]=buf[4]=ACC;
  buf[105]=buf[5]=SSS;
  
  buf[106]=buf[6]=0;
  buf[107]=buf[7]=0;
  buf[108]=buf[8]=0;
  buf[109]=buf[9]=0;
  
  buf[110]=buf[10]=GATE0;
  buf[111]=buf[11]=GATE1;   
   
  
  for(i=12;i<100;i++)        //没用的空间填0
     buf[i]=0;
  for(i=112;i<256;i++)
     buf[i]=0;
  
  sent(1);
  delay(10);
  load(1,4094);           //保存在4094 block中
  wu(CN1[7],CN1[20],CN1[21],CN1[7]);   
  delay(800);
}

void w_st(uchar pp)       //向LCD写入设置参数
{
 set(1);
 go(5,0);
 wn(L_S/100,(L_S%100)/10);
 wn(L_S%10,'m');	
 go(5,1);
 wn(' ',STP/10);
 wn(STP%10,'m');
 go(6,2);
 wn(' ',ACC);
 go(6,3);
 wn(' ',SSS);
 set(2);
 go(0,pp);    //flash
}               

void setting (void)   //参数设定
{
 uchar kv=0;
 uchar pp=0;          //选项指针
 wu(CN1[16],CN1[17],CN1[18],CN1[19]);
 w_st(pp);
 while(kv!=7&&kv!=8) 
  {
   kv=key();
   if(kv==3) 
     {
      if(pp==0&&L_S>150)    //最低速度
        L_S--;
      else if(pp==1&&STP) //加速步进
        STP--;
      else if(pp==2&&ACC)   //加速特性
        ACC--;
      else if(pp==3&&SSS)    //
        SSS--;
      w_st(pp);         
     } 
   else if(kv==4)
     {
      if(pp==0&&L_S<250)    //最低速度
        L_S++;
      else if(pp==1&&STP<99) //加速步进
        STP++;
      else if(pp==2&&ACC<10)
        ACC++;
      else if(pp==3&&SSS<5)
        SSS++;
      w_st(pp);
     }                
   else if(kv==5&&pp)
     pp--,go(0,pp);
   else if(kv==6&&pp<3)
     pp++,go(0,pp);
   else if(kv==8)     //保存参数
     save_s();
  }
}

⌨️ 快捷键说明

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