This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

I need help with the error stated by the program. Yet I have placed the "END" statement

#include <at89c51xd2.h>
#include <string.h>
#include <stdio.h>
#include "lcd.h"

#define motor1Cnt1 P0_0
#define motor1Cnt2 P0_1
#define motor2Cnt1 P0_2
#define motor2Cnt2 P0_3

#define forward1Led P1_0
#define forward2Led P1_1
#define forward3Led P1_2
#define stopLed P1_3

unsigned char forward1Flag = 0;
unsigned char forward2Flag = 0;
unsigned char forward3Flag = 0;
unsigned char backwardFlag = 1;

void forward1_Handle( void );
void forward2_Handle( void );
void forward3_Handle( void );
void back_Handle( void );
void stop_Handle( void );

void DelayMs( int );

#define f1key P0_4
#define f2key P0_5
#define f3key P0_6
#define bkey P0_7

int bkeyCnt = 0;
void main( void )
{ unsigned char index = 0;

unsigned char *myString1 = "**** WELCOME ***"; unsigned char *myString2 = " TO "; unsigned char *myString3 = " RF BASED "; unsigned char *myString4 = " VEHICLE SPEED "; unsigned char *myString5 = " CONTROL "; unsigned char *myString6 = " SPEED 1 ZONE "; unsigned char *myString7 = "****************"; unsigned char *myString8 = " SPEED 2 ZONE "; unsigned char *myString9 = " SPEED 3 ZONE "; unsigned char *myString10 = " STOP ZONE "; unsigned char *myString11= " BACKWARDS ";

Lcd_Init(); SenStringToLcd ( 1, myString1 ); SenStringToLcd ( 2, myString2 ); DelayMs(300); SenStringToLcd ( 1, myString3 ); SenStringToLcd ( 2, myString7 ); DelayMs(300); SenStringToLcd ( 1, myString4 ); SenStringToLcd ( 2, myString5 ); DelayMs(300);

motor1Cnt1 = 0; motor1Cnt2 = 0; motor2Cnt1 = 0; motor2Cnt2 = 0;

forward1Led = 0; forward2Led = 0; forward3Led = 0; stopLed = 0; DelayMs( 300 ); forward1Led = 1; forward2Led = 1; forward3Led = 1; stopLed = 1; DelayMs( 300 );

while( 1 ){

if( f1key == 0 ){

SenStringToLcd ( 1, myString6 ); SenStringToLcd ( 2, myString7 ); DelayMs(100); forward1Led = 0; forward2Led = 1; forward3Led = 1; stopLed = 1; DelayMs( 200 ); forward1Flag = 1; forward2Flag = 0; forward3Flag = 0; backwardFlag = 1;

}

if( forward1Flag == 1){ forward1_Handle(); }

if( f2key == 0 ){ SenStringToLcd ( 1, myString8 ); SenStringToLcd ( 2, myString7 ); DelayMs(100); forward1Led = 1; forward2Led = 0; forward3Led = 1; stopLed = 1; DelayMs( 200 ); forward1Flag = 0; forward2Flag = 1; forward3Flag = 0; backwardFlag = 1;

} if( forward2Flag == 1){ forward2_Handle(); }

if( f3key == 0 ){

SenStringToLcd ( 1, myString9 ); SenStringToLcd ( 2, myString7 ); DelayMs(100); forward1Led = 1; forward2Led = 1; forward3Led = 0; stopLed = 1; DelayMs( 200 ); forward1Flag = 0; forward2Flag = 0; forward3Flag = 1; backwardFlag = 1; }

if( forward3Flag == 1){ forward3_Handle(); }

if( bkey == 0 ){

forward1Flag = 0; forward2Flag = 0; forward3Flag = 0; if( backwardFlag == 1 ){

SenStringToLcd ( 1, myString11 ); SenStringToLcd ( 2, myString7 ); DelayMs(100); forward1Led = 1; forward2Led = 1; forward3Led = 1; stopLed = 0; DelayMs( 200 ); backwardFlag = 0;

} else{ SenStringToLcd ( 1, myString10 ); SenStringToLcd ( 2, myString7 ); DelayMs(100); forward1Led = 1; forward2Led = 1; forward3Led = 1; stopLed = 1; DelayMs( 200 ); stop_Handle(); backwardFlag = 1; } }

if( backwardFlag == 0 ){ back_Handle(); } }
} void forward1_Handle( void ){

motor1Cnt1 = 1; motor1Cnt2 = 0; motor2Cnt1 = 1; motor2Cnt2 = 0; return;
} void forward2_Handle( void ){ motor1Cnt1 = 1; motor1Cnt2 = 0; motor2Cnt1 = 1; motor2Cnt2 = 0; DelayMs( 40 ); motor1Cnt1 = 0; motor1Cnt2 = 0; motor2Cnt1 = 0; motor2Cnt2 = 0; DelayMs( 10 ); return;
}

