                                                            /* Truth Table for Dual 7476 JK Flip_Flop Chip
                                            
                                                                        ***[Test of Set]***
                                           Preset     Clear      J        K       CLK   |   Q1       Q1'       Q2      Q2'      
                                            ________________________________________________________________________________    
                                      Test1    0        1        1        1        1    |    1        0        1        0 
                                      Test2    0        1        1        1        0    |    1        0        1        0
                                      Test3    0        1        1        0        1    |    1        0        1        0
                                      Test4    0        1        1        0        0    |    1        0        1        0
                                      Test5    0        1        0        1        1    |    1        0        1        0
                                      Test6    0        1        0        1        0    |    1        0        1        0
                                      Test7    0        1        0        0        1    |    1        0        1        0
                                      Test8    0        1        0        0        0    |    1        0        1        0

                                                                         ***[Test of Reset]***
                                           Preset     Clear      J        K       CLK   |   Q1       Q1'       Q2      Q2'
                                            ________________________________________________________________________________    
                                      Test1    1        0        1        1        1    |    0        1        0        1
                                      Test2    1        0        1        1        0    |    0        1        0        1
                                      Test3    1        0        1        0        1    |    0        1        0        1
                                      Test4    1        0        1        0        0    |    0        1        0        1
                                      Test5    1        0        0        1        1    |    0        1        0        1
                                      Test6    1        0        0        1        0    |    0        1        0        1
                                      Test7    1        0        0        0        1    |    0        1        0        1
                                      Test8    1        0        0        0        0    |    0        1        0        1                                   

                                                                      ***[Test of Functions]***
                                           Preset     Clear      J        K       CLK   |   Q1       Q1'      Q2       Q2'      
                                            ________________________________________________________________________________    
                                      Test1    1        1        1        1      0-1-0  |    0        1        0        1   J=1,K=1 => Toggle     1=>0
                                      Test2    1        1        0        1      0-1-0  |    0        1        0        1   J=0,K=1 => Reset(0)   0=>0
                                      Test3    1        1        0        0      0-1-0  |    0        1        0        1   J=0,K=0 => No Change  0=>0
                                      Test4    1        1        1        1      0-1-0  |    1        0        1        0   J=1,K=1 => Toggle     0=>1
                                      Test5    1        1        1        0      0-1-0  |    1        0        1        0   J=1,K=0 => Set(1)     1=>1
                                      Test6    1        1        0        1      0-1-0  |    0        1        0        1   J=0,K=1 => Reset(0)   1=>0
                                      Test7    1        1        1        0      0-1-0  |    1        0        1        0   J=1,K=0 => Set(1)     0=>1
                                      Test8    1        1        0        0      0-1-0  |    1        0        1        0   J=0,K=0 => No Change  1=>1
        */

int JK_FlipFlop()
{
                                                                   /*        ------------       */  
                                              int JK_Clk_1=FP;     /*  Clk1  |   \_/    | K1    */  int JK_K1  =FP+1;
                                              int JK_Pre_1=FP+2;   /*  Pre1  |          | 1Q    */  int JK_Q1  =FP+3;    
                                              int JK_Clr_1=FP+4;   /*  Clr1  |          | 1Q-n  */  int JK_Q1_n=FP+5;
                                              int JK_J1   =FP+6;   /*  J1    |          | GND   */  int JK_GND =FP+7; 
                                              int JK_Vcc  =FP+8;   /*  Vcc   |          | 2K    */  int JK_K2  =FP+9;
                                              int JK_Clk_2=FP+10;  /*  Clk2  |          | 2Q    */  int JK_Q2  =FP+11; 
                                              int JK_Pre_2=FP+12;  /*  Pre2  |          | 2Q-n  */  int JK_Q2_n=FP+13; 
                                              int JK_Clr_2=FP+14;  /*  Clr2  |          | 2J    */  int JK_J2  =FP+15;   
                                                                   /*        ------------       */ 
                                                                            int test_Q1   ;
                                                                            int test_Q1_n ;
                                                                            int test_Q2   ;
                                                                            int test_Q2_n ;
                                                                            int testp_Q1   ;
                                                                            int testp_Q1_n ;
                                                                            int testp_Q2   ;
                                                                            int testp_Q2_n ;
                                                                            
                                                                            String Clk1   ;
                                                                            String Clk2   ;
                                                                     
                                                                        boolean test1 = false;
                                                                        boolean test2 = false;
                                                                        boolean test3 = false;
                                                                        boolean test4 = false;
                                                                        boolean test5 = false;
                                                                        boolean test6 = false;
                                                                        boolean test7 = false;
                                                                        boolean test8 = false;

                                                                        boolean testp1 = false;
                                                                        boolean testp2 = false;
                                                                        boolean testp3 = false;
                                                                        boolean testp4 = false;
                                                                        boolean testp5 = false;
                                                                        boolean testp6 = false;
                                                                        boolean testp7 = false;
                                                                        boolean testp8 = false;

                                                                        boolean test_Set      = false;
                                                                        boolean test_Reset    = false;
                                                                        boolean test_Function = false;
                                                                        boolean test_Pulse    = false;
 
                                                       pinMode(JK_Clk_1, OUTPUT); pinMode(JK_K1   , OUTPUT);
                                                       pinMode(JK_Pre_1, OUTPUT); pinMode(JK_Q1   , INPUT );
                                                       pinMode(JK_Clr_1, OUTPUT); pinMode(JK_Q1_n , INPUT );
                                                       pinMode(JK_J1   , OUTPUT); pinMode(JK_GND  , OUTPUT);
                                                       pinMode(JK_Vcc  , OUTPUT); pinMode(JK_K2   , OUTPUT);
                                                       pinMode(JK_Clk_2, OUTPUT); pinMode(JK_Q2   , INPUT );
                                                       pinMode(JK_Pre_2, OUTPUT); pinMode(JK_Q2_n , INPUT );
                                                       pinMode(JK_Clr_2, OUTPUT); pinMode(JK_J2   , OUTPUT);
                                                                                            
                                                                      delay(readDelay);

  /*******************************************************************************************************************************
   **************************************************** [TEST OF RESET] **********************************************************
   *******************************************************************************************************************************/

   /**
    *                                                                    ***[Test of Reset]***
                                           Preset     Clear      J        K       CLK   |   Q1       Q1'       Q2      Q2'
                                            ________________________________________________________________________________    
                                      Test1    1        0        1        1        1    |    0        1        0        1
                                      Test2    1        0        1        1        0    |    0        1        0        1
                                      Test3    1        0        1        0        1    |    0        1        0        1
                                      Test4    1        0        1        0        0    |    0        1        0        1
                                      Test5    1        0        0        1        1    |    0        1        0        1
                                      Test6    1        0        0        1        0    |    0        1        0        1
                                      Test7    1        0        0        0        1    |    0        1        0        1
                                      Test8    1        0        0        0        0    |    0        1        0        1    
    */
  
  Serial.print("\t\t\t*** Test of RESET ***");
    
/**********************************************************************************
         ------------------------TEST 1 ------------------------
 **********************************************************************************/ 
  //Serial.println("\nTEST 1: J=1 K=1 CLK=1");
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH) ; digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, LOW)  ; digitalWrite(JK_Clr_2, LOW);

  // J=1 K=1 CLK=1
  digitalWrite(JK_J1   , HIGH) ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , HIGH) ; digitalWrite(JK_K2   , HIGH);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  
  test_Q1    = digitalRead(JK_Q1)  ;   
  test_Q1_n  = digitalRead(JK_Q1_n); 
  test_Q2    = digitalRead(JK_Q2)  ; 
  test_Q2_n  = digitalRead(JK_Q2_n); 
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test1 = true;
  Serial.print("\nTest#\tSide\tPreset\tClear\tJ\tK\tCLK\tQ\tQ'\tPass");
  Serial.print("\n  1: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test1);

/**********************************************************************************
         ------------------------TEST 2 ------------------------
 **********************************************************************************/ 
  //Serial.println("\nTEST 2: J=1 K=1 CLK=0");
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, LOW)  ; digitalWrite(JK_Clr_2, LOW);
 
  // J=1 K=1 CLK=0
  digitalWrite(JK_J1   , HIGH) ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , HIGH) ; digitalWrite(JK_K2   , HIGH);
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  
  test_Q1    = digitalRead(JK_Q1)  ;   
  test_Q1_n  = digitalRead(JK_Q1_n); 
  test_Q2    = digitalRead(JK_Q2)  ; 
  test_Q2_n  = digitalRead(JK_Q2_n); 
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test2 = true;
  Serial.print("\n  2: ");
  Serial.print("\t 2 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test2);

/**********************************************************************************
         ------------------------TEST 3 ------------------------
 **********************************************************************************/ 
  //Serial.println("\nTEST 3: J=1 K=0 CLK=1");
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, LOW)  ; digitalWrite(JK_Clr_2, LOW);
 
  // J=1 K=0 CLK=1
  digitalWrite(JK_J1   , HIGH)  ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , LOW)   ; digitalWrite(JK_K2   , LOW);
  digitalWrite(JK_Clk_1, HIGH)  ; digitalWrite(JK_Clk_2, HIGH);
  
  test_Q1    = digitalRead(JK_Q1)  ;   
  test_Q1_n  = digitalRead(JK_Q1_n); 
  test_Q2    = digitalRead(JK_Q2)  ; 
  test_Q2_n  = digitalRead(JK_Q2_n); 
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test3 = true;
  Serial.print("\n  3: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test3);

/**********************************************************************************
         ------------------------TEST 4 ------------------------
 **********************************************************************************/  
  //Serial.println("\nTEST 4: J=1 K=0 CLK=0");
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, LOW)  ; digitalWrite(JK_Clr_2, LOW);
 
  // J=1 K=0 CLK=0
  digitalWrite(JK_J1   , HIGH)  ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , LOW)   ; digitalWrite(JK_K2   , LOW);
  digitalWrite(JK_Clk_1, LOW)   ; digitalWrite(JK_Clk_2, LOW);
  
  test_Q1    = digitalRead(JK_Q1)  ;   
  test_Q1_n  = digitalRead(JK_Q1_n); 
  test_Q2    = digitalRead(JK_Q2)  ; 
  test_Q2_n  = digitalRead(JK_Q2_n); 
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test4 = true;
  Serial.print("\n  4: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test4);

/**********************************************************************************
         ------------------------TEST 5 ------------------------
 **********************************************************************************/   
  //Serial.println("\nTEST 5: J=0 K=1 CLK=1");
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH) ; digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, LOW)  ; digitalWrite(JK_Clr_2, LOW);
 
  // J=0 K=1 CLK=1
  digitalWrite(JK_J1   , LOW)  ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , HIGH) ; digitalWrite(JK_K2   , HIGH);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  
  test_Q1    = digitalRead(JK_Q1)  ;   
  test_Q1_n  = digitalRead(JK_Q1_n); 
  test_Q2    = digitalRead(JK_Q2)  ; 
  test_Q2_n  = digitalRead(JK_Q2_n); 
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test5 = true;
  Serial.print("\n  5: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test5);

/**********************************************************************************
         ------------------------TEST 6 ------------------------
 **********************************************************************************/    
  //Serial.println("\nTEST 6: J=0 K=1 CLK=0");
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH) ; digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, LOW)  ; digitalWrite(JK_Clr_2, LOW);
 
  // J=0 K=1 CLK=0
  digitalWrite(JK_J1   , LOW)  ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , HIGH) ; digitalWrite(JK_K2   , HIGH);
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  
  test_Q1    = digitalRead(JK_Q1)  ;   
  test_Q1_n  = digitalRead(JK_Q1_n); 
  test_Q2    = digitalRead(JK_Q2)  ; 
  test_Q2_n  = digitalRead(JK_Q2_n); 
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test6 = true;
  Serial.print("\n  6: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test6);

/**********************************************************************************
         ------------------------TEST 7 ------------------------
 **********************************************************************************/    
  //Serial.println("\nTEST 7: J=0 K=0 CLK=1");
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH) ; digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, LOW)  ; digitalWrite(JK_Clr_2, LOW);
 
  // J=0 K=0 CLK=1
  digitalWrite(JK_J1   , LOW)  ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , LOW)  ; digitalWrite(JK_K2   , LOW);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  
  test_Q1    = digitalRead(JK_Q1)  ;   
  test_Q1_n  = digitalRead(JK_Q1_n); 
  test_Q2    = digitalRead(JK_Q2)  ; 
  test_Q2_n  = digitalRead(JK_Q2_n); 
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test7 = true;
  Serial.print("\n  7: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test7);

/**********************************************************************************
         ------------------------TEST 8 ------------------------
 **********************************************************************************/    
  //Serial.println("\nTEST 8: J=0 K=0 CLK=0");
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH) ; digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, LOW)  ; digitalWrite(JK_Clr_2, LOW);
 
  // J=0 K=0 CLK=0
  digitalWrite(JK_J1   , LOW)  ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , LOW)  ; digitalWrite(JK_K2   , LOW);
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  
  test_Q1    = digitalRead(JK_Q1)  ;   
  test_Q1_n  = digitalRead(JK_Q1_n); 
  test_Q2    = digitalRead(JK_Q2)  ; 
  test_Q2_n  = digitalRead(JK_Q2_n); 
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test8 = true;
  Serial.print("\n  8: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test8);

  if(test1 == true && 
     test2 == true && 
     test3 == true && 
     test4 == true && 
     test5 == true && 
     test6 == true && 
     test7 == true && 
     test8 == true)
     {
          test_Reset = true;
          Serial.println("\nJK Chip RESET Test Passed\n"); 
     }
  else 
      {
            Serial.println("\nJK Chip RESET Test Failed\n"); 
      }

/*******************************************************************************************************************************
 ******************************************************** [Test of SET] ********************************************************
 *******************************************************************************************************************************/
                                     
/*                                    ***[Test of Set]***
       Preset     Clear      J        K       CLK   |   Q1       Q1'       Q2      Q2'      
        ________________________________________________________________________________    
  Test1    0        1        1        1        1    |    1        0        1        0 
  Test2    0        1        1        1        0    |    1        0        1        0
  Test3    0        1        1        0        1    |    1        0        1        0
  Test4    0        1        1        0        0    |    1        0        1        0
  Test5    0        1        0        1        1    |    1        0        1        0
  Test6    0        1        0        1        0    |    1        0        1        0
  Test7    0        1        0        0        1    |    1        0        1        0
  Test8    0        1        0        0        0    |    1        0        1        0
*/
 
  Serial.print("\t\t\t*** Test of SET ***");
  test1 = test2 = test3 = test4 = test5 = test6 = test7 = test8 = false;
  
/**********************************************************************************
            ------------------------TEST 1------------------------
 **********************************************************************************/
  //Serial.println("\nTEST 1: J=1 K=1 CLK=1");
  digitalWrite(JK_Vcc,   HIGH); digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, LOW ); digitalWrite(JK_Pre_2, LOW );
  digitalWrite(JK_Clr_1, HIGH); digitalWrite(JK_Clr_2, HIGH);
  
  //J=1 K=1 CLK=1
  digitalWrite(JK_J1   , HIGH); digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , HIGH); digitalWrite(JK_K2   , HIGH);
  digitalWrite(JK_Clk_1, HIGH); digitalWrite(JK_Clk_2, HIGH);

  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test1 = true;

  Serial.print("\nTest#\tSide\tPreset\tClear\tJ\tK\tCLK\tQ\tQ'\tPass");
  Serial.print("\n  1: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test1);

/**********************************************************************************
            ------------------------TEST 2------------------------
 **********************************************************************************/
  //Serial.print("\nTEST 2: J=1 K=1 CLK=0");
  digitalWrite(JK_Vcc,   HIGH); digitalWrite(JK_GND, LOW);
  
  digitalWrite(JK_Pre_1, LOW ); digitalWrite(JK_Pre_2, LOW );
  digitalWrite(JK_Clr_1, HIGH); digitalWrite(JK_Clr_2, HIGH);
  
  // J=1 K=1 CLK=0
  digitalWrite(JK_J1   , HIGH); digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , HIGH); digitalWrite(JK_K2   , HIGH);
  digitalWrite(JK_Clk_1, LOW) ; digitalWrite(JK_Clk_2, LOW);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test2 = true;

  Serial.print("\n  2: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test2);

/**********************************************************************************
            ------------------------TEST 3------------------------
 **********************************************************************************/
  //Serial.print("\nTEST 3: J=1 K=0 CLK=1");
  digitalWrite(JK_Vcc,   HIGH); digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, LOW ); digitalWrite(JK_Pre_2, LOW );
  digitalWrite(JK_Clr_1, HIGH); digitalWrite(JK_Clr_2, HIGH);
  
  // J=1 K=0 CLK=1
  digitalWrite(JK_J1   , HIGH); digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , LOW ); digitalWrite(JK_K2   , LOW );
  digitalWrite(JK_Clk_1, HIGH); digitalWrite(JK_Clk_2, HIGH);


  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test3 = true;

  Serial.print("\n  3: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test3);

/**********************************************************************************
            ------------------------TEST 4------------------------
 **********************************************************************************/
  //Serial.println("\nTEST 4: J=1 K=0 CLK=0");
  digitalWrite(JK_Vcc,   HIGH); digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, LOW ); digitalWrite(JK_Pre_2, LOW );
  digitalWrite(JK_Clr_1, HIGH); digitalWrite(JK_Clr_2, HIGH);
  
  // J=1 K=0 CLK=0
  digitalWrite(JK_J1   , HIGH); digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , LOW ); digitalWrite(JK_K2   , LOW );
  digitalWrite(JK_Clk_1, LOW ); digitalWrite(JK_Clk_2, LOW );
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test4 = true;

  Serial.print("\n  4: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test4);

/**********************************************************************************
            ------------------------TEST 5------------------------
 **********************************************************************************/
  //Serial.println("\nTEST 5: J=0 K=1 CLK=1");
  digitalWrite(JK_Vcc,   HIGH); digitalWrite(JK_GND, LOW);
  
  digitalWrite(JK_Pre_1, LOW ); digitalWrite(JK_Pre_2, LOW );
  digitalWrite(JK_Clr_1, HIGH); digitalWrite(JK_Clr_2, HIGH);
 
  // J=0 K=1 CLK=1
  digitalWrite(JK_J1   , LOW) ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , HIGH); digitalWrite(JK_K2   , HIGH);
  digitalWrite(JK_Clk_1, HIGH); digitalWrite(JK_Clk_2, HIGH);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test5 = true;

  Serial.print("\n  5: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test5);

/**********************************************************************************
            ------------------------TEST 6------------------------
 **********************************************************************************/
  //Serial.println("\nTEST 6: J=0 K=1 CLK=0");
  digitalWrite(JK_Vcc,   HIGH); digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, LOW ); digitalWrite(JK_Pre_2, LOW );
  digitalWrite(JK_Clr_1, HIGH); digitalWrite(JK_Clr_2, HIGH);
 
  // J=0 K=1 CLK=0
  digitalWrite(JK_J1   , LOW) ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , HIGH); digitalWrite(JK_K2   , HIGH);
  digitalWrite(JK_Clk_1, LOW) ; digitalWrite(JK_Clk_2, LOW);
  
 test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test6 = true;
  
  Serial.print("\n  6: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test6);

/**********************************************************************************
            ------------------------TEST 7------------------------
 **********************************************************************************/
  //Serial.println("\nTEST 7: J=0 K=0 CLK=1");
  digitalWrite(JK_Vcc,   HIGH); digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, LOW ); digitalWrite(JK_Pre_2, LOW );
  digitalWrite(JK_Clr_1, HIGH); digitalWrite(JK_Clr_2, HIGH);

  // J=0 K=0 CLK=1
  digitalWrite(JK_J1   , LOW) ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , LOW) ; digitalWrite(JK_K2   , LOW);
  digitalWrite(JK_Clk_1, HIGH); digitalWrite(JK_Clk_2, HIGH);
  
 test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test7 = true;

  Serial.print("\n  7: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test7);

/**********************************************************************************
            ------------------------TEST 8------------------------
 **********************************************************************************/
  //Serial.println("\nTEST 8: J=0 K=0 CLK=0");
  digitalWrite(JK_Vcc,   HIGH); digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, LOW ); digitalWrite(JK_Pre_2, LOW );
  digitalWrite(JK_Clr_1, HIGH); digitalWrite(JK_Clr_2, HIGH);

  // J=0 K=0 CLK=0
  digitalWrite(JK_J1   , LOW) ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , LOW) ; digitalWrite(JK_K2   , LOW);
  digitalWrite(JK_Clk_1, LOW) ; digitalWrite(JK_Clk_2, LOW);
  
 test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test8 = true;

  Serial.print("\n  8: ");
  Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_1)); Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n);
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clk_2)); Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n);
  Serial.print("\t"); Serial.print(test8);

  if(test1 == true && 
     test2 == true && 
     test3 == true && 
     test4 == true && 
     test5 == true && 
     test6 == true && 
     test7 == true && 
     test8 == true)
     {
          test_Set = true;
          Serial.println("\nJK Chip SET Test Passed\n"); 
     }
  else 
     {
          Serial.println("\nJK Chip SET Test Failed\n"); 
     }

  /*******************************************************************************************************************************
   ************************************************* [Test of JK Functions] ******************************************************
   *******************************************************************************************************************************/

   /**
    *                                                                     ***[Test of Functions]***
                                           Preset     Clear      J        K       CLK   |   Q1       Q1'      Q2       Q2'      
                                            ________________________________________________________________________________    
                                      Test1    1        1        1        1      0-1-0  |    0        1        0        1   J=1,K=1 => Toggle     1=>0
                                      Test2    1        1        0        1      0-1-0  |    0        1        0        1   J=0,K=1 => Reset(0)   0=>0
                                      Test3    1        1        0        0      0-1-0  |    0        1        0        1   J=0,K=0 => No Change  0=>0
                                      Test4    1        1        1        1      0-1-0  |    1        0        1        0   J=1,K=1 => Toggle     0=>1
                                      Test5    1        1        1        0      0-1-0  |    1        0        1        0   J=1,K=0 => Set(1)     1=>1
                                      Test6    1        1        0        1      0-1-0  |    0        1        0        1   J=0,K=1 => Reset(0)   1=>0
                                      Test7    1        1        1        0      0-1-0  |    1        0        1        0   J=1,K=0 => Set(1)     0=>1
                                      Test8    1        1        0        0      0-1-0  |    1        0        1        0   J=0,K=0 => No Change  1=>1
    */

  Serial.print("\t\t\t*** Test of JK Functions ***");
  testp1 = testp2 = testp3 = testp4 = testp5 = testp6 = testp7 = testp8 = false;
  test1 = test2 = test3 = test4 = test5 = test6 = test7 = test8 = false;
  
/**********************************************************************************
         ------------------------TEST 1 - TOGGLE------------------------
 **********************************************************************************/ 
  //Serial.println("\nTEST 1: J=1,K=1,CLK=010 => Toggle");  
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH ); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, HIGH) ; digitalWrite(JK_Clr_2, HIGH);

   // J=1,K=1,CLK=010 => Toggle
  digitalWrite(JK_J1   , HIGH) ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , HIGH) ; digitalWrite(JK_K2   , HIGH);
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = digitalRead(JK_Clk_1) ; Clk2 = digitalRead(JK_Clk_2);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);

  // Check that both Q and Q' change together on falling clock pulses.
  testp_Q1    = digitalRead(JK_Q1)  ;
  testp_Q1_n  = digitalRead(JK_Q1_n);
  testp_Q2    = digitalRead(JK_Q2)  ;
  testp_Q2_n  = digitalRead(JK_Q2_n);
  if((testp_Q1 != testp_Q1_n) && 
     (testp_Q2   != testp_Q2_n))
  testp1 = true;
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test1 = true;

  Serial.print("\nTest#\tSide\tPreset\tClear\tJ\tK\tCLK\tQ\tQ'\tPass\tSynch");
  Serial.print("\n  1: ");
    Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(Clk1); 
    Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n); Serial.print("\t\t\tJ=1,K=1 => Toggle     1=>0");
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(Clk2); 
    Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n); Serial.print("\t"); Serial.print(test1); 
    Serial.print("\t"); Serial.print(testp1);
  Clk1 = Clk2 = "";

/**********************************************************************************
         ------------------------TEST 2 - RESET(0)------------------------
 **********************************************************************************/ 
  //Serial.println("\nTEST 2: J=0,K=1,CLK=010 => Reset(0)");   
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH ); digitalWrite(JK_Pre_2, HIGH );
  digitalWrite(JK_Clr_1, HIGH) ; digitalWrite(JK_Clr_2, HIGH);

   // J=1,K=1,CLK=010 => Toggle
  digitalWrite(JK_J1   , LOW)  ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , HIGH) ; digitalWrite(JK_K2   , HIGH);
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = digitalRead(JK_Clk_1)      ; Clk2 = digitalRead(JK_Clk_2);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);

  // Check that both Q and Q' change together on falling clock pulses.
  testp_Q1    = digitalRead(JK_Q1)  ;
  testp_Q1_n  = digitalRead(JK_Q1_n);
  testp_Q2    = digitalRead(JK_Q2)  ;
  testp_Q2_n  = digitalRead(JK_Q2_n);
  if((testp_Q1 != testp_Q1_n) && 
     (testp_Q2   != testp_Q2_n))
  testp2 = true;
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test2 = true;
  
  Serial.print("\n  2: ");
    Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(Clk1); 
    Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n); Serial.print("\t\t\tJ=0,K=1 => Reset(0)   0=>0");
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(Clk2); 
    Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n); Serial.print("\t"); Serial.print(test2); 
    Serial.print("\t"); Serial.print(testp2);
  Clk1 = Clk2 = "";

