Я недавно начал изучать Авр, поэтому мои познания весьма скудны. Пытался вывести символы из массива, но в результате имею хаотичный выброс символов, затем дисплей переходит в аппаратный режим таймера.
Ребята кто, в своё время имел дело с этим дисплеем подскажите, варианты.
МК Тини13,код:
Код: Выделить всё
#include <tiny13a.h>
#include <delay.h>
#define sk PORTB.0
#define di PORTB.1
#define led PORTB.2
#define lo 0
#define hi 1
unsigned char segment[]={1,2,3,4,5,6,7,8,9,0};
void write_disp (void) //функция вывода
{
unsigned char i;
for(i=0;i<10;i++) //вывод 10-ти элементов массива в 10 рязрядов дисплея
{ unsigned char y;
for (y=0;y<4;y++) //вывод 4 бит кода одного символа
{ sk=hi;
delay_us(2);
if (segment[i]&0x4)
{di=1;}
else
{di=0;}
sk=lo;
delay_us(3);
segment[i]<<=1;
}
delay_us(6);
}
}
void main(void)
{
// Input/Output Ports initialization
// Port B initialization
// Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out
DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit5=T Bit4=T Bit3=T Bit2=T Bit1=0 Bit0=0
PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
while (1)
{
write_disp;
while (1) {};
}
}


