Hallöchen,

also direkt über die Register zu gehen, ist natürlich möglich und auch ganz hübsch und man hat die höchstmögliche Kontrolle, allerdings auch nicht flotter als Bascom im FREE Modus:

Code:
'$regfile = "m8def.dat"
$regfile = "m168def.dat"
'$regfile = "m32def.dat"
$crystal = 7372800
'$crystal = 14745600
'$crystal = 16000000

$baud = 9600

$hwstack = 64
$swstack = 64
$framesize = 64

$lib "mcsbyteint.lbx"
Config Adc = Free , Prescaler = Auto
Config Pind.3 = Output

Dim Value0 As Word
Dim Value1 As Word
'-------------------------------------------------------------------------------
nop
nop
nop
nop
nop
Start Adc

Do
Set Portd.3                                  'ggf. für Oszi-überwachung
Value0 = Getadc(0)
Value1 = Getadc(1)
Reset Portd.3
Loop
nop
nop
nop
nop
End

'Im FREE Modus (ADC triggert sich ständig selbst) ------------------------------
'
'kurz und knackig, allerdings werden u.U. Werte mehrmals gelesen...

'+0000005a : 9170007a Lds R23 , 0x007a Load Direct From Data Space
'+0000005C:   6870        ORI     R23,0x80         Logical OR with immediate
'+0000005D:   9370007A    STS     0x007A,R23       Store direct to data space
'
'
'+0000005F:   9A5B        SBI     0x0B,3           Set bit in I/O register
'+00000060:   E080        LDI     R24,0x00         Load immediate
'+00000061:   9380007C    STS     0x007C,R24       Store direct to data space
'+00000063:   91800078    LDS     R24,0x0078       Load direct from data space
'+00000065:   91900079    LDS     R25,0x0079       Load direct from data space
'+00000067:   E0AF        LDI     R26,0x0F         Load immediate
'+00000068:   E0B1        LDI     R27,0x01         Load immediate
'+00000069:   938D        ST      X+,R24           Store indirect and postincr
'+0000006A:   939C        ST      X,R25            Store indirect
'+0000006B:   E081        LDI     R24,0x01         Load immediate
'+0000006C:   9380007C    STS     0x007C,R24       Store direct to data space
'+0000006E:   91800078    LDS     R24,0x0078       Load direct from data space
'+00000070:   91900079    LDS     R25,0x0079       Load direct from data space
'+00000072:   E1A1        LDI     R26,0x11         Load immediate
'+00000073:   E0B1        LDI     R27,0x01         Load immediate
'+00000074:   938D        ST      X+,R24           Store indirect and postincr
'+00000075:   939C        ST      X,R25            Store indirect
'+00000076:   985B        CBI     0x0B,3           Clear bit in I/O register
'+00000077:   940C005F    JMP     0x0000005F       Jump



'Im SINGLE Modus --------------------------------------------------------------
'Hier wird's dann lang und umständlich, dafür ist aber das Ergebnis garantiert
'richtig.


'+0000005A:   9170007A    LDS     R23,0x007A       Load direct from data space
'+0000005C:   6870        ORI     R23,0x80         Logical OR with immediate
'+0000005D:   9370007A    STS     0x007A,R23       Store direct to data space
'+0000005F:   9A5B        SBI     0x0B,3           Set bit in I/O register
'+00000060:   E080        LDI     R24,0x00         Load immediate
'+00000061:   9380007C    STS     0x007C,R24       Store direct to data space
'+00000063:   940E0084    CALL    0x00000084       Call subroutine
'+00000065:   E0AF        LDI     R26,0x0F         Load immediate
'+00000066:   E0B1        LDI     R27,0x01         Load immediate
'+00000067:   938D        ST      X+,R24           Store indirect and postincr
'+00000068:   939C        ST      X,R25            Store indirect
'+00000069:   E081        LDI     R24,0x01         Load immediate
'+0000006A:   9380007C    STS     0x007C,R24       Store direct to data space
'+0000006C:   940E0084    CALL    0x00000084       Call subroutine
'+0000006E:   E1A1        LDI     R26,0x11         Load immediate
'+0000006F:   E0B1        LDI     R27,0x01         Load immediate
'+00000070:   938D        ST      X+,R24           Store indirect and postincr
'+00000071:   939C        ST      X,R25            Store indirect
'+00000072:   985B        CBI     0x0B,3           Clear bit in I/O register
'+00000073:   940C005F    JMP     0x0000005F       Jump
'+00000075:   0000        NOP                      No operation
'+00000076:   0000        NOP                      No operation
'+00000077:   0000        NOP                      No operation
'+00000078:   0000        NOP                      No operation
'+00000079:   94F8        CLI                      Global Interrupt Disable
'+0000007A:   CFFF        RJMP    PC-0x0000        Relative jump
'+0000007B:   9731        SBIW    R30,0x01         Subtract immediate from word
'+0000007C:   F7F1        BRNE    PC-0x01          Branch if not equal
'+0000007D:   9508        RET                      Subroutine return
'+0000007E:   9468        SET                      Set T in SREG
'+0000007F:   F862        BLD     R6,2             Bit load from T to register
'+00000080:   9508        RET                      Subroutine return
'+00000081:   94E8        CLT                      Clear T in SREG
'+00000082:   F862        BLD     R6,2             Bit load from T to register
'+00000083:   9508        RET                      Subroutine return
'+00000084:   9180007A    LDS     R24,0x007A       Load direct from data space
'+00000086:   6C80        ORI     R24,0xC0         Logical OR with immediate
'+00000087:   9380007A    STS     0x007A,R24       Store direct to data space
'+00000089:   9180007A    LDS     R24,0x007A       Load direct from data space
'+0000008B:   FD86        SBRC    R24,6            Skip if bit in register clear
'+0000008C:   CFFC        RJMP    PC-0x0003        Relative jump
'+0000008D:   91800078    LDS     R24,0x0078       Load direct from data space
'+0000008F:   91900079    LDS     R25,0x0079       Load direct from data space
'+00000091:   9508        RET                      Subroutine return
'+00000092:   0078        ???                      Data or unknown opcode
'+00000093:   91900079    LDS     R25,0x0079       Load direct from data space
'+00000095:   9508        RET                      Subroutine return
An den NOPS bitte nicht stören, die sind nur drin, damit ich die richtige Stelle im Disassembler schnell finde.

Kommt man mit 8 Bit Auflösung aus, kann das nochmal deutlich flotter werden (Leftadjust wählen und nur ADCH auslesen). Im FREE-Modus kommt man auf max ~ 15kHz Abtastrate, mit 8Bit pi mal Daumen auf max. ~ 22 kHz.

Grüße
Henrik