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

serial transfer with c in assembler

hi members...

i'm programming assembler and likewise c.
a practical training force me to write assembler in c.
the serial port names P3.1 and i can send every time 8 bit (2bit = start- and stopbit and the last 6 bit's are data).
i must abide the exactly speed (baudrate) for my pc and microcontroller.
in assembler is that very easy because i can use the cycle's.
i have realized the delay with loops in c but the loops are very inexactly!
i've got the answer to use the processortime or related.
How!?!?!

thank's for you sympathy

yours sincerely

nick

Parents
  • i have solved the problem alone...

    i have write the folowing timer function (delay of one second):

    void timer(void)
    {
    #define TF0_VECTOR 1

    int R7=20;
    TR0=0;
    TF0=0;

    TMOD=TMOD | 0xF0; //Timer 0,16 bit Timer
    TMOD=TMOD & 0x01;

    TL0=0xAF; //Timer 0, set 1 second
    TH0=0x3C;
    TR0=1; //start timer

    while(R7!=0)
    {
    if(TF0!=0) //test if the timer overflow
    {
    TR0=0; //stop timer
    TF0=0; //clear the overflow flag
    R7--;
    TR0=1;
    }
    }


    }


    Thank's for you help

    yours sincerely

    nick

Reply
  • i have solved the problem alone...

    i have write the folowing timer function (delay of one second):

    void timer(void)
    {
    #define TF0_VECTOR 1

    int R7=20;
    TR0=0;
    TF0=0;

    TMOD=TMOD | 0xF0; //Timer 0,16 bit Timer
    TMOD=TMOD & 0x01;

    TL0=0xAF; //Timer 0, set 1 second
    TH0=0x3C;
    TR0=1; //start timer

    while(R7!=0)
    {
    if(TF0!=0) //test if the timer overflow
    {
    TR0=0; //stop timer
    TF0=0; //clear the overflow flag
    R7--;
    TR0=1;
    }
    }


    }


    Thank's for you help

    yours sincerely

    nick

Children
No data