Есть тут у меня проблемка, потребовалось наладить обмен данными между МК и ПК. Вот состяпал такую програмку, но она не работает. Точнее работает, но как-то не так. для теста вывожу в порт символ с кодом 0x52, а на компе в терминале отображается каша, последовательно выводятся символы + ]. Вот привожу код программы, подскажите пожалуйста, кде я допустил ошибку.
(вначале думал, что мк работает на внутреннем генераторе, потом выставил фьюзами все как надо, от кварца на 4МГц, частотомером мерил)
Не могу понять, почему не работает.
компилятор - CodeVisionAVR
Код: Выделить всё
#include <mega8>
// Standard Input/Output functions
#include <stdio>
#include <delay>
// Declare your global variables here
void uart_putc(char data) {
while (!(UCSRA & 0x20)); // Wait untill USART data register is empty
// Transmit data
UDR = data;
}
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD |= 0x03; // RXD è TXD ïîäòÿãèâàþòñÿ â +U
DDRD &= ~0x01; // RXD âõîä
DDRD |= 0x02;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
ACSR=0x80;
SFIOR=0x00;
while (1)
{
// Place your code here
uart_putc (0x52);
delay_ms(200);
};
}


