вывод на 7-сегм. индикатор с общим анодом
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено crox 28 декабря 2004 г. 03:57

Приветствую.

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 цифра. На деле - ничего не горит. Хотя по отдельности все ок, когда выбираю цифру и пишу в порт.

В чем может быть проблема?
Заранее благодарю.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru