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

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

Ты, конечно

Отправлено 1984 16 ноября 2007 г. 14:13
В ответ на: IAR vs ME кто глючит? отправлено misyachniy 16 ноября 2007 г. 13:54

Options -> C/C++ Compiler -> Preprocessor -> Preprocessor output to file.

void SendByte (unsigned char b)
{
unsigned char bit_count;

bit_count=0x80;
; {TCNT2 = 0; OCR2A = 16;};
__delay_cycles(100); // ñòàðò áèò

while (bit_count>0)
{
if (bit_count & b) ; {TCNT2 = 0; OCR2A = 0;};
else ; {TCNT2 = 0; OCR2A = 16;};
__delay_cycles(100); // äàííûå
bit_count >>= 1;
}
; {TCNT2 = 0; OCR2A = 0;};
__delay_cycles(100); // ñòop áèò

}


Правильный вариант:


#define PWM_ON() do {TCNT2 = 0; OCR2A = 16; }while(0)
#define PWM_OFF() do {TCNT2 = 0; OCR2A = 0; } while(0)

или хотя бы:


#define PWM_ON() {TCNT2 = 0; OCR2A = 16; }
#define PWM_OFF() {TCNT2 = 0; OCR2A = 0; }

и заключить тело "if" в скобочки.

Впрочем тела if, for, etc надо всегда заключать в фигурные скобки во избежание проблем и неоднозначностей в будущем.




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

Ответы


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

Сообщение:

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

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

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

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