Hi all,
Darrell mentioned in his first post that EXT will not work with arrays,
Can anyone suggest an elegant way to receive serial BYTE data in and convert it to WORD data and then sort it? Obviously, this won't work and to do it straight-line would be a mess.
Code:
ByteData var byte[32] BANK0
ASM
Arg0 = _ByteData ; word
Arg1 = _ByteData + 2 ; word
Arg2 = _ByteData + 4 ; word
Arg3 = _ByteData + 6 ; word
Arg4 = _ByteData + 8 ; word
Arg5 = _ByteData + 10 ; word
Arg6 = _ByteData + 12 ; word
Arg7 = _ByteData + 14 ; word
Arg8 = _ByteData + 16 ; word
Arg9 = _ByteData + 18 ; word
Arg10 = _ByteData + 20 ; word
Arg11 = _ByteData + 22 ; word
Arg12 = _ByteData + 24 ; word
Arg13 = _ByteData + 26 ; word
Arg14 = _ByteData + 28 ; word
Arg15 = _ByteData + 30 ; word
ENDASM
Arg0 VAR WORD EXT
Arg1 VAR word EXT
Arg2 VAR WORD EXT
Arg3 VAR WORD EXT
Arg4 VAR word EXT
Arg5 VAR WORD EXT
Arg6 VAR word EXT
Arg7 VAR WORD EXT
Arg8 VAR WORD EXT
Arg9 VAR word EXT
Arg10 VAR WORD EXT
Arg11 VAR word EXT
Arg12 VAR WORD EXT
Arg13 VAR WORD EXT
Arg14 VAR word EXT
Arg15 VAR word EXT
...........
'***Sort Array SUB ** collects 16 readings, sorts, and averages middle 8 ******
SortArray:
CounterA=0
SortLoop: ' sorts 16 readings of RawData in order
If Arg(CounterA+1) < Arg(CounterA) then
DataA=Arg(CounterA)
Arg(CounterA)=Arg(CounterA+1)
Arg(CounterA+1+0)=DataA
If CounterA > 0 then CounterA=CounterA-2
endif
CounterA=CounterA+1
If CounterA < 15 then goto SortLoop
Thanks
Bo
Bookmarks