Хочу сделать динамическую индикацию через сдвиговый регистр... Второй день моск пилю, не получается. Все выводится да криво....
Схемка такая
настройка SPI
Код: Выделить всё
SPCR = 0<<SPIE | 1<<SPE | 1<<DORD | 1<<MSTR | 0<<CPOL | 0<<CPHA | 1<<SPR1 | 1 <<SPR0;Код: Выделить всё
//это число в разряд индикатора
void send_7segm_digit(int number, int position_digit)
{
SPDR=numb[number];
while(!(SPSR & (1<<SPIF)))
//_delay_us(100);
SPDR=digit[position_digit];
while(!(SPSR & (1<<SPIF)))
// _delay_us(100);
PORTB |= 1<<PB0;
_delay_us(100);
PORTB = 0<<PB0;
}
//а это просто число в индикатор
void send_7segm_data(int data)
{
int number1, number2, number3, number4;
number4 = data % 10;
number3 = (data % 100 - number4) / 10;
number2 = (data % 1000 - number3) / 100;
number1 = (data % 10000 - number2) / 1000;
send_7segm_digit(number1, 3);
_delay_us(100);
send_7segm_digit(number2, 2);
_delay_us(100);
send_7segm_digit(number3, 1);
_delay_us(100);
send_7segm_digit(number4, 0);
_delay_us(100);
}
весь код


