Advertisement
Guest User

Untitled

a guest
May 30th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. //------------------------Deklaracje u¬ytkownika--------------------------------------------------
  2.  
  3. volatile char c_in; // odebrany znak (przez port szeregowy - przerwanie)
  4.  
  5. char znak; // zmienna w main()
  6.  
  7. char UART_init(long baud) // inicjowanie portu szeregowego
  8. {
  9. char speed, err=0;
  10.  
  11. speed = baud / 4800;
  12. switch(speed)
  13. {
  14. case 1:
  15. UBRRL = 103; // 4800 (fosc=8MHz => UBRRL=103)
  16. UBRRH = 0;
  17. break;
  18. case 2:
  19. UBRRL = 51; // 9600 (fosc=8MHz => UBRRL=51)
  20. UBRRH = 0;
  21. break;
  22. case 4:
  23. UBRRL = 25; // 19200 (fosc=8MHz => UBRRL=25)
  24. UBRRH = 0;
  25. break;
  26. case 8:
  27. UBRRL = 12; // 38400 (fosc=8MHz => UBRRL=12)
  28. UBRRH = 0;
  29. break;
  30. default:
  31. UBRRL = 25; // 19200 (fosc=8MHz => UBRRL=25)
  32. UBRRH = 0;
  33. err = 1; // nietypowa predkoťŠ (ustawiona domyťlna)
  34. break;
  35. }
  36.  
  37. UCSRB =_BV(RXCIE)|_BV(RXEN)|_BV(TXEN); // w-. przerwania od odb., w-. odb. i nadajnika
  38.  
  39. UCSRC =_BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0); // transmisja asynchroniczna, 8N1
  40.  
  41. sei(); // globalne odblokowanie przerwa˝
  42.  
  43. return err;
  44. }
  45.  
  46.  
  47.  
  48.  
  49. void COM_send(char c_out) // wys-anie jednego znaku do portu COM
  50. {
  51. loop_until_bit_is_set(UCSRA, UDRE); // oczekiwanie na wys-anie poprzedniego znaku
  52. UDR = c_out; // wyťlij nowy znak
  53. }
  54.  
  55.  
  56.  
  57.  
  58. char COM_recv(void) // odbiˇr jednego znaku z portu COM
  59. {
  60. char c = c_in; // odczyt znaku - przerwanie ( 0 = brak znaku, NULL)
  61. c_in = 0; // zeruj flagŕ
  62. return c; // zwroŠ znak
  63. }
  64.  
  65.  
  66.  
  67. void send_str(char * s) // wys-anie tekstu do portu COM
  68. {
  69. while (*s) COM_send(*s++); // wysy-aj kolejno znaki tekstu
  70. }
  71.  
  72.  
  73.  
  74. ISR (SIG_USART_RECV) // przerwanie od odbiornika
  75. {
  76. c_in = UDR; // odbiˇr znaku do bufora
  77. }
  78.  
  79.  
  80.  
  81. //--------------------Koniec deklaracji u¬ytkownika-----------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement