/************************************/
void main(void)
{
aa=bb=0;
P0M0=0;
P0M1=0;
P1M0=0X80; //1000 0000 P1.7开漏
P1M1=0X80; //1000 0000
P2M0=0;
P2M1=0;
P3M0=0;
P3M1=0;
P4M0=0;
P4M1=0;
P5M0=0X10; //0001 0000 P5.4开漏
P5M1=0X10; //0001 0000
P6M0=0;
P6M1=0;
P7M0=0;
P7M1=0;
XCursor=0; //X光标指针归零
YCursor=0; //Y光标指针归零
XPosiNegate_Flag=1; //初始化X实际位置正负标志
XBuff_Data=0; //X实际位置缓冲置零
YPosiNegate_Flag=1; //初始化Y实际位置正负标志
YBuff_Data=0; //Y实际位置缓冲置零
Prog_LineNum=0; //程序行号 临时数据
Prog_Number=0; //程序编号 临时数据
RunLineNum=0; //运行程序行号置零
Speed=100; //初始化等于100
Frequency=0; //频率初始化等于0
ManuSet_Flag=0; //手动设定运行标志 按键进入手动置一,退出置0
JogOperating_Flag=0; //点动操作反显标志
ProgAdmin_Flag=0; //程序管理循环检测标志
ProgEdit_Flag=0; //程序编辑循环检测标志
ProgRead_Flag=0; //程序读入循环检测标志
ProgSave_Flag=0; //程序保存循环检测标志
ProgSaveas_Flag=0; //程序另存循环检测标志
DataSet_Flag=0; //参数设置循环检测标志
SystemDataSet_Flag=0; //系统参数设置循环检测标志
SystemSeifTest_Flag=0; //系统自检循环检测标志
IOSet_Flag=0; //IO设置循环检测标志
SystemSet_Flag=0; //系统数据设置循环检测标志 分子分母最高时间点位起速
XBuff_Data=0; //X向实际位置缓冲器归零
YBuff_Data=0; //Y向实际位置缓冲器归零
OUT1=1;
OUT2=1;
OUT3=1;
OUT4=1;
IN1=1;
IN2=1;
IN3=1;
IN4=1;
IN5=1;
IN6=1;
IN7=1;
counter=0;
rst=0;
delay_nms(100);
rst=1;
delay_nms(100);
fs=0;
InitLCD();
ClearScreen();
wr_24C64(10,2); /*写入个位*/
wr_24C64(11,2); /*写入个位*/
wr_24C64(12,6); /*写入十位*/
wr_24C64(13,9); /*写入百位*/
write_val(); //临时函数
read_val(); //临时函数
display_a(); //
AUXR=0X80; //STC系列的1T 设置
TMOD=0X01; //
TL0=0X32;
TH0=0X53;
ET0=1;
TR0=1;
AUXR|=0x04; //定时器2为1T模式 12MHZ
T2L=0X90; //设置定时初值
T2H=0XE8; //设置定时初值
AUXR|=0X10; //定时器2开始计时
IE2|=0x04; //开定时器2中断
EA=1;
IT0=1; //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
EX0=1; //使能INT0中断
CP1=1;
DIR1=1;
EN1=1;
CP2=1;
DIR2=1;
EN2=1;
CP3=1;
DIR3=1;
EN3=1;
valm=0;
vals=0;
X_Data=0; //X运行置赋零
Y_Data=0; //Y运行置赋零
while(1)
{
OUT1=0; //?????????OUT1总线开始??????????????????????????????????????
kcounter=0; //按键计数器归零
kstatus=0; //状态寄存器归零
//
if(!IN7) //手动操作检测入口//总线OUT1~~~~~~~~~~~//
{
for(;kcounter<5;) //按键循环至少5次 /
{ A手动界面进入检测/
if(!IN7) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN7) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
} A手动界面结束检测/
if(kstatus>=3) /***大于3进入手动控制界面****/
{ B/
OUT1=1; /***关OUT1总线***/
OUT2=0; /***开OUT2总线***/
ManuSet_Flag=1; //手动检测运行标志置一
display_b(); /***显示手动高速*点动操作*回程序零*回机械零***/
//手动控制功能循环 按返回键退出循环//
while(ManuSet_Flag) /*循环检测按键 手动高速*点动操作*回程序零*回机械零*/
{ ///while循环
delay_nms(50);
if(!IN6) //14手动功能返回检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //返回首页
{
ClearScreen(); //清除液晶显示
display_a(); //显示开机画面自动执行*手动操作*程序管理*参数设置
ManuSet_Flag=0; //手动检测运行标志置零失效,退出手动检测
display_graphic_16x8(28,1,xsadd[1],tab0);// 显示14
display_graphic_16x8(29,1,xsadd[4],tab0);//
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN7) //显示10手动高速反显检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN7) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN7) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***手动高速反显***/
{
display_graphic_16x8(28,1,xsadd[1],tab0);// 显示10
display_graphic_16x8(29,1,xsadd[0],tab0);//
ManuFast_Flag=~ManuFast_Flag;
if(ManuFast_Flag==0)
{
negatedisplay_manufast();
}
else
{
display_manufast();
}
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
/手动前进检测检测低电平显示前进松开按键高电平清除显示前进/
if(!IN5) //手动前进检测
{
for(;kcounter<3;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
DIS_Forward(); //前进
YDirRun_Data(); //显示Y位置数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
for(;kcounter<=3;) /*寄存器复位*/
{
if(~!IN5) /*检测前进为高电平?*/
{ /**/
kcounter++;
}
else if(!IN5) /*检测前进为低电平?*/
{
kcounter=0; /*寄存器复位*/
CP2=0;
delay(100);
CP2=1;
delay(100);
Y_Data+=1;
if(Y_Data>=0) //如果Y值大于等于零
{
YBuff_Data=Y_Data; //Y缓冲器等于运行值
YPosiNegate_Flag=1; //Y值正负标志置一
}
else if(Y_Data<0) //如果Y值小于零
{
YBuff_Data=Y_Data-Y_Data*2; //
YPosiNegate_Flag=0; //Y值正负标志置零
}
YDirRun_Data(); //显示Y位置数据
}
}
Clear_Forward(); //清除显示前进
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
///
OUT2=1; //10手动高速反显 14号返回按键OUT2总线释放
delay_nms(50);
OUT1=0;
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN7) //检测点动操作//~~11号总线~OUT1~~~//
{
for(;kcounter<10;) //按键循环5次
{
if(!IN7) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN7) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /*按键状态标志大于等于3为有效值*/
{ /*点动操作循环检测*/
/进入点动操作循环检测数字输入
jog_operating();
negatejog_operating();
counter=0; //光标计数器清零
JogOperatSet_Flag=1;
while(JogOperatSet_Flag) //检测0---9按键
{
if(counter==0)
{
display_graphic_16x8(21,33,xsadd[10],tab0);// 清除
delay_nms(100);
display_graphic_16x8(21,33,xsadd[20],tab0);// 方块
delay_nms(100);
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN1) //数字3检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN1) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN1) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字3***/
{
counter+=1;
Key_val=3;
JogData_calculate (counter,Key_val);//调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN2) //数字2检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN2) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN2) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字2***/
{
counter+=1;
Key_val=2;
JogData_calculate (counter,Key_val); //调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN3) //数字1检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN3) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN3) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字1***/
{
counter+=1;
Key_val=1;
JogData_calculate (counter,Key_val);//调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
检测123结束//
OUT1=1; //关取反点动操作总线
delay_nms(100);
OUT2=0;
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN1) //数字6检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN1) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN1) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字6***/
{
counter+=1;
Key_val=6;
JogData_calculate (counter,Key_val);//调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN2) //数字5检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN2) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN2) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字5***/
{
counter+=1;
Key_val=5;
JogData_calculate(counter,Key_val); //调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN3) //数字4检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN3) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN3) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字4***/
{
counter+=1;
Key_val=4;
JogData_calculate(counter,Key_val); //调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
if(!IN6) //返回键
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***返回键***/
{
JogOperatSet_Flag=0; //退出点动检测循环界面
ManuSet_Flag=0; //退出手动检测循环界面
display_graphic_16x8(21,33,xsadd[21],tab0);//
ClearScreen();
display_a(); //显示开机界面
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
检测456结束//
OUT2=1; //关检测456总线
delay_nms(100);
OUT3=0;
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN1) //数字9检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN1) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN1) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字9***/
{
counter+=1;
Key_val=9;
JogData_calculate(counter,Key_val); //调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN2) //数字8检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN2) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN2) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字8***/
{
counter+=1;
Key_val=8;
JogData_calculate(counter,Key_val); //调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN3) //数字7检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN3) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN3) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字7***/
{
counter+=1;
Key_val=7;
JogData_calculate(counter,Key_val); //调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
检测789结束//
OUT3=1; //关检测789总线
delay_nms(100);
OUT4=0;
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
if(!IN2) //显示10手动高速反显检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN2) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN2) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***数字0***/
{
counter+=1;
Key_val=0;
JogData_calculate(counter,Key_val); //调用点动数据处理子程序
Dis_JogData(); //显示点动数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
检测0结束//
OUT4=1; //关检测0总线
delay_nms(100);
if(!INSERT) //显示25清除数据
{
for(;kcounter<5;) //按键循环5次
{
if(!INSERT) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INSERT) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***位置25***/
{ //点动数据清零
counter=0;
Buff_Data=0;
JogData_dealwith();
Dis_JogData();
display_graphic_16x8(15,33,xsadd[17],tab0);//显示数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT1=0; //返回while循环使能检测321总线
} ///点动操作while循环结束//
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
//后退检测Y-/
if(!IN5) //手动后退检测
{
for(;kcounter<3;) //按键循环3次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
DIS_Relreal(); //手动后退
YDirRun_Data(); //显示Y位置数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
for(;kcounter<=3;) /*寄存器复位*/
{
if(~!IN5) /*检测后退为高电平?*/
{ /**/
kcounter++;
}
else if(!IN5) /*检测后退为低电平?*/
{
kcounter=0; /*寄存器复位*/
CP2=0;
delay(100);
CP2=1;
delay(100);
Y_Data-=1;
if(Y_Data>=0) //如果Y值大于等于零
{
YBuff_Data=Y_Data; //Y缓冲器等于运行值
YPosiNegate_Flag=1; //Y值正负标志置一
}
else if(Y_Data<0) //如果Y值小于零
{
YBuff_Data=Y_Data-Y_Data*2; //
YPosiNegate_Flag=0; //Y值正负标志置零
}
YDirRun_Data(); //显示Y位置数据
}
}
Clear_Relreal(); //清除显示下行
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT1=1; //关取反点动操作下行总线
delay_nms(100);
///右移X+/
OUT3=0;
if(!IN5) //手动右移检测
{
for(;kcounter<3;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
DIS_MoveRight(); //右移
XDirRun_Data(); //显示X值位置数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
for(;kcounter<=3;) /*寄存器复位*/
{
if(~!IN5) /*检测前进为高电平?*/
{ /**/
kcounter++;
}
else if(!IN5) /*检测右移为低电平?*/
{
kcounter=0; /*寄存器复位*/
CP1=0;
delay(100);
CP1=1;
delay(100);
X_Data+=1;
if(X_Data>=0) //如果X值大于等于零
{
XBuff_Data=X_Data; //X缓冲器等于运行值
XPosiNegate_Flag=1; //X值正负标志置一
}
else if(X_Data<0) //如果X值小于零
{
XBuff_Data=X_Data-X_Data*2; //
XPosiNegate_Flag=0; //X值正负标志置零
}
XDirRun_Data(); //显示X值位置数据
}
}
Clear_MoveRight(); //清除显示右移
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT3=1; //关右移检测总线
delay_nms(100);
OUT4=0;
///
if(!IN5) //手动左移检测
{
for(;kcounter<3;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
DIS_Moveleft(); //显示左移
XDirRun_Data(); //显示X值位置数据
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
for(;kcounter<=3;) /*寄存器复位*/
{
if(~!IN5) /*检测左移为高电平?*/
{ /**/
kcounter++;
}
else if(!IN5) /*检测左移为低电平?*/
{
kcounter=0; /*寄存器复位*/
CP1=0;
delay(100);
CP1=1;
delay(100);
X_Data-=1;
if(X_Data>=0) //如果X值大于等于零
{
XBuff_Data=X_Data; //X缓冲器等于运行值
XPosiNegate_Flag=1; //X值正负标志置一
}
else if(X_Data<0) //如果X值小于零
{
XBuff_Data=X_Data-X_Data*2; //
XPosiNegate_Flag=0; //X值正负标志置零
}
XDirRun_Data(); //显示X值位置数据
}
}
Clear_Moveleft(); //清除显示左移
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
///
OUT4=1; //关左移检测总线
delay_nms(100);
OUT2=0; //
} //退出手动控制界面
//按下返回键退出手动控制功能循环//
} B退出手动控制检测界面
} //手动操作检测出口//~~~~~~~~~~~//
//
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
OUT1=1;
delay_nms(80);
OUT2=0;
if(!IN7) //10手动 操作界面 手动高速反显检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN7) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN7) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***手动高速反显***/
{
display_graphic_16x8(28,1,xsadd[1],tab0);// 显示10
display_graphic_16x8(29,1,xsadd[0],tab0);//
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT2=1;
delay_nms(50);
OUT3=0;
//参数设置界面检测//
if(!IN6) //参数设置界面检测 位置13
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示13进入参数设置功能
{
ClearScreen();
DataSet_Flag=1; //参数设置循环检测标志
DataSet(); //显示 系统参数*系统自检*IO*设置
while(DataSet_Flag)
{
OUT3=1;
delay_nms(50);
OUT2=0;
if(!IN6) // 返回键
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***返回键***/
{
DataSet_Flag=0; //退出循环
display_graphic_16x8(21,33,xsadd[21],tab0);//
ClearScreen();
display_a(); //首页显示
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
/系统参数检测START
if(!IN7) //10号按键系统参数
{
for(;kcounter<5;) //按键循环5次
{
if(!IN7) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN7) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***系统参数选项循环***/
{
SystemDataSet_Flag=1; //系统参数设置循环检测标志
ClearScreen();
PosiDis_Option(); //正显选项
DisSystem_Value(); //X正限X负限 Y正限Y负限
while(SystemDataSet_Flag) //系统参数
{
if(!IN6) //返回键
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***返回键***/
{
ClearScreen();
display_graphic_16x8(28,1,xsadd[1],tab0);// 显示14
display_graphic_16x8(29,1,xsadd[3],tab0);//
SystemDataSet_Flag=0; //系统参数设置循环检测标志归零
DataSet();
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
} //返回键检测结束
OUT2=1;
delay(80); //延时
OUT1=0; //开检测系统总线 //OUT1 IN7
if(!IN7) //11系统检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN7) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN7) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
SystemSet_Flag=1; //系统数据设置循环检测标志 分子分母最高时间点位起速
ClearScreen();
DisSystem();
OUT1=1; //关检测系统总线
while(SystemSet_Flag)
{
Dis_SystemCursorCalculate(XCursor,YCursor); // 系统参数光标计算处理
Sys_CursorBlinking(SysCursor); //系统光标闪烁
delay(3000); //延时
delay(30); //延时
OUT2=0; //开返回光标上总线
if(!IN6) //10程序编辑界面检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //进入系统参数设置界面
{
SystemSet_Flag=0;
ClearScreen();
PosiDis_Option(); //正显选项
DisSystem_Value(); //X正限X负限 Y正限Y负限
delay(200); //延时
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
/************XCursorX光标指针YCursor=0Y光标指针*********/
/光标上检测START/
if(!IN5) //光标上检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //光标上处理
{
YCursor-=1;
if(YCursor<0)
YCursor=3;
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
///光标上检测STOP///
OUT2=1;
delay(80); //延时
OUT3=0; //开检测->总线
if(!IN5) //光标->检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //光标->处理
{
XCursor-=1;
if(XCursor<0)
XCursor=3;
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
///->检测STOP///
OUT3=1;
delay(80); //延时
OUT4=0; //开检测<-总线
if(!IN5) //光标<-检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //光标<-处理
{
XCursor-=1;
if(XCursor<0)
XCursor=1;
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}