این کد در مورد تابلو روان هست که می خوام به زبان ساده و در چند خط عزیزان لطف کنن بگن دقیقا چی کار می کنه
کد:
 #include <mega16.h>
#include <delay.h> 
#include <math.h>  
flash unsigned char text_micro[]={ 
0,0,0,0,0,0,0,0,0,0,0,128,224,120,46,39,
46,120,224,128,63,127,192,192,127,63,0,254,255,51,51,127,
238,128,0,0,0,120,192,192,220,118,6,0,31,63,48,48,
60,54,58,156,192,112,48,31,159,192,120,50,50,24,48,50,
24,48,55,55,53,29,129,129,220,116,60,128,192,120,56,48,55,
55,53,29,177,177,56,16,48,56,40,56,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0};
       
void main(){ 
signed int loop,refresh,code; 
PORTA=0x00;
DDRA=0xFF;
PORTC=0x00;
DDRC=0xFF; 
DDRD=0xFF;
while(1){
for(code=108;code>8;code--){   
 for(refresh=0;refresh<8;refresh++){   
  for(loop=0;loop<16;loop++){   
    if(loop<8){
        if(loop==0) PORTC.7=0;
        else if(loop==1) PORTC.6=0;  
        else if(loop==2) PORTC.5=0;
        else if(loop==3) PORTC.4=0;
        else if(loop==4) PORTC.3=0;
        else if(loop==5) PORTC.2=0;
        else if(loop==6) PORTC.1=0;
        else if(loop==7) PORTC.0=0;
    }
    if(loop>7){
        if(loop==8) PORTD.7=0;
        else if(loop==9) PORTD.6=0;  
        else if(loop==10) PORTD.5=0;
        else if(loop==11) PORTD.4=0;
        else if(loop==12) PORTD.3=0;
        else if(loop==13) PORTD.2=0;
        else if(loop==14) PORTD.1=0;
        else if(loop==15) PORTD.0=0;
    }
PORTA=text_micro[abs(code-loop)];
delay_us(250);
PORTA=0X00; 
PORTC=PORTD=0xFF;
    }    
  }  
} 
PORTA=0X00; 
delay_ms(500); 
}}
اولین سوالم این هست که این عبارت چی کار میکنه

کد:
  flash unsigned char

سوال بعدیم این هست که چرا حلقه به این صورت نوشته شده

کد:
  code=108;code>8;code--

یعنی از 108 چرا شروع میشه
سوال بعدیم این هست که این

کد:
  loop=0;loop<16;loop++

loop چه کار می کنه اینجا
و نهایتا اینکه این کد چی کار می کنه

کد:
  PORTA=text_micro[abs(code-loop)];

بی نهایت ممنونم