Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.

We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.

Thank you for your understanding.


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