[سلام کسی میتونه این برنامه رو برای من توضیح بده این برنامه تابلو روان گه حالت گردش داره!!!!!!!!!!!!!!!!!
#include <mega32.h>

#include <stdio.h>
#include <delay.h>
#include "font.h"
#include "ENG font.c"

#define LED_LEFT PORTA
#define LED_RIGHT PORTB
//================================================== ====
//================================================== ====
unsigned int Angle;
unsigned int One_Degree_OCR_Value;
unsigned int Pixel_Num,Pixel_Count;
unsigned int Code_Table[400];
flash unsigned char Statement[]="somaie zameni";
//================================================== ====
//================================================== ====
void InitDevice()
{
DDRA=0xFF;
DDRB=0xFF;
PORTD=0x04;

GICR|=0x40;
MCUCR=0x03;
MCUCSR=0x00;
GIFR=0x40;

TCCR1B=0x03;
TIMSK=0x10;
LED_RIGHT=0xFF;
LED_LEFT=0xFF;
#asm("sei"
}
//================================================== ====
//================================================== ====
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
unsigned int n;

if(Angle==180)
Pixel_Count=0;
if(Angle<180)
{
if(Pixel_Count<Pixel_Num)
{
LED_RIGHT=~Code_Table[Pixel_Count];
n=Pixel_Count+180;
if(n<Pixel_Num)
LED_LEFT=~Code_Table[n];
Pixel_Count++;
}
else
LED_RIGHT=0xFF;
}
else
{
if(Pixel_Count<Pixel_Num)
{
LED_LEFT=~Code_Table[Pixel_Count];
n=Pixel_Count+180;
if(n<Pixel_Num)
LED_LEFT=~Code_Table[n];
Pixel_Count++;
}
else
LED_LEFT=0xFF;
}
OCR1A+=One_Degree_OCR_Value;
Angle++;

}
//================================================== ====
//================================================== ====
interrupt [EXT_INT0] void ext_int0_isr(void)
{
One_Degree_OCR_Value=TCNT1/360;
OCR1A=One_Degree_OCR_Value;
TCNT1=0;
Angle=0;
Pixel_Count=0;
}
//================================================== ====
//================================================== ====
void main()
{
unsigned char i=0,j,map,width,ch;
unsigned int offset;

do
{
ch=Statement[i];
map=Eng_Font.mapping_table[ch];
offset=Eng_Font.offset_table[map];
width=Eng_Font.width_table[map];
for(j=0;j<width;j++)
{
Code_Table[Pixel_Count]=Eng_Font.font_table[offset];
Code_Table[Pixel_Count]=(Code_Table[Pixel_Count]<<8)+Eng_Font.font_table[offset+1];
Code_Table[Pixel_Count]>>=4;
Pixel_Count++;
offset+=2;
}
}while(Statement[++i]!='\0'
Pixel_Num=Pixel_Count;
Pixel_Count=0;

InitDevice();
while(1)
{
}
}