Für Port A mußt Du neben der Richtung (Eingang oder Ausgang) auch noch initialisieren, welcher Pin analog bleibt und welcher Pin digital werden soll:
PortA Bit 4 (RA4) ist nur digital, deshalb funktioniert der auch immerCode:; ----------------------------------------------- ; ADCON1 (Bank 1) AD Control-Register 1 : ; 7 Result Format 8 Bits in ADRESH / 2 Bits in ADRESL(7..6 000000) ; 6-4 - ; 3-0 Port Config ; an7 an6 an5 AN4 AN3 AN2 AN1 AN0 Ref+ Ref- ; Bits RE2 RE1 RE0 RA5 RA3 RA2 RA1 RA0 ; 0000 A A A A A A A A Vdd Vss ; 0001 A A A A Ref+ A A A RA3 Vss ; 0010 D D D A A A A A Vdd Vss ; 0011 D D D A Ref+ A A A RA3 Vss ; 0100 D D D D A D A A Vdd Vss ; 0101 D D D D Ref+ D A A RA3 Vss ; 011x D D D D D D D D Vdd Vss ; 1000 A A A A Ref+ Ref- A A RA3 RA2 ; 1001 D D A A A A A A Vdd Vss ; 1010 D D A A Ref+ A A A RA3 Vss ; 1011 D D A A Ref+ Ref- A A RA3 RA2 ; 1100 D D D A Ref+ Ref- A A RA3 RA2 ; 1101 D D D D Ref+ Ref- A A RA3 RA2 ; 1110 D D D D D D D A Vdd Vss ; 1111 D D D D Ref+ Ref- D A RA3 RA2 ; ----------------------------------------------- movlw 00000010b ; 0 = Result format = Left ; 0010 = Analog RA0-RA3 & RA5 ; = Digital RA4,RE0-RE2 movwf ADCON1![]()
Edit: Mit Brille wär das nicht passiert: Du hast ja ADCCON1 gesetzt und auch vorher auf Bank 1 umgeschaltet.
Hast Du ganz am Anfang:
include "p16f877a.inc" ; Registerdefinitionen einbinden
und
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF & _DEBUG_OFF







Zitieren

Lesezeichen