Programowanie mikroprocesorów ( mikrokontrolerów )

Uruchomienie RS232 UART

 

Poniżej przedstawiony zostanie jeden ze sposobów uruchomienia transmisji szeregowej na mikrokontrolerach AVR.

CDN

Uruchomienie UART RS232
  1.  
  2. //Obsługa UART
  3. void USART_Init( unsigned int ubrr )
  4. {
  5.         /* Set baud rate */
  6.         UBRR1H = (unsigned char)(ubrr>>8);
  7.         UBRR1L = (unsigned char)ubrr;
  8.         /* Enable receiver and transmitter */
  9.         UCSR1B = (1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);
  10.         /* Set frame format: 8data, 2stop bit */
  11.         UCSR1C = (1<<USBS)|(3<<UCSZ0);
  12. }
  13.  
  14. void USART_Transmit( unsigned char data )
  15. {
  16.         PORTD |= (1<<PD1);
  17.         _delay_ms(50);
  18.         /* Wait for empty transmit buffer */
  19.         while ( !( UCSR1A & (1<<UDRE)) );
  20.         /* Put data into buffer, sends the data */
  21.         UDR1 = data;
  22.         while ( !( UCSR1A & (1<<UDRE)) );
  23.         _delay_ms(50);
  24.         PORTD &= ~(1<<PD1);
  25. }
  26.  
  27. volatile unsigned char Dana_odebrana,odebrano,nr_ramki=0;
  28.  
  29. unsigned char USART_Receive( void )
  30. {
  31.         /* Wait for data to be received */
  32.         while ( !(UCSR1A & (1<<RXC)) )
  33.         ;
  34.         Dana_odebrana = UDR1;
  35.         odebrano = UDR1;
  36.         nr_ramki++;
  37.         /* Get and return received data from buffer */
  38.         return UDR1;
  39. }
  40.  
  41. // Przerwania ***********************************
  42. ISR(USART1_RX_vect)
  43. {
  44.         USART_Receive();
  45. }
  46.  

CDN





 
Wszelkie prawa zastrzeżone! Kopiowanie, powielanie i wykorzystywanie zdjęć, treści oraz jej fragmentów bez zgody autora zabronione.
© mikroprocesory.info.pl@gmail.com 2013.