multiple task in main function

Parth86

Member
Hello everyone
I have completed below tasks individually.
task1 LED blinking ,
task 2 motor_on_off_forword_backword
task 3 display message.
Now I want to combine all three task in one program.
task : first blink LED, If LED is blinking than do task for motor start, forward , backword , stop and if motor is working , display message '' motor working " on LCD



so I have write program. its incomplete program. I am confused on how to all in main function
C:
#include <REG51.h>           // Header file of AT89c51
#define display_port P2      //Data pins connected to port 2 on microcontroller
#define LED          P1      // LED is connected to port P1
#define LED_ON       0xff    // LED ON
#define LED_OFF      0x00    // LED OFF

//motor connection
sbit L293D_pin_1 = P3^0;     // pin_1 connected to P3^0
sbit L293D_pin_2 = P3^1;     // pin_2 connected to P3^0
sbit L293D_E     = P3^2;     // pin_E connected to P3^0

// LCD pin connection
sbit rs = P2^0;              //RS pin connected to pin 2 of port 3
sbit rw = P2^1;              // RW pin connected to pin 3 of port 3
sbit e =  P2^2;              //E pin connected to pin 4 of port 3


// delay function for LED
void LED_delay (unsigned int i)
{
    unsigned int j;
    for (i = 0; i < 40000; i++);
    {
     
    }
}
// Delay function for LCD
void LCD_delay(unsigned int time)  // Function for creating delay in milliseconds.
{
    unsigned j,l ;
    for(j=0;j<time;j++)   
    for(l=0;l<1275;l++);
}
// Delay function for Motor
void Motor_delay()
{
unsigned int m,n,k;
for(m=0;m<0x20;m++)
for(n=0;n<255;n++)
for(k=0;k<255;k++);
}


void rotate_f()
{
L293D_pin_1 = 1; //Make positive of motor 1
L293D_pin_2 = 0; //Make negative of motor 0
L293D_E = 1; //Enable L293D
}

void rotate_b()
{
L293D_pin_1 = 0; //Make positive of motor 0
L293D_pin_2 = 1; //Make negative of motor 1
L293D_E = 1; //Enable L293D
}
void breaks()
{
L293D_pin_1 = 0; //Make positive of motor 0
L293D_pin_2 = 0; //Make negative of motor 0
L293D_E = 0; //Disable L293D
}

void lcd_cmd(unsigned char command)  //Function to send command instruction to LCD
{
    display_port = command;
    rs= 0;
    rw=0;
    e=1;
    msdelay(1);
    e=0;
}

void lcd_data(unsigned char disp_data)  //Function to send display data to LCD
{
    display_port = disp_data;
    rs= 1;
    rw=0;
    e=1;
    msdelay(1);
    e=0;
}

 void lcd_init()    //Function to prepare the LCD  and get it ready
{
    lcd_cmd(0x38);  // for using  2 lines and 5X7 matrix of LCD
    msdelay(10);
    lcd_cmd(0x0c);  // turn display ON, cursor blinking
    msdelay(10);
    lcd_cmd(0x01);  //clear screen
    msdelay(10);
    lcd_cmd(0x81);  // bring cursor to position 1 of line 1
    msdelay(10);
}
void main()
{
 // first blink LED
   // If LED is blinking than do task for motor start, forward , backword , stop
   // if motor is working , display message '' motor working " on LCD
   
}
main function for led blinking
Main function for LED
C:
void main()

{

    while (1)

    {
        LED = LED_ON;
        LED_delay(500);
        LED = LED_OFF;
        LED_delay(5000);
        LED = LED_OFF;
    }
}
main function for motor
C:
void main()

{

while (1) { //Infinite loop
rotate_f(); //Run forward
motor_delay(); //Some delay
breaks(); //Stop
motor_delay(); //Some delay
rotate_b(); //Run Backwards
motor_delay(); //Some delay
breaks(); //Stop
motor_delay(); //Some delay
} //Do this infinitely

}

main function for motor
C:
void main()
{
    unsigned char a[15]="motor working";    //string of 14 characters with a null terminator.
    int p=0;
    lcd_init();
    while(a[p] != '\0') // searching the null terminator in the sentence
    {
        lcd_data(a[p]);
        p++;
        LCD_delay(50);
    }
}
how to do all task in one main function?
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…