Hola Jose y bienvenido.
Creo que deberias utilizar XC8 y no C18. Junto con MPLAB X. Aunque sea la version FREE es suficiente para la mayoria de las personas.
C18 es obsoleto y se cambio por XC8 ya hace un tiempo. Creo que ademas XC8 ya cumple con los estandares de C99.
Con respecto al ds1804 es bastante simple de manejar.
Tenes 3 pines que debes conectar a tu PIC.
El primero es el CS , ese pin cuando tiene un 0 ( 0V ) hace que el potenciometro pueda recibir los comandos a traves de sus otros pines. Es interesante por que por ahi queres poner un pin usado en el potenciometro en otro estado y para que el chip no te lo tome, pones el CS en 1.
El otro pin es UP/DOWN , U/D(negado) , es decir con esto controlas la direccion del potenciometro. Si tenes un 1 ( 3.3V o 5V segun tu PIC) quiere decir que el punto central del potenciometro (Wiper) va a subir o que es lo mismo que se va a acercar mas al terminal H, o si aun no te queda claro. la resistencia entre H y W va a ser menor y la resistencia entre W y L va a ser mayor.
El mismo caso ocurre cuando tenes un 0, nomas que esta ves el punto central "baja" y ocurre lo contrario a lo expuesto arriba.
Y por ultimo tenes un pin al cual le das pulsos, que se llama INC(negado), Cuando en este PIN tenes un 1 ( 5V) y luego lo pones a 0 ( 0V ) el Wiper o punto central se mueve 1 paso, se va a mover en la direccion dada por el pin U/D como dijimos antes.
Supongamos un ejemplo rapido. Que el potenciometro tenga 8 pasos y comienze en la posicion 0.
pongo CS a 0, para que el chip tome los valores
Pongo U/D a 1, asi va para arriba.
Pongo un 1 en INC y luego pongo 0, esto lo repito 4 veces.
pongo CS a 1 , para que cualquier error no me cambie el valor
Ahora el potenciometro esta en la posicion 4. Si quisiera ir a la posicion 2, estando en la posicion 4 tengo que hacer:
pongo CS a 0.
pongo U/D a 0, para bajar.
Pongo un 1 en INC y luego pongo 0, esto lo repito 2 veces.
pongo CS a 1.
Tengo ahora el potenciometro en la posicion 2.
Esto es un ejemplo, ya que el potenciometro DS1804 posee 100 posiciones y no 8 como en mi ejemplo. Pero la aplicacion o como debe hacerse es igual.