Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; 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 изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите два из трёх, получится:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru