через локальную переменную.
Код
void sendDataToLCD (uint8_t _pos, uint8_t _data)
{ uint8_t ferst_param;
if (_pos == 1)
{ ferst_param = LCD_SEGMENT_B_POS1_SEG;
}
else
{ ferst_param = LCD_SEGMENT_B_POS2_SEG;
}
//----
switch (_data)
{
case 1:
ht1621_wr_bit( ferst_param, LCD_SEGMENT_B_POS1_COM, 1);
ht1621_wr_bit( ferst_param, LCD_SEGMENT_C_POS1_COM, 1);
break;
или через массив
Код
uint8_t FerstParams[MAX_PARAM_NUM]={LCD_SEGMENT_B_POS1_SEG,
LCD_SEGMENT_B_POS2_SEG,
......
};
void sendDataToLCD (uint8_t _pos, uint8_t _data)
{
if (_pos >= MAX_PARAM_NUM )
{ return; // выход за границу масива
}
ferst_param = FerstParams[pos];
//----
switch (_data)
{
case 1:
ht1621_wr_bit( ferst_param, LCD_SEGMENT_B_POS1_COM, 1);
ht1621_wr_bit( ferst_param, LCD_SEGMENT_C_POS1_COM, 1);
break;
Можно пойти еще дальше и сделать двумерный массив, но как я понимаю количество вызовов ht1621_wr_bit для каждой цифры разное.
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.