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