Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: прием по UARt
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Evgenia
начала программировать сс 2430, помогите плиз с написанием программы по приему по UARTу данных, состоящих из нескольких байт, в моем случае 4 байта.
Evgenia
помогите начинающему с приемом по UART, надо принять 4 байта!!
SysRq
Готов принять один!

Народ, активнее, присоединяемся! lol.gif

PS: вы бы хоть отписали с чем работаем..
@Ark
Evgenia, скажите хотя бы кто принимает. Догадываюсь, что это микроконтроллер. smile.gif

Где наши "штатные" телепаты?
zltigo
Moderator:
Тема была перенесена из "51". Помогло smile.gif
Evgenia
спасибо, что откликнулись))
суть такая, есть да, вы догадливы микроконтроллер, точнее сс2430, с ядром 8051,
есть еще одно устройство, короче
надо послать просто команду по UART этому второму устройству, например "с", при этом то устройство долно ответить,т.е. UART должен принять, причем 4 байта последовательно и положить их в какой то буфер!)))
если Вам не сложно, помогите с кодом на С)))
Evgenia
помогите с описанием прерывания по приему байтов по UARt!!!! как это реализовать программно в С???
Kuzmi4
2 Evgenia - в этом вопросе вам в даташит камня надо смотреть а не в компилятор..
В разделе исходников, для AVR например, валяется много примеров для работы с уартом на иЯре и гЦЦ..
Пользоваться поиском не пробовали перед задаванием вопроса ?? Тем более что этот вопрос неоднократно обсасывался уже тут...

2 zltigo - шаман однако...
Lotor
Идея такая - настроить прерывания по приему байта и реализовать буфер, при накоплении которого будете его обрабатывать. В кейле будет примерно следующее
Код
#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;
        }
}


Спрашивайте, что конкретно не понятно. =)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.