# Embedded C

### Multiple Blinking LED using 8051 AT89S52 with video tutorial

#### Let us c the program

#include<at89x52.h>
int i,j;
void delay() {
for(i=0;i<1000;i++) {
for(j=0;j<100;j++) {
;
}
}
}
void main() {
P1 = 0;
delay();
while(1) {
P1_3 = 0;
P1_0 = 1;
delay();
P1_0 = 0;
P1_1 = 1;
delay();
P1_1 = 0;
P1_2 = 1;
delay();
P1_2 = 0;
P1_3 = 1;
delay();
}
}

### Explanation:

#### delay() function:

This delay function's explanation.

#### main() function:

Here we are just making the all pins in Port 1 to zero or low by assigning P1 = 0.Then we call delay function. Now infinite loop aka While(1) starts.

What is infinite loop???

### Logic of this code

In infinite loop leave the first line P1_3 = 0, we may see why it is added at top later. Now P1_0 = 1 means first pin is high so first LED will glow  while delay function is executing.
Then P1_0 = 0 will make the 1st LED to be in off stage and 2 LED will be glown while delay function is executing by assigning P1_1 = 1.
Like wise,
P1_1 = 0;// 2nd led is off
P1_2 = 1;// 3rd led is on up to executing delay function.

P1_2 = 0; // 3rd led is off
P1_3 = 0; // 4th led is on

Now you can understand why P1_3 = 0 is added before P1_0 = 1. Yes First time no problem but 2nd execution of infinite loop aka while (1) loop 4th led should be off. For this reason we added that line.

### Tutorial and working video:

Cheers!!!!
-> Let Us Embed <-