//Мой исходник в CodeVision AVR
#include <mega48.h>
#include <delay.h>
#include <stdio.h>
#define FOSC 20000000 // Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
unsigned char tmp, ib, URTNR0;
long int tt;
float R;
unsigned char dbd[16] = {187, 10, 115, 91, 202, 217, 249, 11, 251, 219, 235, 248, 177, 122, 241, 225};
void USART_Init(unsigned int ubrr)
{
/*Set baud rate */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/*Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 2stop bit */
UCSR0C = (1<<USBS0)|(3<<UCSZ00);
}
void main(void)
{
DDRC.0=1;
DDRC.1=1;
DDRB.2=0;
PORTB.2=0;
DDRD.2=1;
DDRD.3=1;
DDRD.4=1;
DDRD.5=1;
DDRD.6=1;
DDRD.7=1;
USART_Init(0x0081);
#asm("sei")
while(1)
{
delay_ms(1000);
}
}
interrupt [USART_RXC] void usart_rx_isr(void)
{
/* Wait for data to be received */
while ( !(UCSR0A & (1<<RXC0)) )
;
/* Get and return received data from buffer */
//дальше идёт обработка прерывания, выводится цифра на индикатор,
//подключенный к порту D и C и потом счётчик увеличивается на 1,
//но это почему-то не работает!!! Помогите!!!
tmp = URTNR0;
tmp = dbd[tmp];
PORTD = tmp;
PORTC = tmp;
URTNR0 = URTNR0 + 1;
}