/**********************************************************************************
         ------------------------TEST 3 - NO CHANGE------------------------
 **********************************************************************************/   
  //Serial.println("\nTEST 3: J=0,K=0,CLK=010 => No Change");   
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH ); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, HIGH) ; digitalWrite(JK_Clr_2, HIGH);

  // J=0,K=0,CLK=010 => No Change
  digitalWrite(JK_J1   , LOW) ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , LOW) ; digitalWrite(JK_K2   , LOW);
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = digitalRead(JK_Clk_1)      ; Clk2 = digitalRead(JK_Clk_2);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);

  // Check that both Q and Q' change together on falling clock pulses.
  testp_Q1    = digitalRead(JK_Q1)  ;
  testp_Q1_n  = digitalRead(JK_Q1_n);
  testp_Q2    = digitalRead(JK_Q2)  ;
  testp_Q2_n  = digitalRead(JK_Q2_n);
  if((testp_Q1 != testp_Q1_n) && 
     (testp_Q2   != testp_Q2_n))
  testp3 = true;
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
   test3 = true;
   
  Serial.print("\n  3: ");
    Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(Clk1); 
    Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n); Serial.print("\t\t\tJ=0,K=0 => No Change  0=>0");
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(Clk2); 
    Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n); Serial.print("\t"); Serial.print(test3); 
    Serial.print("\t"); Serial.print(testp3);
  Clk1 = Clk2 = "";

