📄 menu.c
字号:
case 14:
InitLCD(); //循环读卡处理
Curcol=0;
Curlin=0;
Input_Count=0;
i=0;
cyread=1;
esctrue=0;
cancelinput=1;
while(cyread)
{
wait_esc();
if(esctrue==1)
return;
temp=MIF_Halt();
Disp_Result(CMD_HALT,temp);
wait_esc();
if(esctrue==1)
return;
delay();
temp=Request(0x52);
Disp_Result(CMD_REQUEST,temp);
wait_esc();
if(esctrue==1)
return;
delay();
temp=AntiColl();
Disp_Result(CMD_ANTICOLL,temp);
wait_esc();
if(esctrue==1)
return;
delay();
temp=Select_Card();
Disp_Result(CMD_SELECT,temp);
wait_esc();
if(esctrue==1)
return;
delay();
temp=Load_keyE2_CPY(0,0);
temp=Authentication(UID, 0, 0); //扇区认证
Disp_Result(CMD_AUTHENTICATION,temp); //显示认证结果
wait_esc();
if(esctrue==1)
return;
delay();
//for (i=0;i<3;i++)
temp=MIF_READ(readdata, i);
Disp_Result(CMD_READ,temp); //显示读出结果
wait_esc();
if(esctrue==1)
return;
delay();
i=i+1;
if (i==4)
i=0;
};
break;
default:
break;
}
}
else if (Menus.Cur_Menu==2) //处理接收的数据
{
switch (Menus.Menu_Pos)
{
case 3:
cancelinput=1;
if (Input_Data[0]>15) //输入扇区号错误
{
Show_Str(Curlin,Curcol, err_str);
return;
}
Secnr=Input_Data[0];
temp=Load_keyE2_CPY(Secnr,0);
temp=Authentication(UID, Secnr, 0); //扇区认证
Disp_Result(CMD_AUTHENTICATION,temp); //显示认证结果
break;
case 5:
cancelinput=1;
if (Input_Data[0]>63) //输入块地址错误
{
Show_Str(Curlin,Curcol, err_str);
return;
}
block_adr=Secnr*4+Input_Data[0];
temp=MIF_READ(readdata, block_adr);
Disp_Result(CMD_READ,temp); //显示读出结果
break;
case 6:
if (grade_status==0) //保存块地址
{
block_adr=Secnr*4+Input_Data[0];
grade_status=1;
Show_Str(1, 0, data_str);
Curlin=2;
Curcol=0;
Input_Count=0;
}
else if (grade_status==1)
{
cancelinput=1;
temp=MIF_Write(Input_Data, block_adr);
Disp_Result(CMD_WRITE,temp); //显示写命令结果
}
break;
case 7:
if (grade_status==0) //保存块地址
{
Secnr=Input_Data[0];
grade_status=1;
Show_Str(1, 0, key_str);
Curlin=2;
Curcol=0;
Input_Count=0;
}
else if (grade_status==1)
{
cancelinput=1;
temp=load_key(Input_Data,0, Secnr);
Disp_Result(CMD_LOADKEY,temp); //显示写命令结果
}
break;
case 8:
if (grade_status==0) //保存块地址
{
block_adr=Secnr*4+Input_Data[0];
grade_status=1;
Show_Str(1, 0, data_str);
Curlin=2;
Curcol=0;
Input_Count=0;
}
else if (grade_status==1)
{
//temp=Input_Count-1;
cancelinput=1;
temp=MIF_Initival(Input_Data, block_adr);
Disp_Result(CMD_INITVAL,temp); //显示写命令结果
}
break;
case 9:
if (grade_status==0) //保存块地址
{
block_adr=Secnr*4+Input_Data[0];
grade_status=1;
Show_Str(1, 0, data_str);
Curlin=2;
Curcol=0;
Input_Count=0;
}
else if (grade_status==1)
{
//temp=Input_Count-1;
cancelinput=1;
temp=MIF_Increment(Input_Data, block_adr);
MIF_Transfer(block_adr);
Disp_Result(CMD_INCREMENT,temp); //显示写命令结果
}
break;
case 10:
if (grade_status==0) //保存块地址
{
block_adr=Secnr*4+Input_Data[0];
grade_status=1;
Show_Str(1, 0, data_str);
Curlin=2;
Curcol=0;
Input_Count=0;
}
else if (grade_status==1)
{
//temp=Input_Count-1;
cancelinput=1;
temp=MIF_Decrement(Input_Data, block_adr);
MIF_Transfer(block_adr);
Disp_Result(CMD_DECREMENT,temp); //显示写命令结果
}
break;
case 11:
temp=MIF_Transfer(Secnr*4+Input_Data[0]);
Disp_Result(CMD_TRANSFER,temp); //显示写命令结果
cancelinput=1;
break;
case 12:
temp=MIF_Restore(Secnr*4+Input_Data[0]);
Disp_Result(CMD_RESTORE,temp);
cancelinput=1;
break;
case 13:
Curcol=0;
Curlin=1;
Show_Str(Curlin, Curcol, regdata_str);
temp1=(uchar xdata *)(0x8000+Input_Data[0]);
temp=*temp1;
Disp_Hex(Curlin, Curcol, temp);
cancelinput=1;
break;
}
}
}
/*********************************************************/
/*名称: Pro_Pos */
/*功能: 上、下移键处理 */
/*输入: */
/* ud: UP、DOWN */
/*输出: */
/* N/A */
/* */
/*********************************************************/
void Pro_Pos(uchar ud)
{
uchar temp,temp1;
if (Menus.Cur_Menu!=1) //不是菜单区,返回
return;
temp1=Menus.Menu_Pos-Menus.Menu_StPos; //擦除老的光标指示
Show_Str(temp1,0, space);
if (ud==UP) //上移键处理
{
temp=Menus.Menu_Pos;
if (Menus.Menu_Pos!=0) //当前菜单位置-1
{
Menus.Menu_Pos=Menus.Menu_Pos-1;
}
else
{
Menus.Menu_Pos=Menu_Num-1;
Menus.Menu_StPos=Menus.Menu_Pos-3;
temp1=Menus.Menu_Pos-Menus.Menu_StPos;
Disp_Menu();
Show_Str(temp1, 0, ico);
return;
}
temp=Menus.Menu_StPos;
if (Menus.Menu_Pos<temp) //向上滚动菜单
{
Menus.Menu_StPos=Menus.Menu_StPos-1;
Disp_Menu();
}
}
if (ud==DOWN) //下移键处理
{
temp=Menus.Menu_Pos;
if (Menus.Menu_Pos!=(Menu_Num-1)) //当前菜单位置+1
{
Menus.Menu_Pos=Menus.Menu_Pos+1;
}
else
{
Menus.Menu_Pos=0;
Menus.Menu_StPos=0;
temp1=Menus.Menu_Pos-Menus.Menu_StPos;
Disp_Menu();
Show_Str(temp1, 0, ico);
return;
}
temp=Menus.Menu_StPos;
if (Menus.Menu_Pos>(temp+n_Line-1)) //向下滚动菜单
{
Menus.Menu_StPos=Menus.Menu_StPos+1;
Disp_Menu();
}
}
temp1=Menus.Menu_Pos-Menus.Menu_StPos; //绘出当前光标指示
Show_Str(temp1, 0, ico);
}
/*********************************************************/
/*名称: Pro_Pos */
/*功能: 左、右移键处理 */
/*输入: */
/* lr:LEFT、RIGHT */
/*输出: */
/* N/A */
/* */
/*********************************************************/
void Pro_LrPos(char lr)
{
uchar num;
if (Input_Count>0 && Menus.Cur_Menu==2)
{ if (Curcol==0 && Curlin>0)
{
Curlin=Curlin-1;
Curcol=16;
}
if (lr==LEFT) //上次输入数字减1
{
Input_Count=Input_Count-1;
Curcol=Curcol-1;
num=Pre_Num-1;
if (halfbyte==0)
Pre_Num=Input_Data[bytecnt] & 0x0f;
else
Pre_Num=(Input_Data[bytecnt] & 0xf0)>>4;
Pro_Num(num);
}
else if (lr==RIGHT) //上次输入数字加1
{
Input_Count=Input_Count-1;
Curcol=Curcol-1;
num=Pre_Num+1;
if (halfbyte==0)
Pre_Num=Input_Data[bytecnt] & 0x0f;
else
Pre_Num=(Input_Data[bytecnt] & 0xf0)>>4;
Pro_Num(num);
}
}
}
/*********************************************************/
/*名称: Pro_Esc */
/*功能: Esc键处理 */
/*输入: */
/* */
/*输出: */
/* N/A */
/* */
/*********************************************************/
void Pro_Esc(void)
{
uchar idata temp;
if(Menus.Cur_Menu==2) //返回上级菜单
{
if (cyread==1)
cyread=0;
cancelinput=0;
Menus.Cur_Menu=Menus.Cur_Menu-1;
temp=Menus.Menu_Pos-Menus.Menu_StPos;
Disp_Menu();
Show_Str(temp, 0, ico);
}
else //开机画面
{
Menus.Cur_Menu=0;
InitLCD();
Show_Str(1, 1, str1);
Show_Str(2, 1, str2);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -