سلام خدمت آقا سامان عزیز
نمیدونم به این تاپیک سر میزنید یا خیر!!!
ولی من این برنامه رو استفاده کردم واسه سه کاری و چند افکت دیگه هم بهش اضافه کردم، مثل موج مکزیکی، ولی تو این افکت، ال ای دی ها پرش دارند!!! چرا؟نمونه کدم رو هم ارسال میکنم لطف کنید یه نگاهی بهش بندازید
کد:
#include <mega8.h>#include <delay.h>
#define Set_LED1 PORTB.0 = 1
#define Set_LED2 PORTB.1 = 1
#define Set_LED3 PORTB.2 = 1
#define Set_LED4 PORTB.3 = 1
#define Set_LED5 PORTB.4 = 1
#define Set_LED6 PORTB.5 = 1
#define Set_LED7 PORTB.6 = 1
#define Set_LED8 PORTB.7 = 1
#define Set_LED9 PORTD.0 = 1
#define Set_LED10 PORTD.1 = 1
#define Set_LED11 PORTD.2 = 1
#define Set_LED12 PORTD.3 = 1
#define Set_LED13 PORTD.4 = 1
#define Set_LED14 PORTD.5 = 1
#define Set_LED15 PORTD.6 = 1
#define Set_LED16 PORTD.7 = 1
#define Set_LED17 PORTC.0 = 1
#define Set_LED18 PORTC.1 = 1
#define Set_LED19 PORTC.2 = 1
#define Set_LED20 PORTC.3 = 1
#define BLUE PORTB.0=PORTB.1=PORTB.2=PORTB.3=PORTB.4=PORTB.5=PORTB.6=PORTB.7=PORTD.0=PORTD.1
#define RED PORTD.2=PORTD.3=PORTD.4=PORTD.5=PORTD.6=PORTD.7=PORTC.0=PORTC.1=PORTC.2=PORTC.3
#define byte unsigned char
#define PB PORTB
#define PD PORTD
#define PC PORTC
#define TIME 100
#define max_var_PWM 100
#define Max_LED 20
#define Delay1 30 //ms
#define Delay2 400 //ms
#define D_3 40
#define ON 1
#define OFF 0
// Declare your global variables here
byte a = max_var_PWM , pwm[Max_LED+3],q=0;
flash byte rain[]=
{100,95,90,85,80,75,70,65,60,55,50,45,40,35,30,25,20,15,10,5
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
rain1[]=
{100,95,90,85,80,75,70,65,60,55,50,45,40,35,30,25,20,15,10,5
,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100};
interrupt [TIM0_OVF] void timer0_comp_isr(void)
{
TCNT0 = 95;
if(a)
{
if(!q)
{
if(a == pwm[1]){Set_LED20;Set_LED1;}
if(a == pwm[2]){Set_LED19;Set_LED2;}
if(a == pwm[3]){Set_LED18;Set_LED3;}
if(a == pwm[4]){Set_LED17;Set_LED4;}
if(a == pwm[5]){Set_LED16;Set_LED5;}
if(a == pwm[6]){Set_LED15;Set_LED6;}
if(a == pwm[7]){Set_LED14;Set_LED7;}
if(a == pwm[8]){Set_LED13;Set_LED8;}
if(a == pwm[9]){Set_LED12;Set_LED9;}
if(a == pwm[10]){Set_LED11;Set_LED10;}
}
else if(q==1)
{
if(a == pwm[20])Set_LED20;
if(a == pwm[19])Set_LED19;
if(a == pwm[18])Set_LED18;
if(a == pwm[17])Set_LED17;
if(a == pwm[16])Set_LED16;
if(a == pwm[15])Set_LED15;
if(a == pwm[14])Set_LED14;
if(a == pwm[13])Set_LED13;
if(a == pwm[12])Set_LED12;
if(a == pwm[11])Set_LED11;
if(a == pwm[10])Set_LED10;
if(a == pwm[9])Set_LED9;
if(a == pwm[8])Set_LED8;
if(a == pwm[7])Set_LED7;
if(a == pwm[6])Set_LED6;
if(a == pwm[5])Set_LED5;
if(a == pwm[4])Set_LED4;
if(a == pwm[3])Set_LED3;
if(a == pwm[2])Set_LED2;
if(a == pwm[1])Set_LED1;
}
if(q==2)
{
if(a == pwm[20]){Set_LED20;Set_LED1;}
if(a == pwm[18]){Set_LED19;Set_LED2;}
if(a == pwm[16]){Set_LED18;Set_LED3;}
if(a == pwm[14]){Set_LED17;Set_LED4;}
if(a == pwm[12]){Set_LED16;Set_LED5;}
if(a == pwm[10]){Set_LED15;Set_LED6;}
if(a == pwm[8]){Set_LED14;Set_LED7;}
if(a == pwm[6]){Set_LED13;Set_LED8;}
if(a == pwm[4]){Set_LED12;Set_LED9;}
if(a == pwm[2]){Set_LED11;Set_LED10;}
}
else if(q==3)
{
if(a == pwm[1])Set_LED20;
if(a == pwm[2])Set_LED19;
if(a == pwm[3])Set_LED18;
if(a == pwm[4])Set_LED17;
if(a == pwm[5])Set_LED16;
if(a == pwm[6])Set_LED15;
if(a == pwm[7])Set_LED14;
if(a == pwm[8])Set_LED13;
if(a == pwm[9])Set_LED12;
if(a == pwm[10])Set_LED11;
if(a == pwm[11])Set_LED10;
if(a == pwm[12])Set_LED9;
if(a == pwm[13])Set_LED8;
if(a == pwm[14])Set_LED7;
if(a == pwm[15])Set_LED6;
if(a == pwm[16])Set_LED5;
if(a == pwm[17])Set_LED4;
if(a == pwm[18])Set_LED3;
if(a == pwm[19])Set_LED2;
if(a == pwm[20])Set_LED1;
}
}
if(--a == 255)
{
a = max_var_PWM;
PORTD=0;
PORTB=0;
PORTC=0;
}
}
void main(void)
{
byte a,b,c;
byte y1=Max_LED-1 ,y2= Max_LED+Max_LED ,x1 ,x2;
//Config all
//Config timers
//Config PORTS
{
DDRB=255;
DDRC=255;
DDRD=255;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1000.000 kHz
TCNT0=105;
TCCR0=2;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=1;
// Global enable interrupts
#asm("sei")
}
while (1)
{
// Place your code here
for(c=0;c<5;c++)
{
for(b=0;b<3;b++)
{
for(x1=0;x1<39;x1++)
{
for(x2=y1;x2>0;x2--)
{
pwm[x2+1]=pwm[x2];
}
pwm[1]=rain1[x1];
delay_ms(Delay1);
}
}
if(q++==3) q=0;
delay_ms(Delay2);
}
for(c=0;c<0;c++)
{
for(a=0;a<3;a++)
{
#asm("cli")
BLUE=ON;
delay_ms(D_3);
BLUE=OFF;
delay_ms(D_3);
}
delay_ms(D_3);
for(a=0;a<3;a++)
{
#asm("cli")
RED=ON;
delay_ms(D_3);
RED=OFF;
delay_ms(D_3);
}
delay_ms(D_3);
for(a=0;a<3;a++)
{
#asm("cli")
RED=BLUE=ON;
delay_ms(D_3);
RED=BLUE=OFF;
delay_ms(D_3);
}
delay_ms(D_3*4);
}
for(c=0;c<0;c++)
{
for(a=0;a<3;a++)
{
#asm("cli")
BLUE=ON;
delay_ms(D_3);
BLUE=OFF;
delay_ms(D_3);
}
delay_ms(D_3*4);
for(a=0;a<3;a++)
{
#asm("cli")
RED=ON;
delay_ms(D_3);
RED=OFF;
delay_ms(D_3);
}
delay_ms(D_3*10);
}
for(c=0;c<0;c++)
{
#asm("cli")
PD=PB=PC=0;
delay_ms(300);
PD=PB=PC=255;
delay_ms(300);
}
#asm("sei")
}
}
42
25
یک دیدگاه بنویسید: