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
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