Отговори на тема  [ 10 мнения ] 
въпросче 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Сеп 11, 2006 5:30 pm
Мнения: 39
Мнение въпросче
ЗДР на всички !
от вчера си чукам главата с следното нещо :
в програмка имам условни преходи , след компилация опитах да направя една симулация , при което излиза диалогов прозорец ''Disassembly'' (който при първите симулациии на една по проста програмка въобще не излизаше) и при извървяването на програмата "стъпка-по-стъпка" се оказа
че условните блокове липсват . От рода на

if i==0
call program1
else
call program 2
endif

тоест нито една директива на МПЛАБ не се компилирала

(Use MPLAB & 16f84a)
Така в симулационния прозорец вместо 400 реда (колкото си беше сорса) има само 200. А този гаден прозорец защо излиза :x ? Не мога да се ориентирам така добре както ако симулатора върви по ASM файла. Като се рових в хелпа открих следното

Common Problems
Although I set up listing file properties with MPASM assembler directives, none of these properties is appearing in my listing file.
Although MPASM assembler is often used with MPLINK object linker, MPASM assembler directives are NOT supported by MPLINK linker. See MPLINK linker command-line options for control of listing and hex file output.

Това означава ли че трябва да извърша някакви насройки на
тоя MPLINK linker , за да мога да използвам директивите на MPLAB (MPASM assembler)? По надолу дава следната информация която така и не схванах...

When used in MPLAB IDE, all of MPLINK linker's options are available through the Node Properties dialog, accessed from the Edit Project dialog.
When using MPLINK linker in a batch file, or directly from DOS, the linker is invoked with the following syntax:
mplink { cmdfile | [objfile] | [libfile] | [option] } . . .
You must have one command file (cmdfile) and at least one object file (objfile).
cmdfile is the name of a linker command file. All linker command files must have the extension .lkr.
objfile is the name of an assembler or compiler generated object file. All object files must have the extension .o.
libfile is the name of a librarian created library file. All library files must have the extension .lib.

И едно друго въпросче имам. В началото на програмата си дефинирам променлива ( k EQU D'1' ) която на места се увеличава с еденица. Обаче при симулацийката някаде след
10-ят ред започва да се увеличава сама след ипълнението на всяка следваща инсрукция (view>watch)
как да я фиксирам гаднярката ? :D
благодарим за вниманието !


Нед Окт 01, 2006 5:50 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Авг 19, 2005 11:38 am
Мнения: 978
Местоположение: Europe -> BG
Мнение 
Нали се сещаш , че този if е предпроцесорна директива, а не указва никаква инструкция/и за изпълнение
/т.е явно не се сещаш в момента.

_________________
един факт :-)
Съжалявам , че исках да помогна ...


Нед Окт 01, 2006 8:27 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Вто Май 23, 2006 4:56 pm
Мнения: 113
Местоположение: Варна
Мнение 
the_real_maniac е отговорил на 1-я ти въпрос. Относно втория, дефинирал си си променливата на адрес 1h, където се намира Таймер0, т.е. изполаването на променливата "к" е все едно използване на регистъра на таймер0, който сам си върти напред. Когато използваш собствени променливи, те трябва да се дефинират като част от General Purpose регистрите, казано на BG, регистри с общо предназначение. При 84А те се намира от адрес 0Ch до адрес 4Fh за банка0 и от 8Ch до CFh за банка 1.
За да работи правилно програмата си промени дефиницията така:

k EQU 0x0C


Пон Окт 02, 2006 9:26 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Сеп 11, 2006 5:30 pm
Мнения: 39
Мнение 
за променливата схванах , а за този "if" има ли някакъв начин да го използвам , или трябва да се задоволя с 35-те инструкции на 16ф84а ?


Пон Окт 02, 2006 7:02 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение 
В тея 35 инструкции има такива за проверка и преход, например DECFSZ, или проверка на пин с BTFSS. Мисля, че ще ти свършат работа.


Вто Окт 03, 2006 8:59 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Сеп 11, 2006 5:30 pm
Мнения: 39
Мнение 
ДА , да мерси за мненията .Променливите ги оправих, мислих че като на С-то , а то се бил дефинирал адреса... На места изглежда не съм схванал цялата информация за 84-та Така и направих използвах DECFSZ ,BTFSS, MOVF и STATUS,Z и работата става. Добре все пак някой ще ми обясни ли за какво се използват директивите на MPLAB. Какъв е смисъла им щом не мога директно да ги прилагам при програмирането?


Вто Окт 03, 2006 12:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
Виж в хелпа на МПЛАБ - там е описано много добре. Има и примерчета.


Вто Окт 03, 2006 12:54 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение 
еми аз специално не ползвам никви директиви щом става дума за пик и асемблер. директивите влизат в хеь файла, така че има смисъл да ги ползваш. само тази за задаване на процесора недей, ами си го избирай от мплаба. тази директива е в асм файла, а не се предава като параметър на мпасм-а, който компилирва сорса.
така че могат да се прилагат директивите директно, но без тази за избор на мс


Вто Окт 03, 2006 12:55 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
Ами най-общо казано, директиви като "IF" се ползват за условно асемблиране, т.е. контролира как ти се асемблира програмата. В твоя случай, ако условието 'I==0' е изпълнено, call Program1 ще влезе в кода, а call program2 няма и обратното. Didofen какво имаш предвид под това, че директивите влизат в HEX файла, защото в него има само адреси и съдържание на адресите.


Сря Окт 04, 2006 9:16 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение 
ами искам да кажа, че при асемблирането директивите се вземат под внимание (оказват влияние, управляват), и получения нех файл е в тяхното съответствие. получените адреси и кодове на инструкции "са съобразени" с тях.


Сря Окт 04, 2006 9:25 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 10 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни