Уведомления
Очистить все

связь ATMEGA128 с ПК через USART

1 Посты
1 Пользователи
0 Likes
5,700 Просмотры
kipizik
(@kipizik)
New Member
Присоединился: 14 лет назад
Сообщения: 1
Topic starter  

Привет всем!Создал в Proteus проект,где пытаюсь данные с ATMega 128 отправлять в виртуальный терминал.Но какой-бы символ я не выбрал,на экране терминала выводиться всего лишь буква "А" или если в шестнадцатеричном виде, то выводит либо 00 либо 80.В чем может быть рпичина?вот текст программы:
#include <mega128.h>
#include <stdio.h>
#define RXCIE 7
#define RXEN 4
#define TXEN 3
#define URSEL 7
#define UCSZ1 2
#define UCSZ0 1
#define UDRE 5
// Declare your global variables here

void USART_Init(void); //Функция инициализации модуля USART
void USART_Transmit( unsigned char data ); //Функция передачи данных по протоколу USART

void main(void)
{
// Declare your local variables here

PORTE=0x00;
DDRE=0x00;

USART_Init();

//for (;;) //Вечный цикл
USART_Transmit(50); //Отправка принятого символа назад
}

void USART_Init(void) //Функция инициализации USART
{
UBRR0H = 0;
UBRR0L = 51; //скорость обмена 9600 бод
UCSR0B = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); //разр. прерыв при приеме, разр приема, разр передачи.
UCSR0C = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //размер слова 8 разрядов
}

void USART_Transmit( unsigned char data ) //Функция отправки данных
{
while(!(UCSR0A&(1<<UDRE))); //Ожидание опустошения буфера приема
UDR0=data; //Начало передачи данных
}


Цитата