01.07.2008, 23:42
|
|
Прописка
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
вообще то
если ваша n - "нормальная" сишная переменная,
(а не какой нибудь там псевдоним регистра)
то во вставках к ее имени прочерк добавляется:
unsigned char n;
#asm
movwf _n
#endasm
Кстати необязательно чтобы переменная была 8-разрядная
long m;
#asm
movwf _m+1
#endasm
- положили в аккумулятор второй байт m
Или то же самое с массивами:
unsigned char k[6];
#asm
movwf _k+1
#endasm
Это конечно все про Hi-Tech написано
Но вроде везде так работает,
даже в CBuilder'е...
|
|
|
|
02.07.2008, 20:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Не пойму в чем дело,создал проект и решил добавить массив чтоб выводить на жки числа в шестидиричном виде(за правописание сори,привык по простому) и тут компилятор пишет что мало памяти процесора,когда до добавления массива занято было памяти 36%.Сможет ли кто объяснить почему.
-- Прилагается рисунок: --
Прикрепленный файл: 1821279.rar
|
|
|
|
02.07.2008, 20:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
До того,как вставил массив
-- Прилагается рисунок: --
|
|
|
|
02.07.2008, 20:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Сам массив в программе тут. numeral[]
-- Прилагается рисунок: --
|
|
|
|
02.07.2008, 23:58
|
|
Прописка
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
По умолчанию все статические переменные
размещаются в нулевом банке
Массив, который инициализируется при объявлении(ну как тут),
компилятор само собой считает статическим
Здесь видимо памяти нулевого банка на весь массив
не хватило,
- похоже он распотрошил остатки на остальные банки(???)
В общем
объем ПЗУ здесь ТОЧНО ни причем
Думаю компилятор чё то натворил тут
с выделением памяти.
Можно попробовать явно указать банк,
в котором будет размещаться массив:
bank1 int numeral[ ] = { 0, 1, 2};
(Не уверен в идентификаторе:
в зависимости от компилятора
он может быть
_bank1 или __bank1)
|
|
|
|
03.07.2008, 00:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
А почему ты знакогенератор или что там еще тулишь в оперативку ?
Делай в памяти программ,как все.. ничего ведь не изменится от const unsigned int8 array[]={
|
|
|
|
03.07.2008, 00:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
дубль, снесите... Досикус, я не хотел, убери пост
double_dash, Ваше неприятие на аватаре - собственно, чего ??? Чем лично Вас АВР достал ??
|
|
|
|
03.07.2008, 05:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Банки к сожелению я не разобрался как переключать,в мануале просмотрел нашел препроцесовую директиву locate(но там нет переключение банков).
Юрий ты уже это говорил,про то что массивы которые не изменяются надо делать const,спасибо за напоминание помогло,но все равно на будущее надо разобратся.
-- Прилагается рисунок: --
|
|
|
|
03.07.2008, 11:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Немного почитав,ошибка вылезать из-за того что не хватает памяти ROM в первой странице,и как то надо переносить функцию с помощью директиры #SEPARATE,а я думал он автоматом занимает страницы памяти
|
|
|
|
03.07.2008, 11:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Усе разобрался и проект собрал.Оказывается если функции больше больше инструкции,чем может занять одна страница,то выдает ошибку,сам не хотит переносить ее на другую страницу(применяет по умолчанию директиру INLINE,или не хотит дальше первой страницы переносить) странно как то,тока когда указал перед самой большой функцией #separate тогда он только откомпилировал.
А как с этим обстоит в хайтеке?
-- Прилагается рисунок: --
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:41.
|
|