Hi Michael,
erst mal Danke für Deine Antwort!
Ich versuche mal, ein Stück vom Quelltext hier reinzuschreiben:
movlw b'10100000' ;Timerinterrupt (10100000)
movwf INTCON ;aktivieren
movlw b'10000100' ;Vorteiler 32
movwf OPTION\_REG ;
bcf STATUS,RP0 ;Register Bank 0
movlw .96 ;Teiler setzen
movwf TMR0 ;
bcf STATUS,C ;Carryflag rücksetzen
;16F877: alle ADC-Eingänge auf digital I/O umschalten
BSF STATUS, RP0 ;auf Bank 1 umschalten
BCF STATUS, RP0 ;auf Bank 0 zurückschalten
movlw b'00000000' ;
movwf TRISC ;
movwf TRISD ;
;---------------------------------------------------------------------
bsf STATUS,RP0
clrf TRISC
clrf TRISD
movlw b'00000000'
movwf ADCON1
bsf TRISA,0
bcf STATUS,RP0
movlw b'10011000'
movwf ADCON0
clrf PORTC
clrf PORTD
BSF STATUS, RP0 ; Select Bank1
CLRF ADCON1 ; Configure A/D inputs
BSF PIE1, ADIE ; Enable A/D interrupts
BCF STATUS, RP0 ; Select Bank0
MOVLW 0xC1 ; RC Clock, A/D is on, Channel 0 is selected
MOVWF ADCON0 ;
BCF PIR1, ADIF ; Clear A/D interrupt flag bit
BSF INTCON, PEIE ; Enable peripheral interrupts
BSF INTCON, GIE ; Enable all interrupts
;---------------------------------------------------------------------
BSF STATUS,RP0 ; Bank1
BCF ADCON1, 7 ; ADFM=0
BCF STATUS,RP0 ; Bank0
;---------------------------------------------------------------------
Main
;Eingangsspannung wandeln
BSF ADCON0, 2 ; ADC starten
loop
BTFSC ADCON0, 2 ; ist der ADC fertig?
GOTO loop ; nein, weiter warten
; Wert nach ausw schreiben
movfw ADRESH ; obere 8 Bit auslesen
movwf ausw ; obere 8-Bit nach ausw, das ist die ;Übergabe ins Hauptprogramm
; Warten, damit der ADC sich erholen kann
clrf wait
warten
DECFSZ wait, f
goto warten
btfsc ausw,0 ;den brauche ich fürs Hauptprogramm
call L0 ;ist 'ne Verzweigung
;später kommen dann noch mehrere dazu
goto Main
Ich danke Dir erstmal für Deine Mühe!
cu, jo-enn
MOD(TOO) pre-Tag eingefügt