Добрый день товарищи! Помогите разобраться с проблемой неработоспособности устройства. Схему собрал правильно , код вроде тоже (проверил в симуляторе протеус прежде чем в железяку заливать прошивку).
При прошивке и включении устройства, на индикаторе подсвечены все сегменты....
Привожу код:
Вот так я вывожу данные с массива:
Помогите пожалуйста разобраться в чем причина...
Раздел: Периферия и внешние устройства
При прошивке и включении устройства, на индикаторе подсвечены все сегменты....
Привожу код:
void led_out(char value)
{
unsigned char i;
for(i=0; i<=7; i++) // 8
{
if (value & 0x80) // " " DS
{
data_led |=1;
}
else
{
data_led = 0;
}
value <<=1;
clk_led=1; // "0" SH_CP
clk_led=0; // "1" SH_CP - ( SH_CP)
}
}
void latch_reg()
{
latch_led = 1; // "1" ST_CP - " " ("" ST_CP)
latch_led = 0; // "0" ST_CP
}
void led_shou(char data_0,char data_1)
{
led_out(data_0);
led_out(data_1);
}
void led_clear()
{
led_shou(0x00,0xFF);
}
void interrupt()
{
if(INTCON & 0x04)
{
indication_func();
menu_func(); // menu!
key_func(); //
led_clear();
led_shou( data_buff , y);
switch(x)
{
case 0:
data_buff = led_buff[0];
y = 0b00001110;
break;
case 1:
data_buff = led_buff[1];
y = 0b00001101;
break;
case 2:
data_buff = led_buff[2];
y = 0b00001011;
break;
case 3:
data_buff = led_buff[3];
y = 0b00000111;
break;
}
}
latch_reg();
if(++x>3){x=0;}
TMR0 = 5+TMR0; //TMR0 = 120; // clear TMRO
INTCON = 0x20; // clear TMR0IF and set TMR0IE
//latch_led = 1;
}
Вот так я вывожу данные с массива:
void indication_func()
{
temp1 = temp;
if (temp1<10)
{
led_buff[3]=led_table[10]; //
led_buff[2]=led_table[10];
led_buff[1]=led_table[temp];
}
if (temp1>9 && temp1<100)
{
led_buff[3]=led_table[10]; //
led_buff[2]=led_table[temp%10];
temp=temp/10;
led_buff[1]=led_table[temp%10];
}
if (temp1>99 && temp1<1000)
{
led_buff[3]=led_table[temp%10]; //
temp=temp/10;
led_buff[2]=led_table[temp%10];
temp=temp/10;
led_buff[1]=led_table[temp%10];
}
}
Помогите пожалуйста разобраться в чем причина...
Раздел: Периферия и внешние устройства