580 likes | 919 Views
Branching and Looping. Chapter 5. Branching and Looping. 68HC12 Branch Instructions WHYP Branching and Looping Words Recursion in WHYP. Branch Displacement. Negative Branch. Branch on Z flag. Branch on Z flag. Branch on Z flag. Branch on N flag. Branch on N flag.
E N D
Branching and Looping Chapter 5
Branching and Looping • 68HC12 Branch Instructions • WHYP Branching and Looping Words • Recursion in WHYP
Branching and Looping • 68HC12 Branch Instructions • WHYP Branching and Looping Words • Recursion in WHYP
WHYP Branching and Looping Words • IF…ELSE…THEN • FOR…NEXT • BEGIN…AGAIN • BEGIN…WHILE…REPEAT • DO…LOOP
TRUE = -1 FALSE = 0
IF…ELSE…THEN <cond> IF <true statements> ELSE <false statements> THEN
TRUE iftest true statements next statements FALSE iftest next statements
TRUE if.else.test true statements next statements FALSE if.else.test false statements next statements
FOR…NEXT Loop n FOR <WHYP statements> NEXT
FOR…NEXT Delay Loop 8 MHz clock: #ms = #clock_cycles/8 = 7.75 +1.375*N N = (#ms - 7.75)/1.375 Ex: 50 ms delay: N = (50000 - 7.75)/1.375 = 36358
Longer Delays Note: A 10 second delay on the MC68HC12A4EVB takes about 17 seconds because one wait state has been added to each access to external RAM. The 68HC11 takes over twice as long to execute the same delay instructions.
BEGIN…AGAIN BEGIN <WHYP statements> AGAIN
BEGIN…UNTIL BEGIN <WHYP statements> <flag> UNTIL
BEGIN…WHILE…REPEAT BEGIN <words> <flag> WHILE <words> REPEAT
DO…LOOP <limit> <index> DO <WHYP statements> LOOP Moves <limit> and <index> to return stack Increments <index> on return stack and loops back to <WHYP statements> if <index> is less than <limit>, else pop <limit> and <index> from return stack and exit loop
DO…LOOP The WHYP word I copies the index value from the return stack to the top of the parameter stack. : test ( -- ) 11 1 DO I . LOOP ; will print 1 2 3 4 5 6 7 8 9 10
The Word LEAVE Exits a DO loop prematurely