sry, is ne gute idee den quellcode mit zusenden..
danke, für den hinweis
///////////////////////////////////////////////////////////////
__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON &
_WDT_OFF &_HS_OSC & _LVP_OFF & _MCLRE_ON & _INTRC_OSC_NOCLKOUT
;=======================================================================
===
; Variable Definition
;=======================================================================
===
; Constanten festlegen
#define LED PORTB
; Variable festlegen
counter equ 0x20 ;
result_l equ 0x22 ;
result_h equ 0x23 ;
;**************************************************************
; Programmanfang
org 0
;**************************************************************
; Initialisierung *********************************************
init
bsf STATUS, RP0 ; Bank 1
clrf OPTION_REG
clrf TRISB ; PortB alle outputs
bcf STATUS, RP0 ; Bank 0
clrf PORTB ; LEDs aus
clrf INTCON ; Interrupt disable
call InitCAdc ; ADC vorbereiten
mainloop ;HIER HABE ICH was verändert
call CAdc ; wandeln
bsf PORTB,4
movlw 625
subwf result_l,1 ; Low-8-Bit an PORTB anzeigen
btfsc STATUS,Z
bsf PORTB,2
btfss STATUS,Z
bcf PORTB,2
goto mainloop
;**************************************************************
; ADC-code aus AN700*******************************************
; initialisierung des adc**************************************
InitCAdc
bsf STATUS, RP0
movlw 0xEC ; Vref ein, Vref zu RA2
movwf VRCON ; LowRangeMode, VR = 12 = 2,5 V
bcf TRISA, 3 ; RA3 output des 'DAC'
bcf STATUS, RP0
movlw 0x06 ; 2 Komparatoren mit Referenzspannung
movwf CMCON ; Comp1 out = RA3
return
;**************************************************************
; Wandeln der spannung*****************************************
CAdc
clrf counter
clrf counter+1
clrf result_l
clrf result_h
movlw 0x03 ; 2 Komparatoren mit Referenzspannung
movwf CMCON
loop
btfsc CMCON, C1OUT ; ist Komparator High oder low
goto complow ; low
comphigh
nop ; high
bcf PORTA, 3 ; 'DAC' = 0
incfsz result_l, f ; zählen der 'Spannung'
goto eat2cycles
incf result_h, f
goto endloop
complow
bsf PORTA, 3 ; 'DAC' = 1
nop
goto eat2cycles
eat2cycles
goto endloop
endloop
incfsz counter, f ; Zahl der Zyklen Zählen
goto eat5cycles
incf counter+1, f
movf counter+1, w
andlw 0x04 ; nur Bit 2 einblenden
btfsc STATUS, Z ; Bit 2 =1 ? 1024 Zyklen vorbei?
goto loop ; nein
goto exit ; ja
eat5cycles
goto $+1
nop
goto loop
exit
movlw 0x06 ; 2 Komparatoren mit Referenzspannung
movwf CMCON ; Comp1 out = RA3
return
end
///////////////////////////////////////////////////////////////////////
hatte es mir sogedacht, ich habe ja den wert vom result_l was meine spg.
angibt. und dort ziehe ich ein wert ab um zu prüfen ob die spg. zu hoch
ist. ich teste das zero flag ob das ergebnis null wird, müsste natürlich
noch prüfen ob ich ein negativ übertrag bekomme, hab ich zwar schon
probiert (aber mein ausgang würde laufend gesetzt) ist in dem quellcode
nicht drin! und zum Z noch mal mein Ausgang kommt auch aber nicht bei
den spg. werten die ich errechnet habe. hier sollte er bei ca. 3V kommen
aber 2,68V spricht er aber an..frage dazu bin ich auf dem richtigen weg
oder habe ich irgendwo ein denk fehler gemacht??
also von können kan keine rede sein, ich stecke sozusagen in den
kinderschuhen, habe in der schule einwenig gemacht mit assambler aber
halt nur angekratzt, so das mir zumin einiges was sagt und ich ungefähr
weiß wie man was machen sollte...C++ hatte ich dagegen ausführlicher
aber würde mich nicht als crack bezeichnen..
ich habe das Bord von Vellman K8084 und habe halt zusätzlich eine selbst
gebaute testplatine