Avatar billede axel21 Juniormester
04. januar 2008 - 23:09 Der er 1 løsning

Hjælp til at kommentere USART Script

Hej. Jeg har brug for hjælp til at få nogle gode kommentarer skrevet på koden så den bliver lettere at forstå. Der skal kun skrives lige præcis hvad hver linie gør. Det skal siges at jeg ikke er en haj til C så derfor beder jeg om hjælp til at kunne forstå dette, og samtidigt lade nogen tjene nogle "lette point". På forhånd tak...

    #include <io.h>
    #include <avr/interrupt.h>

/** Private Prototypes ***********************************************/
    void charReceived(unsigned char c);

/** Global variables *************************************************/
    unsigned char chars[15];
    unsigned int receiveBufferIndex = 0;
    unsigned char receiveBuffer[16];
    volatile char transmitCompleteFlag = 0;
    volatile char recieveCompleteFlag = 0;

/** Constant definitions *********************************************/
    #define FRAMING_ERROR FE
    #define PARITY_ERROR PE
    #define DATA_OVERRUN DOR

/** Subroutines ******************************************************/
    //-----------------------------------------------------------------
    // USART initialization with interrupt
    //-----------------------------------------------------------------
    void usartInit( unsigned int baud )
    {
        /* Set baud rate */
        UBRRH = (unsigned char)(baud>>8);
        UBRRL = (unsigned char)baud;

        UCSRA = 0;

        // RXCIE: RX Complete Interrupt Enable
        // TXCIE: TX Complete Interrupt Enable
        // RXEN: Receiver Enable
        // TXEN: Transmitter Enable
        UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<TXCIE)|(1<<RXCIE);

        /* Set frame format: 8data, 1stop bit */
        UCSRC = (1<<URSEL)|(3<<UCSZ0);//|(1<<UPM1)|(1<<UPM0)|(1<<USBS);
    }

    //-----------------------------------------------------------------
    // Transmit char to USART
    //-----------------------------------------------------------------
    void usartTransmitChar( char c )
    {
        /* Wait for empty transmit buffer */
        while (!transmitCompleteFlag);

        /* Put data into buffer, sends the data */
          transmitCompleteFlag=0;
          UDR = c;
    }

    //-----------------------------------------------------------------
    // Transmit 0 terminated data
    //-----------------------------------------------------------------
    void usartTransmitString(const char *ptr)
    {
          while(*ptr)
        {
            usartTransmitChar(*(ptr++));
        }
    }
/****************** END OF PROGRAM **********************************/
Avatar billede axel21 Juniormester
25. januar 2008 - 13:58 #1
Closed
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester