Полная версия этой страницы:
прием по UARt
Evgenia
Aug 20 2008, 13:48
начала программировать сс 2430, помогите плиз с написанием программы по приему по UARTу данных, состоящих из нескольких байт, в моем случае 4 байта.
Evgenia
Aug 20 2008, 16:36
помогите начинающему с приемом по UART, надо принять 4 байта!!
Готов принять один!
Народ, активнее, присоединяемся!

PS: вы бы хоть отписали с чем работаем..
Evgenia, скажите хотя бы кто принимает. Догадываюсь, что это микроконтроллер.
Где наши "штатные" телепаты?
zltigo
Aug 20 2008, 17:14
Moderator:
Тема была перенесена из "51". Помогло
Evgenia
Aug 21 2008, 05:46
спасибо, что откликнулись))
суть такая, есть да, вы догадливы микроконтроллер, точнее сс2430, с ядром 8051,
есть еще одно устройство, короче
надо послать просто команду по UART этому второму устройству, например "с", при этом то устройство долно ответить,т.е. UART должен принять, причем 4 байта последовательно и положить их в какой то буфер!)))
если Вам не сложно, помогите с кодом на С)))
Evgenia
Aug 22 2008, 07:32
помогите с описанием прерывания по приему байтов по UARt!!!! как это реализовать программно в С???
Kuzmi4
Aug 22 2008, 07:42
2 Evgenia - в этом вопросе вам в даташит камня надо смотреть а не в компилятор..
В разделе исходников, для AVR например, валяется много примеров для работы с уартом на иЯре и гЦЦ..
Пользоваться поиском не пробовали перед задаванием вопроса ?? Тем более что этот вопрос неоднократно обсасывался уже тут...
2 zltigo - шаман однако...
Идея такая - настроить прерывания по приему байта и реализовать буфер, при накоплении которого будете его обрабатывать. В кейле будет примерно следующее
Код
#define UART_BUF_SIZE 4
unsigned char UART_BUF[UART_BUF_SIZE];
bit receive_flag=0;
void Input_Serial_Port() interrupt 4
{
unsigned char temp;
if(RI) // Если произошел прием символа
{
if(!receive_flag)
{
for(temp=0;temp<UART_BUF_SIZE-1;temp++) // Сдвигаем буфер влево всегда, организуем очередь
{
UART_BUF[temp]=UART_BUF[temp+1];
}
UART_BUF[UART_BUF_SIZE-1]=SBUF;
if (UART_BUF[0]=='@') // Допустим @ указывает на нужную посылку,
receive_flag=1; // то устанавливаем флаг приема, который анализируется программой
}
RI=0;
}
}
Спрашивайте, что конкретно не понятно. =)
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.