ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
19138
alex_m (28.12.2004 04:09, просмотров: 1304)
вывод на 7-сегм. индикатор с общим анодом Приветствую. ATmega162, индикатор NEQ-2842AG (4 цифры). Изучаю сабж. и не работает простенький код (win-avr):
/* Port interfaced to display unit */
#define DISPLAY_PORT PORTC
/* Segments definition */
#define SEG_A	0x01
#define SEG_B	0x02
#define SEG_C	0x04
#define SEG_D	0x08
#define SEG_E	0x10
#define SEG_F	0x20
#define SEG_G	0x40
#define SEG_CD	0x80

/* Display units definition */
#define SEG_D1	PINB3
#define SEG_D2	PINB2
#define SEG_D3	PINB1
#define SEG_D4	PINB0
#define SEG_CD	PINA7

uint8_t DigitTable[] =	{
  ~(SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F),
  ~(SEG_B | SEG_C),
  ...
};

int main(void)
{
  DDRB = (_BV(SEG_D2) | _BV(SEG_D4));

  // endless loop
  while (1)  {
    PORTB = _BV(SEG_D2);
    DISPLAY_PORT = DigitTable[0];
    PORTB = _BV(SEG_D4);
    DISPLAY_PORT = DigitTable[1];
  }

  return 1;

}
По моим соображениям должны загореться 2 и 3 цифра. На деле - ничего не горит. Хотя по отдельности все ок, когда выбираю цифру и пишу в порт. В чем может быть проблема? Заранее благодарю.