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

problem with msc1210 microcontroller

Simulation problem
joe man
Hi All,
When simulating an interupt from serial port RX0, I cannot succeed in affecting SBUF0 to a local variable, the watch window shows this variable to 0 even if SBUF0 is set.

Here is my code :

static void serial_port_0_isr (void) interrupt COM0_VECT
{ unsigned char data_received;
if (RI != 0)
{ RI = 0;
data_received = SBUF0;
...
} }

hi
i have the same problem like you i use the msc1210 microntroller.could you tell me how you did to solve your problem.think's

  • You do understand that, in the 8051 architecture, SBUF is actually two completely independent registers, don't you?

    When you read SBUF, you are reading the last character received by the UART;

    When you write to SBUF, you are loading a character for the UART to transmit.

    Therefore you should not expect to be able to write to SBUF and then read-back the same value...

    Please also read the instructions on how to post source code - they're right there immediately above the window where you type your message!

  • yes i now that there is two SBUF actually independent register in the 8051 architecture.

    you said: <Please also read the instructions on how to post source code - they're right there immediately above the window where you type your message!>

    where can i find the instructions on how to post source code?

    thank's for your answer

    PS: do you speak french? it will be easy for me to write in french!

  • do you speak french? it will be easy for me to write in french!

    je ne comprenez pas

  • je suis pas trop a l'aise avec l'anglais.
    en fait mon probleme c'est que je parviens a envoyer des donnees dans SBUF mais quand j'essai de lire son contenu via une variable je trouve rien
    je te mets en bas de page mon bout de code
    merci d'avance

    /*******************************************************/ // TRANSMISSION // /*******************************************************/

    void transmission(char donnee_emise) { SBUF0=donnee_emise; //Serial Port 0 input TXD=donnee_emise while(TI==0)continue; //tant que TI=0 on reste la { donnee_emise=0; TI=0; //clear TI flag } } /*******************************************************/ // FIN TRANSMISSION // /*******************************************************/

    //-------------------------------------------------------

    /*******************************************************/ // RECEPTION // /*******************************************************/ char reception(void) { donnee_recue=SBUF0; //Serial Port 0 Output RXD=donne_recue while(RI==0)continue; //tant que RI=0 on reste la { RI=0; //clear RI flag } return (donnee_recue); }

  • je suis pas trop a l'aise avec l'anglais.
    en fait mon probleme c'est que je parviens a envoyer des donnees dans SBUF mais quand j'essai de lire son contenu via une variable je trouve rien
    je te mets en bas de page mon bout de code
    merci d'avance

    Que?

    je suis un rock star

  • en fait c'est moi qui suis pas a l'aise avec l'anglais.
    mon probleme est quand je charge SBUF0 par donnee_emise ca passe c-a-d a la fin de la transmission TI=1 ca c'est la transmission maintenant pour la reception quand j'essaie de mettre le contenu de SBUF0 dans donnee_recue j'y trouve rien en d'autre terme RI ne passe jamais a 1.

    void transmission(char donnee_emise)

    { SBUF0=donnee_emise;

    while(TI==0)continue;//tant que TI=0 on reste la

    {

    donnee_emise=0;

    TI=0;

    } }

    char reception(void)

    {

    donnee_recue=SBUF0;

    while(RI==0)continue;//tant que RI=0 on reste la

    {

    RI=0; //clear RI flag

    }

    return (donnee_recue);

    }