/**********************************************************************************
         ------------------------TEST 4 - TOGGLE------------------------
 **********************************************************************************/  
  //Serial.println("\nTEST 4: J=1,K=1,CLK=010 => Toggle"); 
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH ); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, HIGH) ; digitalWrite(JK_Clr_2, HIGH);

  // J=1,K=1,CLK=010 => Toggle
  digitalWrite(JK_J1   , HIGH) ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , HIGH) ; digitalWrite(JK_K2   , HIGH);
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = digitalRead(JK_Clk_1)      ; Clk2 = digitalRead(JK_Clk_2);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);

  // Check that both Q and Q' change together on falling clock pulses.
  testp_Q1    = digitalRead(JK_Q1)  ;
  testp_Q1_n  = digitalRead(JK_Q1_n);
  testp_Q2    = digitalRead(JK_Q2)  ;
  testp_Q2_n  = digitalRead(JK_Q2_n);
  if((testp_Q1 != testp_Q1_n) && 
     (testp_Q2   != testp_Q2_n))
  testp4 = true;
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test4 = true;
  
  Serial.print("\n  4: ");
    Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(Clk1); 
    Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n); Serial.print("\t\t\tJ=1,K=1 => Toggle     0=>1");
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(Clk2); 
    Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n); Serial.print("\t"); Serial.print(test4); 
    Serial.print("\t"); Serial.print(testp4);
  Clk1 = Clk2 = "";

/**********************************************************************************
         ------------------------TEST 5 - SET(1)------------------------
 **********************************************************************************/  
  //Serial.println("\nTEST 5: J=1,K=0,CLK=010 => Set(1)");   
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH ); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, HIGH) ; digitalWrite(JK_Clr_2, HIGH);

  // J=1,K=0,CLK=010 => Set(1)
  digitalWrite(JK_J1   , HIGH) ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , LOW)  ; digitalWrite(JK_K2   , LOW);
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = digitalRead(JK_Clk_1)      ; Clk2 = digitalRead(JK_Clk_2);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);

  // Check that both Q and Q' change together on falling clock pulses.
  testp_Q1    = digitalRead(JK_Q1)  ;
  testp_Q1_n  = digitalRead(JK_Q1_n);
  testp_Q2    = digitalRead(JK_Q2)  ;
  testp_Q2_n  = digitalRead(JK_Q2_n);
  if((testp_Q1 != testp_Q1_n) && 
     (testp_Q2   != testp_Q2_n))
  testp5 = true;
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test5 = true;
  
  Serial.print("\n  5: ");
    Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(Clk1); 
    Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n); Serial.print("\t\t\tJ=1,K=0 => Set(1)     1=>1");
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(Clk2); 
    Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n); Serial.print("\t"); Serial.print(test5); 
    Serial.print("\t"); Serial.print(testp5);
  Clk1 = Clk2 = "";

/**********************************************************************************
         ------------------------TEST 6 - RESET(0)------------------------
 **********************************************************************************/  
  //Serial.println("\nTEST 6: J=0,K=1,CLK=010 => Reset(0)");   
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH ); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, HIGH) ; digitalWrite(JK_Clr_2, HIGH);

  // J=0,K=1,CLK=010 => Reset(0)
  digitalWrite(JK_J1   , LOW)  ; digitalWrite(JK_J2   , LOW);
  digitalWrite(JK_K1   , HIGH) ; digitalWrite(JK_K2   , HIGH);
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = digitalRead(JK_Clk_1)      ; Clk2 = digitalRead(JK_Clk_2);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);

  // Check that both Q and Q' change together on falling clock pulses.
  testp_Q1    = digitalRead(JK_Q1)  ;
  testp_Q1_n  = digitalRead(JK_Q1_n);
  testp_Q2    = digitalRead(JK_Q2)  ;
  testp_Q2_n  = digitalRead(JK_Q2_n);
  if((testp_Q1 != testp_Q1_n) && 
     (testp_Q2   != testp_Q2_n))
  testp6 = true;
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 0 && 
     test_Q1_n == 1 && 
     test_Q2   == 0 && 
     test_Q2_n == 1)
  test6 = true;
  
  Serial.print("\n  6: ");
    Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(Clk1); 
    Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n); Serial.print("\t\t\tJ=0,K=1 => Reset(0)   1=>0");
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(Clk2); 
    Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n); Serial.print("\t"); Serial.print(test6); 
    Serial.print("\t"); Serial.print(testp6);
  Clk1 = Clk2 = "";

/**********************************************************************************
         ------------------------TEST 7 - SET(1)------------------------
 **********************************************************************************/  
  //Serial.println("\nTEST 7: J=1,K=0,CLK=010 => Set(1)");   
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH ); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, HIGH) ; digitalWrite(JK_Clr_2, HIGH);

  // J=1,K=0,CLK=010 => Set(1)
  digitalWrite(JK_J1   , HIGH) ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , LOW)  ; digitalWrite(JK_K2   , LOW);
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = digitalRead(JK_Clk_1)      ; Clk2 = digitalRead(JK_Clk_2);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);

  // Check that both Q and Q' change together on falling clock pulses.
  testp_Q1    = digitalRead(JK_Q1)  ;
  testp_Q1_n  = digitalRead(JK_Q1_n);
  testp_Q2    = digitalRead(JK_Q2)  ;
  testp_Q2_n  = digitalRead(JK_Q2_n);
  if((testp_Q1 != testp_Q1_n) && 
     (testp_Q2   != testp_Q2_n))
  testp7 = true;
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
  test7 = true;
  
  Serial.print("\n  7: ");
    Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(Clk1); 
    Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n); Serial.print("\t\t\tJ=1,K=0 => Set(1)     0=>1");
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(Clk2); 
    Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n); Serial.print("\t"); Serial.print(test7); 
    Serial.print("\t"); Serial.print(testp7);
  Clk1 = Clk2 = "";

/**********************************************************************************
         ------------------------TEST 8 - NO CHANGE------------------------
 **********************************************************************************/   
  //Serial.println("\nTEST 8: J=0,K=0,CLK=010 => No Change");   
  digitalWrite(JK_Vcc,   HIGH) ; digitalWrite(JK_GND  , LOW );
  
  digitalWrite(JK_Pre_1, HIGH ); digitalWrite(JK_Pre_2, HIGH);
  digitalWrite(JK_Clr_1, HIGH) ; digitalWrite(JK_Clr_2, HIGH);

  // J=1,K=0,CLK=010 => NO CHANGE
  digitalWrite(JK_J1   , HIGH) ; digitalWrite(JK_J2   , HIGH);
  digitalWrite(JK_K1   , LOW)  ; digitalWrite(JK_K2   , LOW);
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = digitalRead(JK_Clk_1)      ; Clk2 = digitalRead(JK_Clk_2);
  digitalWrite(JK_Clk_1, HIGH) ; digitalWrite(JK_Clk_2, HIGH);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);

  // Check that both Q and Q' change together on falling clock pulses.
  testp_Q1    = digitalRead(JK_Q1)  ;
  testp_Q1_n  = digitalRead(JK_Q1_n);
  testp_Q2    = digitalRead(JK_Q2)  ;
  testp_Q2_n  = digitalRead(JK_Q2_n);
  if((testp_Q1 != testp_Q1_n) && 
     (testp_Q2   != testp_Q2_n))
  testp8 = true;
  
  digitalWrite(JK_Clk_1, LOW)  ; digitalWrite(JK_Clk_2, LOW);
  Clk1 = Clk1 + digitalRead(JK_Clk_1); Clk2 = Clk2 + digitalRead(JK_Clk_2);
  
  test_Q1    = digitalRead(JK_Q1)  ;
  test_Q1_n  = digitalRead(JK_Q1_n);
  test_Q2    = digitalRead(JK_Q2)  ;
  test_Q2_n  = digitalRead(JK_Q2_n);
  if(test_Q1   == 1 && 
     test_Q1_n == 0 && 
     test_Q2   == 1 && 
     test_Q2_n == 0)
   test8 = true;
   
  Serial.print("\n  8: ");
    Serial.print("\t 1 ");   Serial.print("\t"); Serial.print(digitalRead(JK_Pre_1)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_1)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J1)); Serial.print("\t"); Serial.print(digitalRead(JK_K1)); Serial.print("\t"); Serial.print(Clk1); 
    Serial.print("\t"); Serial.print(test_Q1);Serial.print("\t"); Serial.print(test_Q1_n); Serial.print("\t\t\tJ=0,K=0 => No Change  1=>1");
  Serial.print("\n\t 2 "); Serial.print("\t"); Serial.print(digitalRead(JK_Pre_2)); Serial.print("\t"); Serial.print(digitalRead(JK_Clr_2)); 
    Serial.print("\t"); Serial.print(digitalRead(JK_J2)); Serial.print("\t"); Serial.print(digitalRead(JK_K2)); Serial.print("\t"); Serial.print(Clk2); 
    Serial.print("\t"); Serial.print(test_Q2);Serial.print("\t"); Serial.print(test_Q2_n); Serial.print("\t"); Serial.print(test8); 
    Serial.print("\t"); Serial.print(testp8);
  Clk1 = Clk2 = "";

  if(test1 == true && 
     test2 == true && 
     test3 == true && 
     test4 == true && 
     test5 == true && 
     test6 == true && 
     test7 == true && 
     test8 == true)
     {
          test_Function = true;
          Serial.print("\nJK Chip Function Test Passed\n"); 
     }
  else 
     {
          Serial.print("\nJK Chip Function Test Failed\n"); 
     }

  if(testp1 == true && 
     testp2 == true && 
     testp3 == true && 
     testp4 == true && 
     testp5 == true && 
     testp6 == true && 
     testp7 == true && 
     testp8 == true)
     {
          test_Pulse = true;
          Serial.print("JK Chip Synchronous Test Passed\n"); 
     }
  else 
     {
          Serial.print("JK Chip Synchronous Test Failed\n"); 
     }

  if(test_Set == false || test_Reset == false || test_Function == false ) {
    Serial.print("Returning 0\n");
    return 0;  // JK FF is not working.
  }
  if(test_Pulse == true) {
    Serial.print("Returning 1\n");
    return 1; } // JK FF is working correctly.
  else { 
    Serial.print("Returning 2\n");
    return 2; } //JK FF operation is okay by synchronizing issues between Q and Q'.
}
