Parece ser un problema de circuito como te dijo Robert76.
Lo que si deberias acostumbrarte en CCS que no se usan los registros directamente, casi siempre hay una funcion para eso.
Tambien deberias acostumbrarte a identar tu codigo.
Y finalmente en caso de pines analogicos, deberias pasarlos a digitales si queres usarlos como estos.
Tu mismo codigo usando las funciones que provee CCS:
#include <16F887.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
int main (void){
SET_TRIS_A(0);
SET_TRIS_B(0);
SET_TRIS_C(0);
SET_TRIS_D(0x06);
SET_TRIS_E(0);
output_a(0);
output_b(0);
output_c(0);
output_d(0);
output_e(0);
for(;;){
if(input(pin_D2)==1){
for(int i=0;i<50;i++){
output_high(pin_D2);
delay_ms(1);
output_low(pin_D2);
delay_ms(19);
}
if(input(pin_D1)==1){
for(int i=0;i<50;i++){
output_high(pin_D2);
delay_ms(2);
output_low(pin_D2);
delay_ms(18);
}
}
}
}
}