⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 level3.c

📁 USB Pad test source code with SL811 usb host ic
💻 C
📖 第 1 页 / 共 2 页
字号:
                SendAClock_164 ();
                delay (1);
                SendAClock_164 ();
                /* for line 2 */
                PORTC=dis_data_buf[dis_bit+7];
                SendAClock_164 ();
                delay (1);
                SendAClock_164 (); 
              } 
        if (dis_bit==0)
           { 
                /* for line 1 */
                PORTC=dis_data_buf[dis_bit];
                SendAClock_164 ();
                delay (1);
                SendAClock_164 (); 
                /* for line 2 */
                PORTC=dis_data_buf[dis_bit+7];
                SendAClock_164 ();
                delay (1);
                SendAClock_164 ();
                /* for line 3 */
                PORTC=dis_data_buf[6];
                SendAClock_164 ();
                delay (1); 
                SendAClock_164 ();
           }
        if (dis_bit==1)
           { 
                /* for line 1 */
                PORTC=dis_data_buf[dis_bit];
                SendAClock_164 ();
                delay (1); 
                SendAClock_164 ();
                /* for line 2 */
                PORTC=dis_data_buf[dis_bit+7];
                SendAClock_164 ();
                delay (1);
                SendAClock_164 ();
                /* for line 3 */
                PORTC=dis_data_buf[13];
                SendAClock_164 ();
                delay (1); 
                SendAClock_164 ();
           }        
        if (dis_bit==2)
           { 
                /* for line 1 */
                PORTC=dis_data_buf[dis_bit];
                SendAClock_164 ();
                delay (1); 
                SendAClock_164 ();
                /* for line 2 */
                PORTC=dis_data_buf[dis_bit+7];
                SendAClock_164 ();
                delay (1);
                SendAClock_164 ();
                /* for line 3 */
                PORTC=dis_data_buf[14];
                SendAClock_164 ();
                delay (1); 
                SendAClock_164 ();
           }  
           
     }
/**************************************************************************************
 Function Name:  void OneAxialDataTo_SegmentMap (unsigned char DataType_num,
                                               unsigned char BeChanged_data )
 Function     :  changing one of the x_data/y_data/i_data/j_data into segment
               map,the result data(per axial have three bit) is stored into
               dis_data_buf[15].
 Note         : the x_data/y_data... is from 0x00 to 0xff  !!!!!!!!!!!!!!!!!!!
              the order of axial in dis_data_buf[15] is X/Y/led_d1_8/I/J/led_d9_16/
                     led_d17_24;
              the order of the bit of the every axial in dis_data_buf[15]
              is 10^0/10^1/10^2
 Input        :  Datatype_num   1---X axial/2---Y axial/3---I axial
                              4---J axial
               unsigned char BeChanged_data-- one of the x_data/y_data...
 Output       : dis_data_buf[12] (by globe variable)
 scop         : display.c
**************************************************************************************/
    void OneAxialDataTo_SegmentMap ( unsigned char DataType_num, unsigned char BeChanged_data )
     { 
       unsigned char temp_data_10x2;
       unsigned char temp_data_10x1;
       unsigned char temp_data_10x0;

       /* get the 10^2 bit and 10^1 bit and 10^0 bit */
       temp_data_10x2=BeChanged_data/100;
       temp_data_10x1=(BeChanged_data - temp_data_10x2*100)/10;
       temp_data_10x0=(BeChanged_data - temp_data_10x2*100)%10;
       dis_data_buf[6]=Led_D1_8;    
       dis_data_buf[13]=Led_D9_16;    
       dis_data_buf[14]=Led_D17_24;  
  
       switch (DataType_num )
		   { 
                     case 1:/* X xial */
			 { dis_data_buf[0]=segment_map[temp_data_10x0];
			   dis_data_buf[1]=segment_map[temp_data_10x1];
			   dis_data_buf[2]=segment_map[temp_data_10x2];
			 } break;
                     case 2:/* Y xial */
			 { dis_data_buf[3]=segment_map[temp_data_10x0];
			   dis_data_buf[4]=segment_map[temp_data_10x1];
			   dis_data_buf[5]=segment_map[temp_data_10x2];
			 } break;
                     case 3:/* I xial */
			 { dis_data_buf[7]=segment_map[temp_data_10x0];
			   dis_data_buf[8]=segment_map[temp_data_10x1];
			   dis_data_buf[9]=segment_map[temp_data_10x2];
			 } break;
                     case 4:/* J xial */
			 { dis_data_buf[10]=segment_map[temp_data_10x0];
			   dis_data_buf[11]=segment_map[temp_data_10x1];
			   dis_data_buf[12]=segment_map[temp_data_10x2];
			 } break;                  
                  }
       /*****************************************************/
       if(temp_data_10x2==0)
           { switch (DataType_num)
		    {
		     case 1:
			 { dis_data_buf[0]=segment_map[temp_data_10x0];
			   dis_data_buf[1]=segment_map[temp_data_10x1];
			   dis_data_buf[2]=0x00;
			 } break;
		     case 2:
			 { dis_data_buf[3]=segment_map[temp_data_10x0];
			   dis_data_buf[4]=segment_map[temp_data_10x1];
			   dis_data_buf[5]=0x00;
			 } break;
		     case 3:
			 { dis_data_buf[7]=segment_map[temp_data_10x0];
			   dis_data_buf[8]=segment_map[temp_data_10x1];
			   dis_data_buf[9]=0x00;
			 } break;
		     case 4:
			 { dis_data_buf[10]=segment_map[temp_data_10x0];
			   dis_data_buf[11]=segment_map[temp_data_10x1];
			   dis_data_buf[12]=0x00;
			 } break;
		    }  
	   }  
       /******************************************************/
       if(temp_data_10x2==0 & temp_data_10x1==0)
           { switch (DataType_num)
		    {
		     case 1:
			 { dis_data_buf[0]=segment_map[temp_data_10x0];
			   dis_data_buf[1]=0x00;
			   dis_data_buf[2]=0x00;
			 } break;
		     case 2:
			 { dis_data_buf[3]=segment_map[temp_data_10x0];
			   dis_data_buf[4]=0x00;
			   dis_data_buf[5]=0x00;
			 } break;
		     case 3:
			 { dis_data_buf[7]=segment_map[temp_data_10x0];
			   dis_data_buf[8]=0x00;
			   dis_data_buf[9]=0x00;
			 } break;
		     case 4:
			 { dis_data_buf[10]=segment_map[temp_data_10x0];
			   dis_data_buf[11]=0x00;
			   dis_data_buf[12]=0x00;
			 } break;
		    } 
	   }
     } 
/*****************************************************************
 Function Name: void AllAxialDataTo_ SegmentMap(void)
 Function     : Making all data of the X/Y/I/J/LED_D1_8/LED_D9_16/
                  LED_D17_24 be changed into segmentMap.
 Input        : Non
 Output       : Non
 Scop         :display.c
******************************************************************/
 void  AllAxialDataTo_SegmentMap (void)
      { 
	OneAxialDataTo_SegmentMap (1,x_data);
        OneAxialDataTo_SegmentMap (2,y_data);
        OneAxialDataTo_SegmentMap (3,i_data);
        OneAxialDataTo_SegmentMap (4,j_data);
      }
/*************************************************************
  Function Name: void Dis_all(void)
  Function     : to displaying X/Y/I/J axial & BUTTON once.  
  Input        : unsigned char x_data,y_data,i_data,j_data...;
  Output       : non
  Note         : dis_data_buf[0--2]==>X 10^0/^1/^2
                 dis_data_buf[3--5]==>Y 10^0/^1/^2
                 dis_data_buf[6]   ==> led_d1_8;
                 dis_data_buf[7--9]==>I 10^0/^1/^2;
                 dis_data_buf[10--12]==>J 10^0/^1/^2;
                 dis_data_buf[13]   ==> led_d9_16;
                 dis_data_buf[14]   ==> led_d17_24;
  Scop         : display.c
**************************************************************/
 void Dis_all (void)
     { 
	unsigned char k1;
        AllAxialDataTo_SegmentMap ( );

         /*For ShengYu Pad ST_L ST_R stick minus data display */
         /* 0x40-- dis"-"; 0x46-- dis"-1" */
                 
        if(y_10x2_flag==1) { dis_data_buf[5] =0x40;}
                      
        if(j_10x2_flag==1) { dis_data_buf[12] =0x40;}
                   
        if(x_10x2_flag==1) { dis_data_buf[2] =0x40;}
            
        if(i_10x2_flag==1) { dis_data_buf[9] =0x40;}

        for(k1=0;k1<6;k1++)  	
        { 
          Strobe_dis_bit(k1);
	  disable_tmr();
          SendDataTo_DisBit (k1);
	  enable_tmr();
          delay (100); 
          DisableAll_dis_bit();
          delay (5); 
          RA1_CLR=0; 	/* reset the 74hc164 */
         }
     }   
/*************************************************************
  Function Name: void Dis_ver(void)
  Function     : to displaying user01  
  Input        : unsigned char x_data,y_data,i_data,j_data...;
  Note         : dis_data_buf[0--2]==>X 10^0/^1/^2
                 dis_data_buf[3--5]==>Y 10^0/^1/^2
  Output       : non
**************************************************************/
 void Dis_ver(void)
     { 
	unsigned char k;
/*	Display: USbA02
        dis_data_buf[0]=0x5B; dis_data_buf[1]=0x3F; dis_data_buf[2]=0x77; dis_data_buf[3]=0x7C;
	dis_data_buf[4]=0x6D; dis_data_buf[5]=0x3E; dis_data_buf[6]=0x00; dis_data_buf[7]=0x00;
*/      
        dis_data_buf[0]=0x6D; dis_data_buf[1]=0x3F; dis_data_buf[2]=0x77; dis_data_buf[3]=0x7C;
	dis_data_buf[4]=0x6D; dis_data_buf[5]=0x3E; dis_data_buf[6]=0x00; dis_data_buf[7]=0x00;

	dis_data_buf[8]=0x00; dis_data_buf[9]=0x00; dis_data_buf[10]=0x00; dis_data_buf[11]=0x00;
	dis_data_buf[12]=0x00; dis_data_buf[13]=0x00; dis_data_buf[14]=0x00; dis_data_buf[15]=0x00;
        for(k=0;k<6;k++)  	
        { 
          Strobe_dis_bit(k);
	  disable_tmr();
          SendDataTo_DisBit (k);
	  enable_tmr();
          delay (100); 
          DisableAll_dis_bit();
	  delay(5);
          RA1_CLR=0; 	/* reset the 74hc164 */
         }
     }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -