#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?
Shame you didn't post your code correctly.
What are you compiling the code with?
What EXACTLY is the error message reported?
What extension does your source file have?
That's enough from me for now.
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"
motor1Cnt1 = 0; motor1Cnt2 = 0; motor2Cnt1 = 0; motor2Cnt2 = 0; DelayMs( 50 ); return; }END
This would appear to be C, not assembler. Should be in a .C file, not .S
Note posting instructions, immediately above message window you're typing into, about using PRE tags around source code.
The error message is one from the assembler, not the compiler. Your code is C, so it must be compiled and not assembled.
You are a life saver man, thanks! Now the only error I am getting is this:
my latest project.c(4): warning C318: can't open file <lcd.h> my latest project.c(51): warning C206: 'Lcd_Init': missing function-prototype my latest project.c(52): warning C206: 'SenStringToLcd': missing function-prototype my latest project.c(52): error C267: 'SenStringToLcd': requires ANSI-style prototype
Ok, so go back to the place where you lifted the code originally and get the LCD.H and LCD.C files you need to complete the project.
thanks man! There was no lcd.c and lcd.h files from wherever i got the code but I was able to download the lcd.h file. unfortunately, most links with the lcd.c file are down and cant download it. Is there anywhere you know I could get it?
lcd.h(21): warning C318: can't open file 'lcd_config.h' lcd.h(32): error C141: syntax error near ';' lcd.h(43): error C141: syntax error near '}'
this what I am getting... i cant locate the syntax errors
Start with the first error, it likely precipitates the subsequent ones..
This tends to be the problem when you take incomplete code off the internet. Unless you have a complete and contemporary set of files to rebuild the project it is going to keep falling over itself. Are you sure the original project is suitable for your board? Was it posted because it didn't work in the first place?
Perhaps better you understand your own chip/board configuration and code your own solution. Doing homework is not about presenting someone else's solution.