AD Wandler => Ausgabe Probleme
Montag, 21. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache Assembler  |  AD-Wandler (Assembler)  |  AD Wandler => Ausgabe Probleme « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: AD Wandler => Ausgabe Probleme  (Gelesen 2385 mal)
 
Rising
Newbie
*
Offline Offline

Beiträge: 38


Profil anzeigen
« am: Juli 22, 2007, 18:12:02 »

Hallo zusammen,

hoffe ihr könnt mir weiterhelfen.

mein Problem ist es, das wenn ich den AD- Wandler einlese und auf mein Port C ausgeben will (8 LED's angeschlossen) entweder 00000000 (AD Wert 16) angezeigt wird oder 00111111 (AD Wert 17).

Das ganze hab ich mit vergleich befehlen gelöst

z.B.

f< 28 = 00000001
f< 56 = 00000011
ect.

Hoffe ihr könnt mir helfen poste noch den quell text





Code:
LIST P=18F252
              NOLIST

include "p18f252.inc"

;****************************************************
;   konstante Werte : Definitionen                  *
;****************************************************

AAAA EQU D'255'
BBBB EQU D'224'
CCCC EQU D'196'
DDDD EQU D'168'
EEEE EQU D'140'
FFFF EQU D'112'
GGGG EQU D'084'
HHHH EQU D'056'
IIII EQU D'028'


;****************************************************
;    Globale Variablen : Definitionen               *
;****************************************************
UDATA_ACS
Port_C_count RES 1
Port_C_dir RES 1
Timer_Upper RES 1
Timer_High RES 1
Timer_Low RES 1
Port_A RES 1
Port_B RES 1
Port_A_choise_new RES 1
Port_A_choise_old RES 1
Port_A_choise RES 1
Port_C_tmp RES 1
ERGB RES 1
Temp_Reg RES 1
TEMP RES 1
W_TEMP RES 1
STATUS_TEMP RES 1
BSR_TEMP RES 1
ZREG1 RES 1
ZREG2 RES 1


STARTUP CODE H'0000' ; reset vector
 bra hardw_init


CODE



;**************************************************************
;    Programm Name: void  hardw_init(void)                    *
;    Funktion:  Initialisierung der Hardware                  *
;**************************************************************
hardw_init
;         Initialisierung der Ports : PORTA,PORTB,PORTC

                MOVLW     0x0e        ;ADCON1=0x0e: PA.7..1 Dig,PA0 Analog
                MOVWF     ADCON1,A  ;A_Wert left justified,Conv_clk=Fosc/2
                SETF      TRISA,A    ;TRISA=0xff  PA.7..0 Inputs
                SETF      TRISB,A    ;TRISB=0xff  PB.7..0 Inputs
                CLRF      TRISC,A    ;TRISC=0x00  PC.7..0 Outputs

;         Initialisierung des AD-Wandlers

                MOVLW     0x01 ;ADCON0=0x01:Conv_clk=Fosc/2
                MOVWF     ADCON0,A  ;Eingangskanal CH0

                CLRF   PORTC ; alle LEDs löschen
        CLRF   ERGB
        CLRF   ADRESH

                BRA   PC_ad



 

PC_ad
  BSF     ADCON0,GO_DONE,A ;CH0 Messung starten
loop_ad
BTFSC     ADCON0,GO_DONE,A ;Messung abgeschlossen?
              goto     loop_ad
              MOVF      ADRESH,0
MOVWF ERGB


VERGL
MOVF ERGB
CPFSLT AAAA
GOTO AUSGA
MOVF ERGB

CPFSLT BBBB
GOTO AUSGB
MOVF ERGB

CPFSLT CCCC
GOTO AUSGC
MOVF ERGB

CPFSLT DDDD
GOTO AUSGD
MOVF ERGB

CPFSLT EEEE
GOTO AUSGE
MOVF ERGB

CPFSLT FFFF
GOTO AUSGF
MOVF ERGB

CPFSLT GGGG
GOTO AUSGG
MOVF ERGB

CPFSLT HHHH
GOTO AUSGH
MOVF ERGB

CPFSLT IIII
GOTO AUSGI
GOTO PC_ad

AUSGA
MOVLW B'00000000'
MOVWF PORTC
GOTO PC_ad

AUSGB
MOVLW B'00000001'
MOVWF PORTC
GOTO PC_ad

AUSGC
MOVLW B'00000011'
MOVWF PORTC
GOTO PC_ad

AUSGD
MOVLW B'00000111'
MOVWF PORTC
GOTO PC_ad

AUSGE
MOVLW B'00001111'
MOVWF PORTC
GOTO PC_ad

AUSGF
MOVLW B'00011111'
MOVWF PORTC
GOTO PC_ad

AUSGG
MOVLW B'00111111'
MOVWF PORTC
GOTO PC_ad

AUSGH
MOVLW B'01111111'
MOVWF PORTC
GOTO PC_ad

AUSGI
MOVLW B'11111111'
MOVWF PORTC
GOTO PC_ad

    END
Gespeichert
Hagi
Full Member
***
Offline Offline

Beiträge: 201


Profil anzeigen WWW
« Antworten #1 am: Juli 22, 2007, 18:46:57 »

Bei den mov-Befehlen mußt du auch das Zielregister (f, w) angeben.
Ohne Angabe wird das Default-Register (f) genommen.
Falls diese Angabe fehlt, zeigt dir der Compiler (MPLAB IDE)  sogar eine Warnung an.

Außerdem vergleichen die cp-Befehle das w-Register mit dem Inhalt eines Registers/einer Speicherzelle.
Der Register-Parameter ist bei dir aber eine Konstante! Das kann nicht funktionieren.
Im Datenblatt zum PIC findest du unter INSTRUCTION SET SUMMARY die Beschreibung aller Befehle.

Versuch es doch einmal so:
Code:
VERGL
      movlw   AAAA
      cpfslt  ERGB

Die passenden CP-Befehle mußt du natürlich noch einsetzen.
Gespeichert

Rising
Newbie
*
Offline Offline

Beiträge: 38


Profil anzeigen
« Antworten #2 am: Juli 22, 2007, 19:23:18 »

1000 dank  :mrgreen: hat geklappt =)=)=)

Gruß Rising
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.042 Sekunden mit 19 Zugriffen.
 
Top! Top!