📄 settings.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 + -