Пример:
Код: Выделить всё
x=massiv[5]; //Работает
//********************
x=massiv[i]; //НЕ работает
Листинг:
Код: Выделить всё
#include <mega162.h>
#include <delay.h>
interrupt [PCINT1] void pin_change_isr1(void)
{}
int a=0b10000000; // масска
int digit[10]={
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b01111101, // 7
0b01111111, // 8
0b01101111, // 9
};
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB=0x00;
DDRB=0xB7;
PORTD=0x00;
DDRD=0x08;
GICR|=0x10;
PCMSK1=0x0F;
MCUCR=0x00;
EMCUCR=0x00;
GIFR=0x10;
TIMSK=0x00;
ETIMSK=0x00;
ACSR=0x80;
#asm("sei")
while (1)
{
char i,j;
for (j=0;j<10;j++){
PORTB.0=0; //Врубаем ОЕ
for(i=0;i<=7;i++)
{
PORTB.5=digit[j]&a; // DATA - с "[j]" не работает (а с цыфрой, напр."[5]"-ok
PORTB.7=1;PORTB.7=0; // Дергаем CLOCK
a=a>>1; // смещаем маску
if (a==0b00000000) {a=0b10000000;}; // проверяем маску
}
PORTB.0=1; //Вырубаем ОЕ
}
delay_ms(1000);
};
}Не могу прочитать значения в цикле for массива по указанному переменной индексу.
Как быть?