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:
Code:
; -----------------------------------------------
; 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
PortA Bit 4 (RA4) ist nur digital, deshalb funktioniert der auch immer 
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
Lesezeichen