Помогите поднять, соответственно понять программу для бегущей строки, программа не полная, основной части нету, пытаюсь понять алгоритм работы и сообразить нехватающий.
Первый вопрос для чего нужны эти переменные
int8 litera;
int8 shift;
int8 strobRow;
int8 shiftDirection;
int8 dataRow[8];
int8 row;
и что делает эта строка
shift_right(dataRow,8,bit_test(literaBig[litera][row],i));
проэктик прикреплен
Для начала хочу включить все сегменты на матрицах, выключить и запустить бегущий один сегмент.
#include ‹16F870.h›
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#include ‹74595.c›
#include ‹row8.c›
int8 litera;
int8 shift;
int8 strobRow;
int8 shiftDirection;
int8 dataRow[8];
int8 row;
//*************************
#int_rtcc
void Interrupt_RTCC()
{
int8 i;
int8 k;
output_b(0xff);
for(litera=0;litera‹=7;litera++){
for(i=0;i‹=7;i++)
shift_right(dataRow,8,bit_test(literaBig[litera][row],i));
}
for(i=0;i‹=shift;i++)
rotate_right(dataRow,
;
output_b(0xff);
write_expanded_outputs(dataRow);
rotate_left(&strobRow,1);
output_b(strobRow);
row++;
if(row›7) row=0;
set_rtcc(61);
}
//*************************
void main()
{
int1 flagLiteraPrinted;
setup_counters(rtcc_internal,rtcc_div_64|rtcc_8_bi t);
enable_interrupts(int_rtcc);
enable_interrupts(global);
Main_Loop:
litera=0;
shift=64;
strobRow=0b01111111;
while(true){
shift--;
if(shift==0)
shift=64;
delay_ms(50);
}
}