Question about Nigel Goodwins tutorials

Status
Not open for further replies.

sbdwag

New Member
One question about the sample code provided by Nigel Goodwin

at the bottom part of the delay loops the command "goto $+2" ? Where is it going to ?


Regards
Dennis

Delay_0
decfsz counta, f
goto $+2
decfsz countb, f
goto Delay_0

decfsz count1 ,f
goto d1
retlw 0x00

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++



;Tutorial 1.2 - Nigel Goodwin 2002
LIST p=16F628 ;tell assembler what chip we are using
include "P16F628.inc" ;include the defaults for the chip
__config 0x3D18 ;sets the configuration settings (oscillator type etc.)

cblock 0x20 ;start of general purpose registers
count1 ;used in delay routine
counta ;used in delay routine
countb ;used in delay routine
endc

org 0x0000 ;org sets the origin, 0x0000 for the 16F628,
;this is where the program starts running
movlw 0x07
movwf CMCON ;turn comparators off (make it like a 16F84)

bsf STATUS, RP0 ;select bank 1
movlw b'00000000' ;set PortB all outputs
movwf TRISB
movwf TRISA ;set PortA all outputs
bcf STATUS, RP0 ;select bank 0

Loop
movlw 0xff
movwf PORTA ;set all bits on
movwf PORTB
nop ;the nop's make up the time taken by the goto
nop ;giving a square wave output
call Delay ;this waits for a while!
movlw 0x00
movwf PORTA
movwf PORTB ;set all bits off
call Delay
goto Loop ;go back and do it again

Delay movlw d'250' ;delay 250 ms (4 MHz clock)
movwf count1
d1 movlw 0xC7
movwf counta
movlw 0x01
movwf countb
Delay_0
decfsz counta, f
goto $+2
decfsz countb, f
goto Delay_0

decfsz count1 ,f
goto d1
retlw 0x00

end
 
Thanks Ive looked all over for that even spent 60 dollars for a book looking for that. Thought it was refering to a hex location plus two

Got any good sources for answers to questions like this one.

Thanks again

Dennis
 
sbdwag said:
Thanks Ive looked all over for that even spent 60 dollars for a book looking for that. Thought it was refering to a hex location plus two

Got any good sources for answers to questions like this one.

Where it came from, the MPASM helpfile - $ simply refers to the current address - $+1 is a common use, essentially a NOP, but it takes twice as long as a NOP, so it makes a double length NOP.
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…