Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Примерно так...

Отправлено KG 11 марта 2008 г. 16:35
В ответ на: Помогите любым примером работы по прерываниям с UART ADuC845 или подобного ...{+}(+) отправлено <font color=gray>Mik174</font> 11 марта 2008 г. 16:30

void init_uart(void)
{
PCON=0;
SCON=0x70;
T3FD=0x9;
T3CON=0x83;
ES=1;
PS=1;
}

void Serial_Int(void) interrupt 4 using 3
{
if(RI)
{
RI=0;
if(countR==0)//приём кода команды
{
buff[countR]=SBUF;
countR++;
}
else if(countR==1)//приём длины данных
{
buff[countR]=SBUF;
countR++;
}
else if(countR==buff[1])//приём старш. CRC
{
buff[buff[1]]=SBUF;
countR++;
}
else if(countR==buff[1]+1)//приём младш. CRC
{
buff[buff[1]+1]=SBUF;
bSI=1; //приняли пакет
REN=0; //запрет приёма
countR=0;
}
else //приём данных
{
buff[countR]=SBUF;
countR++;
}
}
if(TI)
{
TI=0;
if(countS==0)//передача кода команды
{
SBUF=buff[countS];
countS++;
}
else if(countS==1)//передача длины данных
{
SBUF=buff[countS];
countS++;
}
else if(countS==buff[1])//передача ст. CRC
{
SBUF=buff[buff[1]];
countS++;
}
else if(countS==buff[1]+1)//передача мл. CRC
{
SBUF=buff[buff[1]+1];
countS++;
}
else if(countS==buff[1]+2)//закончили передачу
{
countS=0;
}
else //передача данных
{
SBUF=buff[countS];
countS++;
}
}
}



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите два из трёх, получится:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru