Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.04.2008, 16:35
|
#1
|
Частый гость
Регистрация: 06.10.2007
Сообщений: 11
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
компилятор C Hi-Tech, не работают директивы #asm #endasm
Существует функция
void Fn()
{
char x=0;
char y=0;
#asm
incf ?a_LCDInit+1
#endasm
if(y)
//что- делаем
}
Переменная y не увеличивается, в листинге видим
51 0782 0183 clrf 3 ;select bank 0
52 0783 01A0 clrf ?a_LCDInit
53 ;lcd.c: 16: char y=0;
54 0784 01A1 clrf ?a_LCDInit+1
55 0785 0AA1 incf ?a_LCDInit+1 ;#
Вроде в листинге иструкция есть, но сопровождается знаками ;#, и не производит никаких действий. Если сделать проверку после #asm #endasm,
y++;
то листинге появляется вторая инструкция, но без сопровождения знаками ;#.
54 0778 01A1 clrf ?a_LCDInit+1
55 0779 0AA1 incf ?a_LCDInit+1 ;#
56 ;lcd.c: 20: y++;
57 077A 0AA1 incf ?a_LCDInit+1
58 ;lcd.c: 21: if(y)
Теперь все работает. Кто может подсказать где забит гвоздь и как его вытащить. Версия Hi-Tech 8.05PL2
|
|
|
|
26.04.2008, 17:22
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
С чего Вы решили, что переменная не увеличивается ? Посмотрите отладчиком .
-- Прилагается рисунок: --
|
|
|
|
26.04.2008, 22:47
|
#3
|
Частый гость
Регистрация: 06.10.2007
Сообщений: 11
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Я бы даже не стал бы писать, если бы сто раз не проверил все варианты в отладчике. Один раз увеличиваю переменную в #asm, второй раз var++. Результат в отладчике равен 1. Попутно могу сообщить, что проверка числа на отрицательную величину
var = 1-64;
if(var ‹ 0) вообще не компилируется, никак. Это легко обходится, я даже и не пытался спрашивать
if(var & 0x80)
Должен отметить, что после долгой работы в Visual C++ этот хваленый компилятор смотрится убого, не компилировать код даже без сообщения, это уже чудо.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:27.
|
|