Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <avr/eeprom.h>
- #include <util/delay.h>
- /* Системные дефайны */
- #define BAUD_RATE 9600
- #define USART_CONFIG (F_CPU / 8 / BAUD_RATE - 1) / 2
- /* Системные переменные */
- unsigned long int CNT = 0;
- /* Вспомогательные функции */
- // Отправка по USART
- void USART_Transmit( unsigned char data ) {
- while (!(UCSR0A & (1 << UDRE0)));
- UDR0 = data;
- }
- // Отправка строки по USART
- void USART_SendString( unsigned char *StringPtr) {
- while (*StringPtr != 0x00) {
- USART_Transmit(*StringPtr);
- StringPtr++;
- }
- }
- /* Описание внешнего прерывания INT0 */
- ISR (INT0_Vect) {
- CNT++;
- }
- /* Основная программа */
- int main () {
- // Внешнее прерывание
- EICRA |= (1 << ISC01);
- EIMSK |= (1 << INT0);
- // Инициализация USART
- UCSR0A = U2X0;
- UBRR0H = (unsigned char) (USART_CONFIG >> 8);
- UBRR0L = (unsigned char) USART_CONFIG;
- UCSR0B = (1 << TXEN0) | (1 << RXEN0) | (1 << RXCIE0);
- UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
- // Глобальная установка разрешений на прерывания
- asm("SEI");
- // Вечный цикл
- while(1) {
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment