📄 kbv10work.c
字号:
}
else //mag_trk1==tailer
{
for(j=2;j<79;j++)
{
for(i=0;i<7;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk1[j]+=temp_trk<<(6-i);
}
}
for(i=0;i<55;i++)
{
READER_CLK=1;
READER_CLK=0;
}
READER_CLK=1;
for(j=78;j>1;j--)
{
if(mag_trk1[j]!=0)
{
if(mag_trk1[j]&0x01==0)
Dir_trk1=1;
else
{error=1;}
break;
}
}
}
}
}//trk1 is not blank
for(i=0;i<79;i++)
{
mag_trk1[i]=0; //clear trk1
}
///////// //////////////////begin trk2 ///////////////////////////
for(j=0;j<2;j++)
{
for(i=0;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk2[j]+=temp_trk<<(4-i); //b0-->b4
}
}
READER_CLK=1;
if(!mag_trk2[0]) //trk2 is blank
{
for(ddd=0;ddd<598;ddd++)
{
READER_CLK=1;
READER_CLK=0; // trk2 is over
}
READER_CLK=1;
}
else
{
trk2_send=1;
if(mag_trk2[0]!=0x1a) // 0x1a ==11010b must be fanxiang
{
Dir_trk2=0;
for(ddd=0;ddd<598;ddd++)
{
READER_CLK=1;
READER_CLK=0; // trk2 is over
}
READER_CLK=1;
}
else
{
if(mag_trk2[1]==0x1f) // ox1f ==11111b ,
Dir_trk2=0;
else
Dir_trk2=1;
for(ddd=0;ddd<598;ddd++)
{
READER_CLK=1;
READER_CLK=0; // trk2 is over
}
READER_CLK=1;
} //end else(mag_trk2[0]==0x1A) //Dir_trk2 is over
}
for(i=0;i<40;i++)
{
mag_trk2[i]=0;
}
///////////////////////trk3 begin/////////////////////////////
for(j=0;j<2;j++)
{
for(i=0;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk3[j]+=temp_trk<<(4-i); //b0--->b4;
}
}
READER_CLK=1;
if(!mag_trk3[0]) //trk3 is blank
{
for(ddd=0;ddd<598;ddd++)
{
READER_CLK=1;
READER_CLK=0; // trk3 is over
}
READER_CLK=1;
}
else //trk3 is not blank
{
trk3_send=1;
if(trk2_send) // trk2 is not blank, Dir_trk3==Dir_trk2
{
Dir_trk3=Dir_trk2;
for(ddd=0;ddd<598;ddd++)
{
READER_CLK=1;
READER_CLK=0; // trk3 is over
}
READER_CLK=1;
}
else //trk2 is blank, to ensure Dir_trk3
{
if(mag_trk3[0]!=0x1a) // 0x1a must be fanxiang
{
Dir_trk3=0;
for(ddd=0;ddd<598;ddd++)
{
READER_CLK=1;
READER_CLK=0; // trk3 is over
}
READER_CLK=1;
}
else
{
if(mag_trk3[1]==0x1f) // ox1f ==11111b ,
Dir_trk3=0;
else
Dir_trk3=1;
for(ddd=0;ddd<598;ddd++)
{
READER_CLK=1;
READER_CLK=0; // trk3 is over
}
READER_CLK=1;
}
}
}
for(i=0;i<107;i++)
{
mag_trk3[i]=0;
}
///////////////////////trk33 data begin//////////////////////////////
if(trk3_send)
{
if(!Dir_trk3) //trk3 is fanxiang
{
for(i=0;i<73;i++)
{
READER_CLK=1;
READER_CLK=0;
}
READER_CLK=1;
for(ddd=0;ddd<535;ddd++)
{
READER_CLK=1;
Delay_10us();
READER_CLK=0;
temp_trk=~READER_DATA;
if(temp_trk==1)
{SS_num=ddd;break;}
}
mag_trk3[0]=temp_trk;
for(i=1;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk3[0]+=temp_trk<<i; // b4--->b0 fanxiang collect trk33's data
}
READER_CLK=1;
if(mag_trk3[0]==0x0b) // b4->b0= 01011 (0x0b) ss
{
mag_trk3[1]=0;
for(j=1;j<107;j++)
{
for(i=0;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk3[j]+=temp_trk<<i; ////b4--->b0 //*************// fanxiang ==zhengxiang save the trk3 data ==b4--->b0;
}
if(mag_trk3[j]==0x1f)
{ES_num=j;break;} //break for();
}
if(((535-SS_num)%5)==0) //LRC don't lose bit 0
{
for(i=0;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk3[ES_num+1]+=temp_trk<<i; //lrc
}
}
else
{
for(i=0;i<(535-SS_num)%5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk3[ES_num+1]+=temp_trk<<i; //lrc
}
}
trk_xor=(mag_trk3[0]&0x0f);
for(i=1;i<(ES_num+1);i++)
{
trk_xor^=(mag_trk3[i]&0x0f);
}
if(trk_xor!=(mag_trk3[ES_num+1]&0x0f))
{
error=1;
}
READER_CLK=1;
}
}
else // (Dir_trk3==1)
{
for(ddd=0;ddd<608;ddd++)
{
READER_CLK=1; //data trk3 already exit
READER_CLK=0;
}
READER_CLK=1;
}
} //end if(trk3_send=1)
else // trk3_send==0
{
for(ddd=0;ddd<608;ddd++) //trk33 is blank
{
READER_CLK=1;
READER_CLK=0; //trk33 is over
}
READER_CLK=1;
}
////////////////////////////trk22 data begin////////////////////////
if(trk2_send)
{
if(!Dir_trk2)
{
for(ddd=0;ddd<408;ddd++)
{
READER_CLK=1;
READER_CLK=0;
}
READER_CLK=1;
for(i=0;i<200;i++)
{
READER_CLK=1;
Delay_10us();
READER_CLK=0;
temp_trk=~READER_DATA;
if(temp_trk==1)
{SS_num=i;break;}
} //end for(i=0;i<200;i++)
mag_trk2[0]=temp_trk;
for(i=1;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk2[0]+=temp_trk<<i; //b4-->b0; fanxiang collect trk22's data
}
READER_CLK=1;
if(mag_trk2[0]==0x0b) //0x0b 01011
{
mag_trk2[1]=0;
for(j=1;j<40;j++)
{
for(i=0;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk2[j]+=temp_trk<<i; //b4--->b0 //*************// fanxiang ===zhengxiang save the trk2 data ==b4--->b0;
}
if(mag_trk2[j]==0x1f)
{ES_num=j;break;} //break for();
} //end for(j=1;j<40;j++)
if(((200-SS_num)%5)==0) //LRC don't lose bit 0
{
for(i=0;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk2[ES_num+1]+=temp_trk<<i ; // (4-i) is must ,to add 0 LRC
}
}
else
{
for(i=0;i<(200-SS_num)%5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk2[ES_num+1]+=temp_trk<<i ; // (4-i) is must ,to add 0 LRC
}
}
trk_xor=(mag_trk2[0]&0x0f);
for(i=1;i<(ES_num+1);i++)
{
trk_xor^=(mag_trk2[i]&0x0f);
}
if(trk_xor!=(mag_trk2[ES_num+1]&0x0f))
{
error=1;
}
READER_CLK=1;
}
}
else //zhengxiang
{
for(ddd=0;ddd<608;ddd++)
{
READER_CLK=1;
READER_CLK=0;
}
READER_CLK=1;
}
} //end if(trk2_send=1)
else // trk2_send==0
{
for(ddd=0;ddd<608;ddd++) //trk22 is blank
{
READER_CLK=1;
READER_CLK=0; //trk22 is over
}
READER_CLK=1;
}
///////////////////////////trk11 ///////////////////////////////////////
if(trk1_send)
{
if(trk2_send||trk3_send)
Dir_trk1=(Dir_trk2||Dir_trk3);
else
{
if(error) // just trk1 isn't blank and trk1'S data have some question,please push card in another direction
{
}
}
if(!Dir_trk1)
{
for(i=0;i<55;i++)
{
READER_CLK=1;
READER_CLK=0;
}
READER_CLK=1;
for(ddd=0;ddd<553;ddd++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -