📄 level3.c
字号:
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 + -