Habe eine frage,
Habe an einem Pic eine Sensorenspannung von 0 bis 5 V anliegen.
Diese muss ausgewertet werden.
Bei einer Reichweite von 10 cm gibt der Sensor eine Spannung von 5 V aus.
Nun möchte ich mit Hilfe des Pics 16f877, diese Spannung auswerten.
Bei diesem Code wird immer wieder das Zero Flag überprüft. Da sich die Spannung immer um ein paar mV veränder und nie konstant ist, ist das Zero flag auch nur einen kurzen Moment gesetzt.Code:;*********************************************************** ;* Name : LCD Datum: 05.03.2008 * ;* ------------ * ;* Funktion : sensor * ;* * ;* Autor : * ;*********************************************************** LIST p=16F877 ; TAB - otherwise: unnecessary warning #include <p16F877.inc> ;__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _LVP_OFF & _BODEN_OFF __CONFIG 0x3F39 ERRORLEVEL -302 ADW_1 EQU 0x31 Initialisierung: bsf STATUS,RP0 clrf TRISB bsf TRISA,0 bcf STATUS,RP0 clrf PORTB movlw B'00000000' movwf ADCON1 Main_1 ; ADC-Vorbereitungen: ; ADC einschalten bsf ADCON0, 0 ; ADON=1 ; ADC speed für (fosc/32) MHz einstellen bsf ADCON0, 7 ; ADCS1=1 bcf ADCON0, 6 ; ADCS0=0 Haupt: clrf PORTB bcf PORTB,4 clrf ADW_1 bcf ADCON0, 5 bcf ADCON0, 4 bcf ADCON0, 3 call Verzögerung_100us bsf ADCON0, 2 warte_auf_ADW: btfsc ADCON0, 2 goto warte_auf_ADW movf ADRESH,W movwf ADW_1 movlw D'100' subwf ADW_1,W btfss STATUS,Z goto Test goto Haupt Test bsf PORTB,4 call Verzögerung_1s call Verzögerung_1s call Verzögerung_1s ;call Verzögerung_1s ;call Verzögerung_1s goto Haupt #include "VERZ/Verz_A.inc" end
es sollte aber länger gesetzt sein. damit an einem Portpin ein High signal ausgegeben werden kann
WIe kann ich das realisieren bzw. den code umstellen







Zitieren
Lesezeichen