я не очень понял как эффект рисовать?эффект (какой автор в начале рисовал) и циферки
это каждый эффект, как Вы все цифры надо от рисовать, а потом ими пользоваться?
я не очень понял как эффект рисовать?эффект (какой автор в начале рисовал) и циферки
и вопрос мой осталсяХотелось бы поэкспериментировать с этим индикатором в плане эффектов
это каждый эффект, как Вы все цифры надо от рисовать, а потом ими пользоваться?
я ваш проект в протеусе и пробуюСначала проверь мой проект, как есть, в протеусе
прошу прощения не обратил внимания на это в первом видеоОбрати внимание. Нумерация общих выводов и сегментов у меня разделены
Тебе в моем проекте это нужно сделать всего лишь в одном месте.
Код: Выделить всё
void handle_commons (void)
{
u08 a = tab_bv [cnt_commons]; // Битовая позиция commons.
//set_soft_timer (ST_PROC_7_SEGM_IND, 50, 0);
set_soft_timer (ST_PROC_7_SEGM_IND, 3, 0);
for (u08 i = 0; i < MAX_LED_INDS; i++)
{
if (commons_level == HI)
{
//if (a & (1<<0)) tab_commons_hi [i] ();
//else tab_commons_low [i] ();
if (a & (1<<0)) tab_commons_low [i] ();
else tab_commons_hi [i] ();
}
else
{
//if (a & (1<<0)) tab_commons_low [i] ();
//else tab_commons_hi [i] ();
if (a & (1<<0)) tab_commons_hi [i] ();
else tab_commons_low [i] ();
}
a >>= 1;
}
}Код: Выделить всё
{
ANODS_PORT = 0;
KATODS_PORT = 0;
KATODS_DDR = 0;
volatile u08 anods;
volatile u08 katods;
anods = tab_commons_pins [cnt_commons];
if (status == STATUS_EFFECTS)
katods = dsp_buf [cnt_commons];
else
katods = tab_segments_pins [dsp_buf [cnt_commons]];
ANODS_PORT = anods;
KATODS_DDR = katods;
// handle_commons ();
// handle_segments ();
if (++cnt_commons >= MAX_LED_INDS) cnt_commons = 0;
}
чушьDemiurg писал(а):установка пина происходит не сразу, а через определенное количество тактов
Код: Выделить всё
//--------------------------- Commons ------------------------------------
clr_bit (COMM_1_DDR, C_1_OUT);
clr_bit (COMM_2_DDR, C_2_OUT);
clr_bit (COMM_3_DDR, C_3_OUT);
clr_bit (COMM_4_DDR, C_4_OUT);
clr_bit (COMM_5_DDR, C_5_OUT);
clr_bit (COMM_6_DDR, C_6_OUT);
//--------------------------- Segments -----------------------------------
clr_bit (SEGM_A_DDR, S_A_OUT);
clr_bit (SEGM_B_DDR, S_B_OUT);
clr_bit (SEGM_C_DDR, S_C_OUT);
clr_bit (SEGM_D_DDR, S_D_OUT);
clr_bit (SEGM_E_DDR, S_E_OUT);
clr_bit (SEGM_F_DDR, S_F_OUT);
clr_bit (SEGM_G_DDR, S_G_OUT);
clr_bit (SEGM_H_DDR, S_H_OUT);
//------------------------------------------------------------------------
handle_commons_temp ();
handle_segments_temp ();
//--------------------------- Commons ------------------------------------
set_bit (COMM_1_DDR, C_1_OUT);
set_bit (COMM_2_DDR, C_2_OUT);
set_bit (COMM_3_DDR, C_3_OUT);
set_bit (COMM_4_DDR, C_4_OUT);
set_bit (COMM_5_DDR, C_5_OUT);
set_bit (COMM_6_DDR, C_6_OUT);
//--------------------------- Segments -----------------------------------
set_bit (SEGM_A_DDR, S_A_OUT);
set_bit (SEGM_B_DDR, S_B_OUT);
set_bit (SEGM_C_DDR, S_C_OUT);
set_bit (SEGM_D_DDR, S_D_OUT);
set_bit (SEGM_E_DDR, S_E_OUT);
set_bit (SEGM_F_DDR, S_F_OUT);
set_bit (SEGM_G_DDR, S_G_OUT);
set_bit (SEGM_H_DDR, S_H_OUT);
//------------------------------------------------------------------------
я черпаю информацию не с форумов, а из даташитов. а проверять форумы я не собираюсь. и вам не советую.Demiurg писал(а):Научитесь не торопиться и проверять информацию
Код: Выделить всё
volatile u08 *p;
for (u08 i = 0; i < MAX_LED_INDS; i++)
{
p = commons_pins [i] .port;
if (commons_level == HI)
*p &= (~commons_pins [i] .mask);
else
*p |= commons_pins [i] .mask;
}
for (u08 i = 0; i < 8; i++)
{
p = segments_pins [i] .port;
if (segments_level == HI)
*p &= (~segments_pins [i] .mask);
else
*p |= segments_pins [i] .mask;
}
handle_commons_2 ();
handle_segments_2 ();
Ерунду несете, такое впечатление что это не вы.Demiurg писал(а):Засветку убрало только такое решение.
Код: Выделить всё
void handle_commons_clr (void) {
for (u08 i = 0; i < MAX_LED_INDS; i++)
{
tab_commons_low [i] ();
}
}
case 2:
if (handle_soft_timer (ST_PROC_7_SEGM_IND))
{
// handle_commons_temp ();
// handle_segments_temp ();
handle_commons_clr(); // выключаем все разряды
handle_segments (); // меняем сегмент для следующего разряда
handle_commons (); // включаем следующий разряд
if (++cnt_commons >= MAX_LED_INDS) cnt_commons = 0;
}
break;