📄 gcjig.c
字号:
if(MemCard_Type==0x10) {PORTA=0X06;}
lp1:
if(RB7 !=0 ) { goto lp1;}
else {PORTA=0Xff;} //{ Led4_Write=1;Led3_Read=1;Led2_Fail=1;Led1_Ok=1;}
ClearStatus();
ReadStatus();
/************* Level1 ok **************/
CS0_Card();
Txd_command_WithRxd(Level1_Command,9);
Get_TempRxdData_9();
for(i=0;i<25;i++)
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if((temp_data[0])!=(ChechData_Lev1[4*i])) {level1_flg=1;}
if((temp_data[1])!=(ChechData_Lev1[4*i+1])) {level1_flg=1;}
if((temp_data[2])!=(ChechData_Lev1[4*i+2])) {level1_flg=1;}
if((temp_data[3])!=(ChechData_Lev1[4*i+3])) {level1_flg=1;}
}
CS1_Card();
/* for contral light the Led1 */
PORTA=led_light_data;
/************* Level2 ok **************/
CS0_Card();
Txd_command_WithRxd(Level2_Command,9);
Get_TempRxdData_9();
for(i=0;i<5;i++) // These 20 bytes must not be check
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
}
for(i=0;i<20;i++)
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if((temp_data[0])!=(ChechData_Lev2[4*i])) {level2_flg=1;}
if((temp_data[1])!=(ChechData_Lev2[4*i+1])) {level2_flg=1;}
if((temp_data[2])!=(ChechData_Lev2[4*i+2])) {level2_flg=1;}
if((temp_data[3])!=(ChechData_Lev2[4*i+3])) {level2_flg=1;}
}
CS1_Card();
/************* Level3 ok **************/
CS0_Card();
Txd_command_WithRxd(Level3_Command,9);
if( rxd_data[1]!=0x78 && rxd_data[2]!=0xa8 && rxd_data[3]!=0x5e && rxd_data[4]!=0xf9 ) {level3_flg=1;}
if( rxd_data[5]!=0x01 && rxd_data[6]!=0x09 && rxd_data[7]!=0xb3 && rxd_data[8]!=0xb6 ) {level3_flg=1;}
Get_TempRxdData_9();
for(i=0;i<23;i++)
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if((temp_data[0])!=(ChechData_Lev3[4*i])) {level3_flg=1;}
if((temp_data[1])!=(ChechData_Lev3[4*i+1])) {level3_flg=1;}
if((temp_data[2])!=(ChechData_Lev3[4*i+2])) {level3_flg=1;}
if((temp_data[3])!=(ChechData_Lev3[4*i+3])) {level3_flg=1;}
}
CS1_Card();
/* for contral light the Led1 */
PORTA=0xff;
/************* Level4 ok **************/
CS0_Card();
Txd_command_WithRxd(Level4_Command,9);
if( rxd_data[1]!=0x6c && rxd_data[2]!=0x2c && rxd_data[3]!=0xe1 && rxd_data[4]!=0x62) {level4_flg=1;}
if( rxd_data[5]!=0x88 && rxd_data[6]!=0xad && rxd_data[7]!=0x7a && rxd_data[8]!=0x65) {level4_flg=1;}
Get_TempRxdData_9();
for(i=0;i<23;i++)
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if((temp_data[0])!=(ChechData_Lev4[4*i])) {level4_flg=1;}
if((temp_data[1])!=(ChechData_Lev4[4*i+1])) {level4_flg=1;}
if((temp_data[2])!=(ChechData_Lev4[4*i+2])) {level4_flg=1;}
if((temp_data[3])!=(ChechData_Lev4[4*i+3])) {level4_flg=1;}
}
CS1_Card();
/*************************/
ClearStatus();
ReadStatus();
if( level1_flg==1 || level2_flg==1 || level3_flg==1 || level4_flg==1 )
{
verify_error_flag1=1;
}
//goto lp_end;
/*@@@@@@@@@@@@@@ process sector 0 @@@@@@@@@@@@@*/
/****** erase sector 0 ****************/
Erase16Sector(Sector_Addres[0],Sector_Addres[1]);
ReadStatus();
ClearStatus();
/******* write sector 0 ***********/
Page_Program[1]= Sector_Addres[0]; //SA2
Page_Program[2]= Sector_Addres[1]; //SA1
for(k=0;k<4;k++)
{
/* for contral light the Led1 */
if((k==0) || (k==2) ){PORTA=led_light_data;}
if((k==1) || (k==3) ){PORTA=0xff;}
Page_Program[3]=k; // page 0/1/2/3
CS0_Card();
Txd_command_WithRxd(Page_Program,5);
switch(k) {
case 0: {
for(j=0;j<128;j++) {ssp_One_Byte(j);} // write: 0--127
} break;
case 1: {
for(j=0;j<128;j++) {ssp_One_Byte(j+128);} // write: 128--255
} break;
case 2: {
for(j=0;j<128;j++) {ssp_One_Byte(255-j);} // write: 255--128
} break;
case 3: {
for(j=0;j<128;j++) {ssp_One_Byte(127-j);} // write: 127--0
} break;
default:
break;
}
CS1_Card();
ReadStatus();
ClearStatus();
}
/* for contral light the Led1 */
PORTA=0Xff;
/****** checking sector 0 **********/
verify_error_flag1=0;
ReadArry[1]=Sector_Addres[0]; //SA2
ReadArry[2]=Sector_Addres[1]; //SA1
s0_read_lp1:
CS0_Card();
Txd_command_WithRxd(ReadArry,9);
Get_TempRxdData_9();
verify_times=verify_times+1;
for(k=0;k<32;k++) // checking page0 data: 0--127
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if (rxd_data[0]!=4*k) {verify_error_flag1=1;}
if (rxd_data[1]!=(4*k+1)) {verify_error_flag1=1;}
if (rxd_data[2]!=(4*k+2)) {verify_error_flag1=1;}
if (rxd_data[3]!=(4*k+3)) {verify_error_flag1=1;}
}
/* for contral light the Led1 */
PORTA=led_light_data;
for(k=0;k<32;k++) // checking page1 data: 128--255
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if(rxd_data[0]!=(4*k+128)) {verify_error_flag1=1;}
if(rxd_data[1]!=(4*k+1+128)) {verify_error_flag1=1;}
if(rxd_data[2]!=(4*k+2+128)) {verify_error_flag1=1;}
if(rxd_data[3]!=(4*k+3+128)) {verify_error_flag1=1;}
}
/* for contral light the Led1 */
//PORTA=0xff;
for(k=0;k<32;k++) // checking page2 data: 255--128
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if(rxd_data[0]!=(255-4*k)) {verify_error_flag1=1;}
if(rxd_data[1]!=(255-(4*k+1))) {verify_error_flag1=1;}
if(rxd_data[2]!=(255-(4*k+2))) {verify_error_flag1=1;}
if(rxd_data[3]!=(255-(4*k+3))) {verify_error_flag1=1;}
}
/* for contral light the Led1 */
//PORTA=led_light_data;
for(k=0;k<32;k++) // checking page3 data: 127--0
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if(rxd_data[0]!=(127-4*k)) {verify_error_flag1=1;}
if(rxd_data[1]!=(127-(4*k+1))) {verify_error_flag1=1;}
if(rxd_data[2]!=(127-(4*k+2))) {verify_error_flag1=1;}
if(rxd_data[3]!=(127-(4*k+3))) {verify_error_flag1=1;}
}
CS1_Card();
/* for contral light the Led1 */
PORTA=0Xff;
if( (verify_times<2) && (verify_error_flag1==1) )
{
verify_error_flag1=0;
goto s0_read_lp1;
}
if(verify_error_flag1 == 1) //added by louis
{
goto lp_end;
}
//goto lp_end;
/*************************************************/
if(MemCard_Type==0x04) {loop_number=11;}
if(MemCard_Type==0x08) {loop_number=12;}
if(MemCard_Type==0x10) {loop_number=13;}
/*@@@@@@@@@@@@@@@ Erase the sectors for checking @@@@@@@@@@@@@@@@@@@@@@*/
for(i=0;i<(loop_number+1);i++)
{
/* for contral light the Led1 */
// if( (i==0) || (i==2)||(i==4)||(i==6)||(i==8)||(i==10) ){PORTA=led_light_data;}
// if( (i==1) || (i==3)||(i==5)||(i==7)||(i==9)||(i==11) ){PORTA=0xff;}
/*+++++++++ Erase 16 sectors ++++++++++++++++++*/
if(i<=3)
{ Erase16Sector(Sector_Addres[0],Sector_Addres[1]); }
else
{ Erase16Sector(Sector_Addres[2*i],Sector_Addres[2*i+1]); }
ReadStatus();
ClearStatus();
}
/* for contral light the Led1 */
PORTA=led_light_data;
/*@@@@@@@@@@@@@@@@@ to writting "i" to the sector 's page 0 @@@@@@@@@@@@@@@@@@@@@@*/
for(i=0;i<(loop_number);i++)
{
/* for contral light the Led1 */
// if( (i==0) || (i==2)||(i==4)||(i==6)||(i==8)||(i==10) ){PORTA=led_light_data;}
// if( (i==1) || (i==3)||(i==5)||(i==7)||(i==9)||(i==11) ){PORTA=0xff;}
/*+++++++++ Writeing the ONE sector with "i" ++++*/
Page_Program[1]= Sector_Addres[2*i]; //SA2
Page_Program[2]= Sector_Addres[2*i+1]; //SA1
Page_Program[3]=0X00; /*Page 0 */
CS0_Card();
Txd_command_WithRxd(Page_Program,5);
for(j=0;j<128;j++) {ssp_One_Byte(i+1);}
CS1_Card();
ReadStatus();
ClearStatus();
}
/* for contral light the Led1 */
PORTA=0xff;
/*@@@@@@@@@@@@@@@@ Checking the sectors @@@@@@@@@@@@@@@@@@@@@@@*/
for(i=0;i<(loop_number);i++)
{
verify_error_flag1=0;
ReadArry[1]=Sector_Addres[2*i]; //SA2
ReadArry[2]=Sector_Addres[2*i+1]; //SA1
read_lp1:
CS0_Card();
Txd_command_WithRxd(ReadArry,9);
Get_TempRxdData_9();
verify_times=verify_times+1;
for(j=0;j<32;j++) // for checking page 0 of every sector
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
if( (rxd_data[0]!=(i+1))||(rxd_data[1]!=(i+1))||(rxd_data[2]!=(i+1))||(rxd_data[3]!=(i+1)) )
{
verify_error_flag1=1;
goto lp_end;
}
}
/* for contral light the Led1 */
PORTA=led_light_data;
for(k=0;k<96;k++) // only read the page 1--3 of every sector
{
Txd_command_WithRxd(temp_data,4);
Get_TRxdData_4();
}
CS1_Card();
if( (verify_times<2) && (verify_error_flag1==1) )
{
verify_error_flag1 =0;
goto read_lp1;
}
/* for contral light the Led1 */
PORTA=led_light_data;
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* for contral light the Led1 */
PORTA=0xff;
lp_end:
if( level1_flg==1 || level2_flg==1 || level3_flg==1 || level4_flg==1 ) {verify_error_flag1=1;}
if( verify_error_flag1==1) {PORTA=0Xfb; goto lp_end;}
else{PORTA=0Xfd;goto lp_end;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -