www.piclist.com/techref/microchip/time.htm?key=delay

On Fri, 26 May 2000, Tim Hamel wrote:

{Quote hidden}

Sean breaks this down on his site. Perhaps he'll elaborate.

First, there are two nested loops. The inner one:

loop_inner

decfsz some_reg,f

goto loop_inner

The time it takes for this loop to execute depends on the contents of

"some_reg":

some_reg loop time

-----------------------

1 2

2 5

3 8

x 2 + 3*(x-1) 1 <= x <= 255

This says that it takes three cycles for each pass through the loop except for

the very last one which only takes two cycles.

x=0 is a special case. The first time through the loop, x will decrement to 255.

So what happens is that the maximum delay time occurs for x=0. And in fact, the

time for the loop to execute is 2 + 3*(256-1) cycles. So for x=0 you substitute

x=256 and the general formula:

loop_time = 2 + 3*(x-1)

still applies.

The outer loop can be abstracted like so:

loop_outer:

<some pic code>

decfsz some_other_reg,f

goto loop_outer

In other words, it's structurally identically to the inner loop with some extra

code in the loop. Let's say that the time for this extra code to execute is

'Q'. Then the total time for the outer loop is:

some_other_reg loop time

-----------------------------

1 Q + 2

2 2*Q + 5

3 3*Q + 8

y y*Q + 2 + 3*(y-1) 1 <= y <= 255

The same caveat for y = 0 applies. This equation can be simplified:

outer_loop_time = y*(Q+3) + 2 - 3

= y*(Q+3) - 1

Now to combine the two loops, all we have to do is find the value for Q. This is

the time it take for this snippet to execute:

> Pause Movlw "value2"

> Movwf N

>

> Delay1 Decfsz N

> goto Delay1

There are two cycles for initializing N and then there's the loop. So the total

time is:

Q = 2 + (2 + 3*(N-1)) , 1 <= N <= 255

= 4 + 3*N - 3

= 1 + 3*N

The total time for both loops is:

total = M*(Q+3) - 1 , 1 <= M <= 255

= M*(1+3*N +3) - 1

= 3*M*N + 4*M - 1

(keep in mind, if M or N is 0 then we need to replace the 0 with 256)

Benson is wrong.

Scott

> some kind soul break down into bits and pieces so I could figure it out? I'm

> going to be doing a weather project, and I'm sure I'll need this knowledge.

> Hopefully, I'll be able to complete the project without being dependant on

> you guys =)

Is this why it's so hard to predict the weather?

In reply to: <98.579298f.265f8979@aol.com>

See also: www.piclist.com/techref/microchip/time.htm?key=delay