📄 keyedit.c
字号:
#include <head.c>
extern ulong PARAM[8];
/***************************/
extern void saveee(void);
extern void sendpj(ulong w[]);
extern void watchdog();
//extern unsigned char valaddr;
extern void usdelay(uchar k);
extern void msdelay(uchar k);
extern uchar INTKEY,KEYCHAR;
//void openlamp(uchar k);
/**************************/
char numeric(uchar i);
void save()
{
saveee();
usdelay(1);
readee();
usdelay(5);
INTKEY=0;
ES=1;
EA=1;
DE0=0;
DE =0;
}
void keyedit()
{
watchdog();
readee();
switch(KEYCHAR)
{
case FUNKEY:{ watchdog();
if(numeric(NUMSET)==(NUMSET+1)){;}
if(numeric(NUMDIF)==(NUMDIF+1)){save();}
return;
}
case (MOVKEY & ADDKEY):
{ if(numeric(NUMPID)==(NUMPID+1)){save();}
return;
}//PID
case (MOVKEY & FUNKEY):
{ watchdog();
if(numeric(NUMCON)==(NUMCON+1)){;}
if(numeric(NUMCAR)==(NUMCAR+1)){save();}
return;
}//常数
/* case (ADDKEY & FUNKEY):
{
if(numeric(8)==9){save();}
changnum(PARAM[7]);
valaddr=(uchar)bytebuf[2]*100+(uchar)bytebuf[3]*10+(uchar)bytebuf[4];
return;
}*///地址可调
case 0x55: { watchdog();
if(numeric(NUMCNT)==(NUMCNT+1)){save();}
return;
}//采样数
case 0x60: { watchdog();
if(numeric(NUMSIG)==(NUMSIG+1)){save();}
return;
}//信号幅度
/* case PIDKEY:{
watchdog();
if((PIDSTAT==0xff)||(PIDSTAT==0x7f))
{PIDSTAT=pidlamp;S8155A=S8155A & pidlamp;}
else{PIDSTAT=0xff;S8155A=S8155A |(~pidlamp);}
ES=1;
DE0=0;
EA=1;
return;
}*/
default: { ES=1;
DE0=0;
EA=1;
return;
}
}
watchdog();
ES=1;
DE0=0;
EA=1;
return;
}
/*void openlamp(uchar k)
{
switch(k)
{
case NUMCON:S8155A=conlamp;break;
case NUMPID:S8155A=0xff; break;
case NUMSET:S8155A=setlamp;break;
case NUMDIF:S8155A=diflamp;break;
default:break;
}
// COM8155A=S8155A;
return;
}*/
char numeric(uchar n)
{
char flabit,st,bytebuf;//flabit == flashbit
ulong temp;
n=n-1;
temp=PARAM[n];
watchdog();
st=0;
st=0;
INTKEY=0;
flabit=st;
temp=temp+5000000;//灭LED
sendpj(&temp);
temp=temp-5000000;
for(;;)
{
watchdog();
for(;INTKEY==0;)// flabit位一直闪烁,直到keydown==1;
{
EA=1;
watchdog();
// openlamp(n);
EA=0;
temp=temp+(flabit*10+6)*100000;//灭LED
sendpj(&temp);
temp=temp-(flabit*10+6)*100000;
EA=1;
watchdog();
if(INTKEY!=0) break;
msdelay(200);
EA=0;
sendpj(&temp); //开显示,开灯 ,延时
watchdog();
EA=1;
if(INTKEY!=0) break;
msdelay(200); //关灯,关显示,延时
}//end loop;
watchdog();
if(KEYCHAR==MOVKEY)
{
if(flabit>=4){flabit=st;}
else flabit++;
INTKEY=0;
}
else if(KEYCHAR==ADDKEY)
{
if(flabit==4)bytebuf=temp%10;
else if(flabit==3)bytebuf=(temp%100)/10;
else if(flabit==2)bytebuf=(temp%1000)/100;
else if(flabit==1)bytebuf=(temp%10000)/1000;
else if(flabit==0)bytebuf=(temp%100000)/10000;
if(bytebuf==9){bytebuf=-9;}
else if((bytebuf<9)&&(bytebuf>=0))bytebuf=1;
else bytebuf=0;
if(flabit==4)temp+=bytebuf;
else if(flabit==3)temp+=bytebuf*10;
else if(flabit==2)temp+=bytebuf*100;
else if(flabit==1)temp+=bytebuf*1000;
else if((flabit==0)&&(bytebuf== 1)){temp+=10000;}
else if((flabit==0)&&(bytebuf==-9)){temp=temp%10000;}
INTKEY=0; //1+2=3+4=7+8=15
}
sendpj(&temp);
if(KEYCHAR==FUNKEY)
{
if(((n==NUMSIG)||(n==NUMCAR))&&(temp>255))
{
PARAM[n]=255;
}
else
PARAM[n]=temp;
INTKEY=0;
return (n+2);
}
else INTKEY=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -