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

Using the Dallas Semiconductor 450

Getting Error C141: syntax error near 'void' HELP

HERE IS THE CODE---

#include <reg51.h>
void MSDelay (unsigned int);
sbit input=P0^0;
sbit input2=P0^1;
sbit LLight=P1^1;
sbit RLight=P1^2;
sbit Bell=P1^3;
void main(void)
{ unsigned int i; input=0xFF; //'input' Input Port// input2=0xFF; //'input2' Input Port// LLight=0x00; //'LLight' As Output Port// RLight=0x00; //'RLight' As Output Port// Bell=0x00; //'Bell' As Output Port//
{ LLight=00; RLight=00; Bell=00; while (1) { { Bell=1; LLight=1; RLight=0; MSDelay (2500); } { Bell=1; LLight=0; RLight=1; MSDelay (2500); } }
} void MSDelay (unsigned int itime) { unsigned int i, j; for (i=0;i<itime;i++) for (j=0;j<1275;j++); }

Parents
  • So why didn't you post a properly indented source code, making use of the very clearly presented information how to post source code?

    Would that have made it too easy to spot the compilation error?

    #include <reg51.h>
    void MSDelay (unsigned int);
    
    sbit input=P0^0;
    sbit input2=P0^1;
    sbit LLight=P1^1;
    sbit RLight=P1^2;
    sbit Bell=P1^3;
    
    void main(void) {
        unsigned int i;
        input=0xFF; //'input' Input Port//
        input2=0xFF; //'input2' Input Port//
        LLight=0x00; //'LLight' As Output Port//
        RLight=0x00; //'RLight' As Output Port//
        Bell=0x00; //'Bell' As Output Port//
        {
            LLight=00;
            RLight=00;
            Bell=00;
            while (1) {
                {
                    Bell=1;
                    LLight=1;
                    RLight=0;
                    MSDelay (2500);
                }
                {
                    Bell=1;
                    LLight=0;
                    RLight=1;
                    MSDelay (2500);
                }
            }
        } <=== this is not the end of main() !!!
    
        void MSDelay (unsigned int itime) {  <=== a function inside a function?
            unsigned int i, j;
    
            for (i=0;i<itime;i++)
                for (j=0;j<1275;j++);
        }
    <=== strange that your braces didnt' allow you to return back to the left margin when you consumed your last right brace...
    

    Indentation really do help to keep track of { and } and what part of the code that is included in a while loop.

    By the way - having two loops for a delay isn't exactly a good way. You call your function MSDelay which could be thought to mean milliseconds of delay or maybe megaseconds of delay. But without binding the delay to some real hardware, you have no way of knowing what actual delay you get. That's a reason why your processor got timer support.

    And one more thing: Comments starting with // continues to the end of the line - so no need for any extra // at the end.

Reply
  • So why didn't you post a properly indented source code, making use of the very clearly presented information how to post source code?

    Would that have made it too easy to spot the compilation error?

    #include <reg51.h>
    void MSDelay (unsigned int);
    
    sbit input=P0^0;
    sbit input2=P0^1;
    sbit LLight=P1^1;
    sbit RLight=P1^2;
    sbit Bell=P1^3;
    
    void main(void) {
        unsigned int i;
        input=0xFF; //'input' Input Port//
        input2=0xFF; //'input2' Input Port//
        LLight=0x00; //'LLight' As Output Port//
        RLight=0x00; //'RLight' As Output Port//
        Bell=0x00; //'Bell' As Output Port//
        {
            LLight=00;
            RLight=00;
            Bell=00;
            while (1) {
                {
                    Bell=1;
                    LLight=1;
                    RLight=0;
                    MSDelay (2500);
                }
                {
                    Bell=1;
                    LLight=0;
                    RLight=1;
                    MSDelay (2500);
                }
            }
        } <=== this is not the end of main() !!!
    
        void MSDelay (unsigned int itime) {  <=== a function inside a function?
            unsigned int i, j;
    
            for (i=0;i<itime;i++)
                for (j=0;j<1275;j++);
        }
    <=== strange that your braces didnt' allow you to return back to the left margin when you consumed your last right brace...
    

    Indentation really do help to keep track of { and } and what part of the code that is included in a while loop.

    By the way - having two loops for a delay isn't exactly a good way. You call your function MSDelay which could be thought to mean milliseconds of delay or maybe megaseconds of delay. But without binding the delay to some real hardware, you have no way of knowing what actual delay you get. That's a reason why your processor got timer support.

    And one more thing: Comments starting with // continues to the end of the line - so no need for any extra // at the end.

Children