реклама на сайте
подробности

 
 
> UART 0xFF проблема, считывание 0xff
andron86
сообщение Mar 1 2006, 06:34
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Привет всем, помогите пожалуйста с проблемой!

Никак не могу считать 0xff. Конкретнее:c СОМ порта пытаюсь считать телеграмму с конечным байтом 0xff - все, кроме этого, байты, принимаются без проблем. help.gif

Использую в C8051F124,Keil c51, UART0 38400/1stopbit и такой алгоритм:

Код
  for(Temp = 0; Temp<8; Temp++)
{
while(cmd = getchar())
        if(cmd != -1) break;
          if(cmd==0xff){ temp2[i]=cmd; break;}
temp1[count]=cmd;        
}


помогите студенту, плиз!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andron86
сообщение Mar 1 2006, 12:43
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(Shamil_Yusupov @ Mar 1 2006, 09:20) *
Это ничего не меняет, значение 0xFF в ней
будет соответствовать -1, при сравнении.

Для того чтобы твой код работал,
cmd надо объявить как short (т.е. двухбайтовую знаковую переменную)

Да нет Шамиль, мне кажется, что это одно и тоже! Ведь состояние сом порта в режиме ожидания 0xff т.е -1!! Даже если я объявлю cmd как short, то прерывание цикла будет при 0xffff -т.е. одно и тоже. Выход я нашел - меня спасло то, что 0xff находится не в начале телеграммы! То есть:
Код

unsigned char cmd;
for(xTemp = 0; xTemp<8; xTemp++)
{
while(cmd = getchar())
        if(cmd != -1 && xTemp == 0) break;

        if(cmd==0xff){ temp2[i]=cmd; break;}

temp1[count]=cmd;        
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 17:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016