problem mit adc beim 12f683
Montag, 21. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache Assembler  |  AD-Wandler (Assembler)  |  problem mit adc beim 12f683 « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: problem mit adc beim 12f683  (Gelesen 2557 mal)
 
spec
Gast
« am: Dezember 23, 2005, 11:06:50 »

hallo,
ich wollte zum test mal den adc wert über rs232 ausgeben. das funtzt auch aber ob ich nun die spannung verändere oder nicht es ist immer der selbe adc wert der ausgegeben wird.
wo kann der fehler liegen?

mfg spec

Code:
Init
;12F683 alle Comparator-/ADC-Eingänge auf Digital umschalten
; beginnt in der Bank 0

BCF STATUS,RP0          ;Bank 0
CLRF GPIO                     ;Init GPIO
MOVLW 07h                    ;Set GP<2:0> to
MOVWF CMCON0          ;digital I/O
MOVLW 01h                    ;Right, Vdd Vref, AN0
MOVWF ADCON0
BSF STATUS,RP0          ;Bank 1
MOVLW 51h                    ;Set GP<1> to
MOVWF ANSEL              ;digital I/O
MOVLW 01h                    ;Set GP<1> as output
MOVWF TRISIO            
BCF STATUS,RP0          ;Bank 0

; interner Taktgenerator
        bsf     STATUS, RP0             ; Bank 1
        movlw   B'01100101'
        movwf   OSCCON                  ; 4-MHz
        bcf     STATUS, RP0             ; Bank 0



Main

              BSF ADCON0,GO ;Start conversion
             
Next
              BTFSC ADCON0,GO ;Is conversion done?
              GOTO Next

                movfw ADRESH ; es soll z.B. der Buchstabe'A' gesendet werden
call Send_RS ; Datenwort ausgeben via RS-232
               
goto Main
;***************************************************************

;senden des Bytes, das im Register W steht

Send_RS ; Ausgabe eines Bytes seriell
movwf Byte ; Byte in w
movlw 8 ; es werden 8 Bit gesendet
movwf cycl_1
bcf GPIO,2
call Warte_s ; 1 Stopbit (1)
bsf GPIO,2
call Warte_s ; 1 Startbit (0)

Send_1 rrf Byte, f ; aktuelles Bit in das Carry-Flag schieben
btfsc STATUS, C
bcf GPIO,2 ; Lo wenn Bit = 1
btfss STATUS, C
bsf GPIO,2 ; Hi wenn Bit = 0
call Warte_s ; 1 Bit lang warten
decfsz cycl_1, f ; waren das schon 8 Bit?
goto Send_1 ; nein, es geht weiter
bcf GPIO,2 ; Byte zuende, 1 Stoppbit (1) senden
call Warte_s ;
return

;**********************************************************
;ein Bit Zeitverzoegerung mit einer Warteschleife
; Timing muß genau stimmen (5%)
;
; senden            4 MHz    10 MHz
; 2400 Bps =          69d    173d
; 9600 Bps =          16d     43d

Warte_s movlw D'16' ; 9600 Bps / 4 MHz senden
movwf cycl_2
Warte1 ; 6 Zyklen Schleife
nop
nop
nop
decfsz cycl_2, 1
goto Warte1
return

end
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #1 am: Dezember 23, 2005, 17:00:08 »

Zitat
wo kann der fehler liegen?

Meines Erachtens nicht am Code. Der ist korrekt und funktioniert auch im Simulator. Ich würde noch mal die Hardware überprüfen (steht die Spannung wirklich am Pin AN0/GP0 an?).
 

Viele Grüße

Bernd
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.231 Sekunden mit 21 Zugriffen.
 
Top! Top!