It would appear as though the compiler does not interpret the address of the label in the asm area
Code: Select all
resamplesynch1:
temp = testbit(CMCON, 6)
if temp = 1 then
goto resamplesynch1
end if
clearbit(portb, 0)
resamplesynch2: 'time delay on horizontal scan line
cycle = cycle + 1
if cycle < l0 then
goto resamplesynch2
end if
linedelay = l0
asm
dolinedelay:
DEC _linedelay, _linedelay
BRA NZ, dolinedelay
exitlinedelay:
end asm
'clearbit(portb, 0)
'clearbit(portb, 0)
setbit(portb, 0)
setbit(portb, 0)
clearbit(portb,0)
Translates into
$D760 $ _main_resamplesynch1:
;gpstracker54telsie.dbas,7929 :: temp = testbit(CMCON, 6)
$D760 $803182 MOV CMCON, W2
$D762 $200400 MOV #64, W0
$D764 $610100 AND W2, W0, W2
$D766 $200060 MOV #6, W0
$D768 $DE1100 LSR W2, W0, W2
$D76A $21A410 MOV #@_temp, W0
$D76C $784802 MOV.B W2, [W0]
;gpstracker54telsie.dbas,7930 :: if temp = 1 then
$D76E $514061 SUB.B W2, #1, W0
$D770 $3A0002 BRA NZ gpstracker54telsie_L_2254, gpstracker54telsie_L_2254
$D772 $ gpstracker54telsie_L_2253:
;gpstracker54telsie.dbas,7931 :: goto resamplesynch1
$D772 $04D760 GOTO _main_resamplesynch1
$D776 $ gpstracker54telsie_L_2254:
;gpstracker54telsie.dbas,7932 :: end if
$D776 $ gpstracker54telsie_L_2255:
;gpstracker54telsie.dbas,7933 :: clearbit(portb, 0)
$D776 $2FFFE2 MOV #65534, W2
$D778 $202C80 MOV #@PORTB, W0
$D77A $610810 AND W2, [W0], [W0]
;gpstracker54telsie.dbas,7935 :: resamplesynch2: 'time delay on horizontal scan line
$D77C $ _main_resamplesynch2:
;gpstracker54telsie.dbas,7936 :: cycle = cycle + 1
$D77C $200012 MOV #1, W2
$D77E $EB0180 CLR W2+2
$D780 $21CB80 MOV #@_cycle, W0
$D782 $410230 ADD W2, [W0++], W4
$D784 $4982A0 ADDC W2+2, [W0--], W4+2
$D786 $88E5C4 MOV W4, _cycle
$D788 $88E5D5 MOV W4+2, _cycle+2
;gpstracker54telsie.dbas,7937 :: if cycle < l0 then
$D78A $80EF32 MOV _l0, W2
$D78C $EB0180 CLR W2+2
$D78E $520002 SUB W4, W2, W0
$D790 $5A8003 SUBB W4+2, W2+2, W0
$D792 $310002 BRA GEU gpstracker54telsie_L_2257, gpstracker54telsie_L_2257
$D794 $ gpstracker54telsie_L_2256:
;gpstracker54telsie.dbas,7938 :: goto resamplesynch2
$D794 $04D77C GOTO _main_resamplesynch2
$D798 $ gpstracker54telsie_L_2257:
;gpstracker54telsie.dbas,7939 :: end if
$D798 $ gpstracker54telsie_L_2258:
;gpstracker54telsie.dbas,7941 :: linedelay = l0
$D798 $80EF30 MOV _l0, W0
$D79A $891DC0 MOV W0, _linedelay
;gpstracker54telsie.dbas,7943 :: dolinedelay:
$D79C $ DOLINEDELAY:
;gpstracker54telsie.dbas,7944 :: DEC _linedelay, _linedelay
$D79C $E917DC DEC _LINEDELAY, _LINEDELAY
;gpstracker54telsie.dbas,7945 :: BRA NZ, dolinedelay
$D79E $3AFFFE BRA NZ NZ, DOLINEDELAY <<<<< This address is incorrect.
;gpstracker54telsie.dbas,7946 :: exitlinedelay:
$D7A0 $ EXITLINEDELAY:
;gpstracker54telsie.dbas,7950 :: setbit(portb, 0)
$D7A0 $801640 MOV PORTB, W0
$D7A2 $700061 IOR W0, #1, W0
$D7A4 $881640 MOV W0, PORTB
;gpstracker54telsie.dbas,7951 :: setbit(portb, 0)
$D7A6 $700261 IOR W0, #1, W4
$D7A8 $881644 MOV W4, PORTB
;gpstracker54telsie.dbas,7952 :: clearbit(portb,0)
$D7AA $2FFFE2 MOV #65534, W2
$D7AC $202C80 MOV #@PORTB, W0
$D7AE $620802 AND W4, W2, [W0]
Is there a way to get paramater driven sub 1uSecond delays (+- 200nS increments)