Tiny2313 проблемы с динамической индикацией.
Добавлено: Сб мар 30, 2013 01:39:15
В общем написал вот такой код:
Вроде работает нормально, НО выводятся только цифры с 1 по 4. Путем опытов было установлено, что из массива читаются только первые 5 элементов. Хотя на Mega8 этот код работает идеально. Вывод идет через 74HC164. В чем может быть проблема?
Код: Выделить всё
char symbol[10] = {
0b11111100, // 0
0b01100000, // 1
0b11011010, // 2
0b11110010, // 3
0b01100110 // 4
0b10110110, // 5
0b10111110, // 6
0b11100000, // 7
0b11111110, // 8
0b11110110 // 9
};
int d[2];
void hc164_wr(int d){
char a;
for(a = 0; a < 8; a++){
if (symbol[d] & 1<<a){ PORTD |= _BV(PD2);
}else{ PORTD &= ~_BV(PD2); }
PORTD &= ~_BV(PD3);
PORTD |= _BV(PD3);
}
}
ISR (TIMER0_COMPA_vect){
dig++;
D_OFF;
switch (dig){
case 1: hc164_wr(d[0]); D1; break;
case 2: hc164_wr(d[1]); D2; dig=0; break;
}
}