void forward3_Handle( void ){ motor1Cnt1 = 1; motor1Cnt2 = 0; motor2Cnt1 = 1; motor2Cnt2 = 0; DelayMs( 20 ); motor1Cnt1 = 0; motor1Cnt2 = 0; motor2Cnt1 = 0; motor2Cnt2 = 0; DelayMs( 10 ); return;
} void back_Handle( void ){

motor1Cnt1 = 0; motor1Cnt2 = 1; motor2Cnt1 = 0; motor2Cnt2 = 1; DelayMs( 20 ); motor1Cnt1 = 0; motor1Cnt2 = 0; motor2Cnt1 = 0; motor2Cnt2 = 0; DelayMs( 10 ); return;
} void stop_Handle( void ){

motor1Cnt1 = 0; motor1Cnt2 = 0; motor2Cnt1 = 0; motor2Cnt2 = 0; DelayMs( 50 ); return;
} END
}

yet the program keep saying error A41, missing END statement. Where have I gone wrong?

Parents
  • I am compiling using the Keil software..c51..it is a 89c51 program..

    this is the error message

    main.s(144): error A9: SYNTAX ERROR
    main.s(146): error A21: EXPRESSION WITH FORWARD REFERENCE NOT PERMITTED
    main.s(146): error A45: UNDEFINED SYMBOL (PASS-2)
    main.s(186): error A56: UNBALANCED IF-END IF CONTROLS
    main.s(186): warning A41: MISSING 'END' STATEMENT

    ooh, here is he correct code;
    #include <at89c51xd2.h>
    #include <string.h>
    #include <stdio.h>
    #include "lcd.h"

    #define motor1Cnt1 P0_0
    #define motor1Cnt2 P0_1
    #define motor2Cnt1 P0_2
    #define motor2Cnt2 P0_3

    #define forward1Led P1_0
    #define forward2Led P1_1
    #define forward3Led P1_2
    #define stopLed P1_3

    unsigned char forward1Flag = 0;
    unsigned char forward2Flag = 0;
    unsigned char forward3Flag = 0;
    unsigned char backwardFlag = 1;

    void forward1_Handle( void );
    void forward2_Handle( void );
    void forward3_Handle( void );
    void back_Handle( void );
    void stop_Handle( void );

    void DelayMs( int );

    #define f1key P0_4
    #define f2key P0_5
    #define f3key P0_6
    #define bkey P0_7

    int bkeyCnt = 0;
    void main( void )
    { unsigned char index = 0;

    unsigned char *myString1 = "**** WELCOME ***";
    unsigned char *myString2 = " TO ";
    unsigned char *myString3 = " RF BASED ";
    unsigned char *myString4 = " VEHICLE SPEED ";
    unsigned char *myString5 = " CONTROL ";
    unsigned char *myString6 = " SPEED 1 ZONE ";
    unsigned char *myString7 = "****************";
    unsigned char *myString8 = " SPEED 2 ZONE ";
    unsigned char *myString9 = " SPEED 3 ZONE ";
    unsigned char *myString10 = " STOP ZONE ";
    unsigned char *myString11= " BACKWARDS ";

    Lcd_Init();
    SenStringToLcd ( 1, myString1 );
    SenStringToLcd ( 2, myString2 );
    DelayMs(300);
    SenStringToLcd ( 1, myString3 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(300);
    SenStringToLcd ( 1, myString4 );
    SenStringToLcd ( 2, myString5 );
    DelayMs(300);

    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;

    forward1Led = 0;
    forward2Led = 0;
    forward3Led = 0;
    stopLed = 0;
    DelayMs( 300 );
    forward1Led = 1;
    forward2Led = 1;
    forward3Led = 1;
    stopLed = 1;
    DelayMs( 300 );

    while( 1 ){

    if( f1key == 0 ){

    SenStringToLcd ( 1, myString6 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 0;
    forward2Led = 1;
    forward3Led = 1;
    stopLed = 1;
    DelayMs( 200 );
    forward1Flag = 1;
    forward2Flag = 0;
    forward3Flag = 0;
    backwardFlag = 1;

    }

    if( forward1Flag == 1){
    forward1_Handle();
    }

    if( f2key == 0 ){
    SenStringToLcd ( 1, myString8 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 1;
    forward2Led = 0;
    forward3Led = 1;
    stopLed = 1;
    DelayMs( 200 );
    forward1Flag = 0;
    forward2Flag = 1;
    forward3Flag = 0;
    backwardFlag = 1;

    }
    if( forward2Flag == 1){
    forward2_Handle();
    }

    if( f3key == 0 ){

    SenStringToLcd ( 1, myString9 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 1;
    forward2Led = 1;
    forward3Led = 0;
    stopLed = 1;
    DelayMs( 200 );
    forward1Flag = 0;
    forward2Flag = 0;
    forward3Flag = 1;
    backwardFlag = 1;
    }

    if( forward3Flag == 1){
    forward3_Handle();
    }

    if( bkey == 0 ){

    forward1Flag = 0;
    forward2Flag = 0;
    forward3Flag = 0;
    if( backwardFlag == 1 ){

    SenStringToLcd ( 1, myString11 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 1;
    forward2Led = 1;
    forward3Led = 1;
    stopLed = 0;
    DelayMs( 200 );
    backwardFlag = 0;

    }
    else{
    SenStringToLcd ( 1, myString10 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 1;
    forward2Led = 1;
    forward3Led = 1;
    stopLed = 1;
    DelayMs( 200 );
    stop_Handle();
    backwardFlag = 1;
    } }

    if( backwardFlag == 0 ){
    back_Handle();
    } }
    } void forward1_Handle( void ){

    motor1Cnt1 = 1;
    motor1Cnt2 = 0;
    motor2Cnt1 = 1;
    motor2Cnt2 = 0;
    return;
    } void forward2_Handle( void ){
    motor1Cnt1 = 1;
    motor1Cnt2 = 0;
    motor2Cnt1 = 1;
    motor2Cnt2 = 0;
    DelayMs( 40 );
    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;
    DelayMs( 10 );
    return;
    }

    void forward3_Handle( void ){
    motor1Cnt1 = 1;
    motor1Cnt2 = 0;
    motor2Cnt1 = 1;
    motor2Cnt2 = 0;
    DelayMs( 20 );
    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;
    DelayMs( 10 );
    return;
    } void back_Handle( void ){

    motor1Cnt1 = 0;
    motor1Cnt2 = 1;
    motor2Cnt1 = 0;
    motor2Cnt2 = 1;
    DelayMs( 20 );
    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;
    DelayMs( 10 );
    return;
    } void stop_Handle( void ){

    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;
    DelayMs( 50 );
    return;
    }END

Reply
  • I am compiling using the Keil software..c51..it is a 89c51 program..

    this is the error message

    main.s(144): error A9: SYNTAX ERROR
    main.s(146): error A21: EXPRESSION WITH FORWARD REFERENCE NOT PERMITTED
    main.s(146): error A45: UNDEFINED SYMBOL (PASS-2)
    main.s(186): error A56: UNBALANCED IF-END IF CONTROLS
    main.s(186): warning A41: MISSING 'END' STATEMENT

    ooh, here is he correct code;
    #include <at89c51xd2.h>
    #include <string.h>
    #include <stdio.h>
    #include "lcd.h"

    #define motor1Cnt1 P0_0
    #define motor1Cnt2 P0_1
    #define motor2Cnt1 P0_2
    #define motor2Cnt2 P0_3

    #define forward1Led P1_0
    #define forward2Led P1_1
    #define forward3Led P1_2
    #define stopLed P1_3

    unsigned char forward1Flag = 0;
    unsigned char forward2Flag = 0;
    unsigned char forward3Flag = 0;
    unsigned char backwardFlag = 1;

    void forward1_Handle( void );
    void forward2_Handle( void );
    void forward3_Handle( void );
    void back_Handle( void );
    void stop_Handle( void );

    void DelayMs( int );

    #define f1key P0_4
    #define f2key P0_5
    #define f3key P0_6
    #define bkey P0_7

    int bkeyCnt = 0;
    void main( void )
    { unsigned char index = 0;

    unsigned char *myString1 = "**** WELCOME ***";
    unsigned char *myString2 = " TO ";
    unsigned char *myString3 = " RF BASED ";
    unsigned char *myString4 = " VEHICLE SPEED ";
    unsigned char *myString5 = " CONTROL ";
    unsigned char *myString6 = " SPEED 1 ZONE ";
    unsigned char *myString7 = "****************";
    unsigned char *myString8 = " SPEED 2 ZONE ";
    unsigned char *myString9 = " SPEED 3 ZONE ";
    unsigned char *myString10 = " STOP ZONE ";
    unsigned char *myString11= " BACKWARDS ";

    Lcd_Init();
    SenStringToLcd ( 1, myString1 );
    SenStringToLcd ( 2, myString2 );
    DelayMs(300);
    SenStringToLcd ( 1, myString3 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(300);
    SenStringToLcd ( 1, myString4 );
    SenStringToLcd ( 2, myString5 );
    DelayMs(300);

    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;

    forward1Led = 0;
    forward2Led = 0;
    forward3Led = 0;
    stopLed = 0;
    DelayMs( 300 );
    forward1Led = 1;
    forward2Led = 1;
    forward3Led = 1;
    stopLed = 1;
    DelayMs( 300 );

    while( 1 ){

    if( f1key == 0 ){

    SenStringToLcd ( 1, myString6 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 0;
    forward2Led = 1;
    forward3Led = 1;
    stopLed = 1;
    DelayMs( 200 );
    forward1Flag = 1;
    forward2Flag = 0;
    forward3Flag = 0;
    backwardFlag = 1;

    }

    if( forward1Flag == 1){
    forward1_Handle();
    }

    if( f2key == 0 ){
    SenStringToLcd ( 1, myString8 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 1;
    forward2Led = 0;
    forward3Led = 1;
    stopLed = 1;
    DelayMs( 200 );
    forward1Flag = 0;
    forward2Flag = 1;
    forward3Flag = 0;
    backwardFlag = 1;

    }
    if( forward2Flag == 1){
    forward2_Handle();
    }

    if( f3key == 0 ){

    SenStringToLcd ( 1, myString9 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 1;
    forward2Led = 1;
    forward3Led = 0;
    stopLed = 1;
    DelayMs( 200 );
    forward1Flag = 0;
    forward2Flag = 0;
    forward3Flag = 1;
    backwardFlag = 1;
    }

    if( forward3Flag == 1){
    forward3_Handle();
    }

    if( bkey == 0 ){

    forward1Flag = 0;
    forward2Flag = 0;
    forward3Flag = 0;
    if( backwardFlag == 1 ){

    SenStringToLcd ( 1, myString11 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 1;
    forward2Led = 1;
    forward3Led = 1;
    stopLed = 0;
    DelayMs( 200 );
    backwardFlag = 0;

    }
    else{
    SenStringToLcd ( 1, myString10 );
    SenStringToLcd ( 2, myString7 );
    DelayMs(100);
    forward1Led = 1;
    forward2Led = 1;
    forward3Led = 1;
    stopLed = 1;
    DelayMs( 200 );
    stop_Handle();
    backwardFlag = 1;
    } }

    if( backwardFlag == 0 ){
    back_Handle();
    } }
    } void forward1_Handle( void ){

    motor1Cnt1 = 1;
    motor1Cnt2 = 0;
    motor2Cnt1 = 1;
    motor2Cnt2 = 0;
    return;
    } void forward2_Handle( void ){
    motor1Cnt1 = 1;
    motor1Cnt2 = 0;
    motor2Cnt1 = 1;
    motor2Cnt2 = 0;
    DelayMs( 40 );
    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;
    DelayMs( 10 );
    return;
    }

    void forward3_Handle( void ){
    motor1Cnt1 = 1;
    motor1Cnt2 = 0;
    motor2Cnt1 = 1;
    motor2Cnt2 = 0;
    DelayMs( 20 );
    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;
    DelayMs( 10 );
    return;
    } void back_Handle( void ){

    motor1Cnt1 = 0;
    motor1Cnt2 = 1;
    motor2Cnt1 = 0;
    motor2Cnt2 = 1;
    DelayMs( 20 );
    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;
    DelayMs( 10 );
    return;
    } void stop_Handle( void ){

    motor1Cnt1 = 0;
    motor1Cnt2 = 0;
    motor2Cnt1 = 0;
    motor2Cnt2 = 0;
    DelayMs( 50 );
    return;
    }END

Children