Redfern_89

barno_ebanoe.c

Jan 13th, 2018
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.31 KB | None | 0 0
  1. #include <avr/io.h>
  2. #include <avr/eeprom.h>
  3. #include <util/delay.h>
  4.  
  5. /*  Системные дефайны */
  6. #define BAUD_RATE 9600
  7. #define USART_CONFIG (F_CPU / 8 / BAUD_RATE - 1) / 2
  8.  
  9. /* Системные переменные */
  10. unsigned long int CNT = 0;
  11.  
  12. /* Вспомогательные функции */
  13.  
  14. // Отправка по USART
  15. void USART_Transmit( unsigned char data ) {
  16.   while (!(UCSR0A & (1 << UDRE0)));
  17.   UDR0 = data;
  18. }
  19.  
  20. // Отправка строки по USART
  21. void USART_SendString( unsigned char *StringPtr) {
  22.   while (*StringPtr != 0x00) {
  23.     USART_Transmit(*StringPtr);
  24.     StringPtr++;
  25.   }
  26. }
  27.  
  28. /* Описание внешнего прерывания INT0 */
  29. ISR (INT0_Vect) {
  30.   CNT++;
  31. }
  32.  
  33. /* Основная программа */
  34. int main () {
  35.  
  36.   // Внешнее прерывание
  37.   EICRA |= (1 << ISC01);
  38.   EIMSK |= (1 << INT0);
  39.  
  40.   // Инициализация USART
  41.   UCSR0A = U2X0;
  42.   UBRR0H = (unsigned char) (USART_CONFIG >> 8);
  43.   UBRR0L = (unsigned char) USART_CONFIG;
  44.   UCSR0B = (1 << TXEN0) | (1 << RXEN0) | (1 << RXCIE0);
  45.   UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
  46.  
  47.   // Глобальная установка разрешений на прерывания
  48.   asm("SEI");
  49.  
  50.  
  51.   // Вечный цикл
  52.   while(1) {
  53.  
  54.    
  55.   }
  56.  
  57.   return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment