как се смята delay loop time в assembler

4 отговора 0 прегледа
#1

как се смята delay loop time в assembler

здр.
вапроса ми е към хората, които се занимават с програмиране.
Търся формула с която да мога да изчислява delay loop time в assembler /става дума за pic микроконтролери/.
ето два фрагмента:
/1/
vreme: movlw D'брои цикли'
movwf K
kloop: decfsz K,f
goto kloop
return
------------------------------
/2/
vreme: movlw D'брои цикли'
movwf J
movwf K
kloop: decfsz K,f
goto kloop
decfsz J,f
goto jloop
return
-----------------------------
K и J са клетки, които сам дефинирал в началото на програмата

Отговор
в отговор на noovas #2

Re: как се смята delay loop time в assembler

първото извикано като подпрограма прави 3*(D'брои цикли')+3 микросекунди при 4 МХц
плюс 2 микросекунди за:
vreme: movlw D'брои цикли'
movwf K
които са преди това.

Във втория пример липсва етикета jloop , ако е преди decfsz J,f ще станат
6*(D'брои цикли')+2 микросекунди при 4МХц или все едно имаш два цикъла един след друг = 2 пъти повече време.
Също не е сметнато:
vreme: movlw D'брои цикли'
movwf J
movwf K

които са още 3 микросекунди еднократно

Отговор
в отговор на spazio #3

Re: как се смята delay loop time в assembler

във втория случай наистина сам изпуснал единия етикет, но идеята ми е тои да се намира пред movwf K или:

movlw D' цикал'
movwf J
jloop: movwf K
kloop: decfsz K,f
goto kloop
decfsz J,f
goto jloop
return
-----------

Редактирано от noovas на

Отговор
в отговор на noovas #4

Re: как се смята delay loop time в assembler

3*'цикал'^2 + 6*'цикал' +3
но jloop трябва да е в началото

Отговор
в отговор на spazio #5

Re: как се смята delay loop time в assembler

Освен както описаха колегите , да си е сметнеш по инструкции което никак не е трудно ... МPLAB ,предлага функцията simulation trace . С нея става ного лесно правиш стоиноста която се променя на 1 и така после получените
микросекунди или брои цикли както искаш така ... ги умножаваш по числото което ще запишеш като стойност и получаваш точно колко ще ти отнеме
като време тая подпрограма за закъснение .
или обратното нужната за теб стоиност е намираш като разделиш времето което ти е необходимо на пауза по това на подпрограмата за 1 изведена от мплаба .

Отговор