///<-检测STOP/
OUT4=1;
delay(80); //延时
OUT1=0; //开检测光标下总线
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>3)
YCursor=0;
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
///光标下检测STOP/
OUT1=1; //关检测光标下总线
delay(80); //延时
OUT2=0; //开返回前进检测
}
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT1=1; //关系统检测OUT1
delay(80); //延时
OUT2=0; //开检测系统总线 //OUT1 IN7??
} //返回while(SystemDataSet_Flag)系统参数 返回检测
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
/系统参数检测STOP
OUT2=1;
delay(30); //延时
OUT4=0;
/
if(!IN6) //IO设置检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //进入IO设置界面
{ //IO设置
OUT4=1; //关IO设置总线
delay_nms(50);
OUT2=0; //开IO设置返回检测总线
ClearScreen();
DisIOset(); // IO设置
DisIoSet_Value();
IOSet_Flag=1; //IO设置循环检测标志
while(IOSet_Flag)
{
if(!IN6) //10程序编辑界面检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //退出IO设置
{
IOSet_Flag=0;
OUT2=1;
ClearScreen(); //返回参数设置界面
DataSet(); //显示 系统参数*系统自检*IO*设置
delay_nms(150); ///
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
}
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT4=1;
delay_nms(50); ///
OUT1=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) //显示11进入系统自检功能
{ //???????????????????????????????????????
OUT1=1;
ClearScreen();
SystemSeifTest_Flag=1; //系统自检循环检测标志
SysNegate_Intput(); //系统自检中文显示
IntPutStatus(); //输入状态初始化
while(SystemSeifTest_Flag)
{
OUT2=0;
if(!IN6) //10程序编辑界面检测
{
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
SystemSeifTest_Flag=0; //返回参数设置
OUT2=0;
ClearScreen();
display_graphic_16x8(28,1,xsadd[1],tab0);// 显示14
display_graphic_16x8(29,1,xsadd[3],tab0);//
DataSet();
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
if(SystemSeifTest_Flag==1)
{
///输入端口检测//
for(;kcounter<5;) //按键循环5次
{
if(!INTPUT0) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INTPUT0) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
Intput1(); //显示实心圆
}
else
{
NIntput1();//显示空心圆
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
///111
for(;kcounter<5;) //按键循环5次
{
if(!INTPUT1) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INTPUT1) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
Intput2(); //显示实心圆
}
else
{
NIntput2();//显示空心圆
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
///222
for(;kcounter<5;) //按键循环5次
{
if(!INTPUT2) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INTPUT2) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
Intput3(); //显示实心圆
}
else
{
NIntput3();//显示空心圆
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
///333
for(;kcounter<5;) //按键循环5次
{
if(!INTPUT3) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INTPUT3) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
Intput4(); //显示实心圆
}
else
{
NIntput4();//显示空心圆
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
///444
for(;kcounter<5;) //按键循环5次
{
if(!INTPUT4) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INTPUT4) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
Intput5(); //显示实心圆
}
else
{
NIntput5();//显示空心圆
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
///555
for(;kcounter<5;) //按键循环5次
{
if(!INTPUT5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INTPUT5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
Intput6(); //显示实心圆
}
else
{
NIntput6();//显示空心圆
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
///666
for(;kcounter<5;) //按键循环5次
{
if(!INTPUT6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INTPUT6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
Intput7(); //显示实心圆
}
else
{
NIntput7();//显示空心圆
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
///777
for(;kcounter<5;) //按键循环5次
{
if(!INTPUT7) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!INTPUT7) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示10进入程序编辑功能
{
Intput8(); //显示实心圆
}
else
{
NIntput8();//显示空心圆
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
///888
} //???????????????????????????????????????
} //???????????????????????????????????????
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
} //???????????????????????????????????????
/系统自检检测STOP//
OUT1=1;
delay_nms(50); ///
} //系统参数循环结束
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT3=1;
delay_nms(50);
OUT4=0;
kcounter=0; //按键计数器归零
kstatus=0; //状态寄存器归零
if(!IN6) //12程序管理界面检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***显示12***/
{
OUT4=1;
ClearScreen();
display_Prog(); //显示程序管理界面
ProgAdmin_Flag=1;
while(ProgAdmin_Flag)
{
delay(60); //延时
OUT2=0; //使能返回键
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) /***显示14***/
{
ClearScreen();
ProgAdmin_Flag=0; //程序管理标志置零
display_graphic_16x8(28,1,xsadd[1],tab0);// 显示14
display_graphic_16x8(29,1,xsadd[4],tab0);//
display_graphic_16x8(30,1,xsadd[15],tab0);//
display_a(); //开机界面显示
}
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) /***显示10*进入程序编辑功能**/
{
ProgEdit_Flag=1; //程序编辑循环检测标志
ClearScreen();
Display_Function(); //程序编辑功能界面显示
DisFun_Data();
Dis_ProgNum(); //程序编号
Dis_ProgLineNum(); //程序行号
while(ProgEdit_Flag)
{ //程序编辑功能界面显示
if(!IN6) //10程序编辑界面检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) /***返回程序管理界面**/
{
ClearScreen(); //清屏
ProgEdit_Flag=0; //程序编辑功能标志置零
display_Prog(); //返回显示程序管理界面
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
//OUT2=0检测前进 确认 加一键
if(!IN5) //手动前进检测
{
for(;kcounter<3;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
DIS_Forward(); //前进
YEditRun_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值正负标志置零
}
YEditRun_Data(); //显示Y位置数据
}
}
Clear_Forward(); //清除显示前进
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT2=1;
delay(80); //延时
OUT3=0; //右移总线开
if(!IN5) //手动右移检测
{
for(;kcounter<3;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
DIS_MoveRight(); //右移
XEditRun_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值正负标志置零
}
XEditRun_Data(); //显示X值位置数据
}
}
Clear_MoveRight(); //清除显示右移
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT3=1; //右移总线关
delay(80); //延时
OUT4=0; //左移总线开
if(!IN5) //手动左移检测
{
for(;kcounter<3;) //按键循环5次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
DIS_Moveleft(); //显示左移
XEditRun_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; //正负标志置零
}
XEditRun_Data(); //显示X值位置数据
}
}
Clear_Moveleft(); //清除显示左移
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT4=1; //左移总线关
delay(80); //延时
OUT1=0; //后退总线开
/
if(!IN5) //手动后退检测
{
for(;kcounter<3;) //按键循环3次
{
if(!IN5) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN5) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
DIS_Relreal(); //手动后退
YEditRun_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值正负标志置零
}
YEditRun_Data(); //显示Y位置数据
}
}
Clear_Relreal(); //清除显示下行
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
/F键检测///
if(!IN6) //F键检测
{
for(;kcounter<3;) //按键循环3次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
}
}
if(kstatus>=3)
{
Prog_LineNum+=1; //计数器加一
Dis_ProgLineNum(); //
delay(1500); //延时
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT1=1; //后退F总线关
delay(80); //延时
OUT2=0; //恢复返回总线
}
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
OUT2=1; //返回 程序检测按键检测结束 OUT2总线释放
delay(80); //延时
OUT3=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) //显示10进入程序编辑功能
{
ProgSave_Flag=1; //程序保存循环检测标志
ClearScreen();
Dis_FileName(); //显示文件名
while(ProgSave_Flag)
{
OUT3=1; //程序另存总线关
delay(50); //延时
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) //显示10进入程序编辑功能
{
ProgSave_Flag=0; //程序保存循环检测标志归零
ClearScreen();
display_Prog(); //显示程序管理界面
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT2=1;//临时关总线
delay(50); //延时
OUT3=0; //程序另存总线开
}
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT3=1; //程序另存总线关 启动返回 程序编辑总线OUT2 ????????????
delay_nms(50); //INTPUT0
OUT1=0;
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进入程序编辑功能
{
ProgRead_Flag=1;
ClearScreen();
Draw_Line();
OUT1=1;
delay(50); //延时
OUT2=0;
while(ProgRead_Flag)
{
if(!IN6) //10程序编辑界面检测
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) //显示14程序读入退出
{
ProgRead_Flag=0;
ClearScreen();
display_Prog(); //显示程序管理界面
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
}
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT1=1;
delay(50); //延时
OUT4=0;
if(!IN6) //12程序保存
{
for(;kcounter<5;) //按键循环5次
{
if(!IN6) //按键低电平
{
kcounter++; //按键计数器加一
kstatus++; //按键状态标志加一
delay(10); //延时
}
else if(~!IN6) //按键高电平
{
kcounter++; //按键计数器加一
kstatus=0; //按键状态标志归零
delay(10); //延时
}
}
if(kstatus>=3) // 保存
{
Dis_SaveSuccess(); // 显示保存成功
}
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT4=1; //
delay(50); //延时
OUT2=0; //恢复OUT2检测返回键
} //程序管理whileEND
OUT4=0; //恢复OUT4
} //程序管理>=3
kcounter=0; //按键循环标志归零
kstatus=0; //按键状态标志归零
}
OUT4=1;
delay_nms(50); //INTPUT0
}
}