setfreq m8 'the usual!
disconnect
gosub readbuf
high portc 6
settimer 65531 'this is the line where the program gets stuck.
sertxd ("start!",13,10)
main:
ptr=0
do
'if pin0=1 then gosub readbuf
loop until pin4=b21
timer=0
hspiin (@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptrinc)
w2=timer
for ptr=0 to 126
b0=@ptr
w1=ptr*8
sertxd (#w1,":",#bit7,#bit6,#bit5,#bit4,#bit3,#bit2,#bit1,#bit0,13,10)
if porta pin1=1 then main
if pin0=1 then gosub readbuf
next ptr
w4=w2/25*4
b7=w2//25
select b7
case >6
w4=w4+1
b7=b7*4-25*4
case >12
w4=w4+2
b7=b7*4-50*4
case >18
w4=w4+3
b7=b7*4-75*4
else
b7=b7*16
endselect
sertxd ("time taken: ",w4,".",b7,"ms",13,10)
toflag=0
goto main
Readata:
read 0,word w11
read 2,b21
return
sendata:
sertxd ("read baud rate: ",#b21,": ",#w11,13,10)
return
readbuf:
high portc 7
readoutputs b26
let pins=0
sertxd ("define baud rate: ")
serrxd b27,b23,b24,b25
w11=b23-48*100'b22:b23
b24=b24-48*10
b25=b25-48
w11=w11+b24+b25
select b27
case "r","R"
gosub readata
gosub sendata
sertxd ("cont ")
goto readbuf
case "z","Z"
sertxd ("reconnect - ")
gosub readata
gosub sendata
sertxd ("end program.",13,10)
setfreq m4
reconnect
let pins=0
low portc 4,5,6,7
end
case "n","N"
write 2,1
write 0,w11
sertxd ("recieve N",#w11,", return",13,10)
case "t","T"
write 2,0
write 0,w11
sertxd ("recieve T",#w11,", return",13,10)
else
sertxd ("invalid entry.",13,10,"cont ")
goto readbuf
endselect
gosub readata
low portc 7
hspisetup spimode01, w11
return