السلام عليكم ورحمة الله
ممكن اساتذتنا تحولون هذا الكود إلى الفلوكود
قام الأستاذ "أحمد عزيز" بكتابته لي
كود:
#include <mega8.h>
unsigned char x0=0,x1=0,x2=0,x3=0,x4=0,x5=0,x6=0,x7=0,z=0,z1=0;
unsigned char y0=0,y1=0,y2=0,y3=0,y4=0,y5=0,y6=0,y7=0,VV0=0,VV1=0,VV2=0,VV3=0,VV4=0,VV5=0,VV6=0,VV7=0;
bit V=1,V1=1,V2=1,V3=1,V4=1,V5=1,V6=1,V7=0;
bit u0=0,u1=0,u2=0,u3=0,u4=0,u5=0,u6=0,u7=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xD7;
z=1;
}
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
TCNT1H=0xFB1D >> 8;
TCNT1L=0xFB1D & 0xff;
z1=1;
}
void main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTC=0x7F;
DDRC=0x00;
PORTD=0xFF;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1000.000 kHz
TCCR0=0x02;
TCNT0=0xD7;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125.000 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x03;
TCNT1H=0xFB;
TCNT1L=0x1D;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x05;
#asm("sei")
while (1)
{
if(z==1)
{
z=0;
if(u0==1)y0++;
if(u1==1)y1++;
if(u2==1)y2++;
if(u3==1)y3++;
if(u4==1)y4++;
if(u5==1)y5++;
if(u6==1)y6++;
if(u7==1)y7++;
}
/////////////////////////////////////////////////////
if(z1==1)
{
z1=0;
PORTB=255;
u0=1;u1=1;u2=1;u3=1;u4=1;u5=1;u6=1;u7=1;
y0=0;y1=0;y2=0;y3=0;y4=0;y5=0;y6=0;y7=0;
if(V==1)VV0++;
if(V1==1)VV1++;
if(V2==1)VV2++;
if(V3==1)VV3++;
if(V4==1)VV4++;
if(V5==1)VV5++;
if(V6==1)VV6++;
if(V7==1)VV7++;
}
/////////////////////////////////////////////////////////////////
if(PIND.0==0)V=1;
if(VV0>=5){x0++;VV0=0;}
if(PIND.0==1){V=0;VV0=0;}
if(x0>=240)x0=0;
if(PIND.1==0)V1=1;
if(VV1>=5){x1++;VV1=0;}
if(PIND.1==1){V1=0;VV1=0;}
if(x1>=240)x1=0;
if(PIND.2==0)V2=1;
if(VV2>=5){x2++;VV2=0;}
if(PIND.2==1){V2=0;VV2=0;}
if(x2>=240)x2=0;
if(PIND.3==0)V3=1;
if(VV3>=5){x3++;VV3=0;}
if(PIND.3==1){V3=0;VV3=0;}
if(x3>=240)x3=0;
if(PIND.4==0)V4=1;
if(VV4>=5){x4++;VV4=0;}
if(PIND.4==1){V4=0;VV4=0;}
if(x4>=240)x4=0;
if(PIND.5==0)V5=1;
if(VV5>=5){x5++;VV5=0;}
if(PIND.5==1){V5=0;VV5=0;}
if(x5>=240)x5=0;
if(PIND.6==0)V6=1;
if(VV6>=5){x6++;VV6=0;}
if(PIND.6==1){V6=0;VV6=0;}
if(x6>=240)x6=0;
if(PIND.7==0)V7=1;
if(VV7>=5){x7++;VV7=0;}
if(PIND.7==1){V7=0;VV7=0;}
if(x7>=240)x7=0;
/////////////////////////////////////////////////////////////////////
if(y0>=x0){u0=0;PORTB.0=0;}
if(y1>=x1){u1=0;PORTB.1=0;}
if(y2>=x2){u2=0;PORTB.2=0;}
if(y3>=x3){u3=0;PORTB.3=0;}
if(y4>=x4){u4=0;PORTB.4=0;}
if(y5>=x5){u5=0;PORTB.5=0;}
if(y6>=x6){u6=0;PORTB.6=0;}
if(y7>=x7){u7=0;PORTB.7=0;}
////////////////////////////////////////////////////////////////////
}
}
وشكرا لكم على المساعدة