[an error occurred while processing this directive] [an error occurred while processing this directive]
Как отучить Keil от нехорошестей?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Заяц 19 апреля 2002 г. 16:19

Например,на такой С:


#define Sda2 6
#define Sda1 5
#define bit(n) (1 << (n))

bit FlagFirstTDA;
...
P6 |= bit(FlagFirstTDA ? Sda1 : Sda2);
...

он выдаёт такой асм:

0056 300004 E JNB FlagFirstTDA,?C0070
0059 7E05 MOV R6,#05H
005B 8002 SJMP ?C0071
005D ?C0070:
005D 7E06 MOV R6,#06H
005F ?C0071:
005F 7401 MOV A,#01H
0061 C8 XCH A,R0
0062 EE MOV A,R6
0063 C8 XCH A,R0
0064 08 INC R0
0065 8002 SJMP ?C0092
0067 ?C0091:
0067 C3 CLR C
0068 33 RLC A
0069 ?C0092:
0069 D8FC DJNZ R0,?C0091
006B 4286 ORL P6,A

На фига делать какие-то сдвиги и вычислять маску,если Sda1 и Sda2 константы???Проверил значение бита FlagFirstTDA,взял нужную константу и маскируй.Не хочет...Вопрос - можно как-то ему помочь?


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru