¿Qué tan preciso debe ser este período de 30 días? 30 días son aproximadamente 2.5 millones de segundos, con una precisión de cristal de 20 ppm puede tener un error de un minuto después de 1 mes.
Si un error de un minuto es inaceptable, puede usar un oscilador de temperatura controlada o un cristal mejor, como 5 ppm. Si se permite la ayuda externa, puede utilizar la señal de un receptor DCF77 (Europa, WWVB para América del Norte). Estos te darán un tick por segundo con precisión de reloj atómico. Todo lo que tienes que hacer es contar pulsos. Tenga en cuenta que DCF77 tiene solo 59 pulsos por minuto, el pulso omitido indica el comienzo de un nuevo minuto. Si tiene esto en cuenta, su período de 30 días ha transcurrido después de 2 548 800 pulsos (59 \ $ \ veces \ $ 60 \ $ \ veces \ $ 24 \ $ \ veces \ $ 30).
Si el PIC tiene que hacerlo todo por sí mismo, eso tampoco debería ser un problema. Reloj a 32768 Hz y programe un temporizador para dar una interrupción después de 32768 ciclos de reloj, eso es un segundo. Cuente 2 592 000 interrupciones (60 \ $ \ veces \ $ 60 \ $ \ veces \ $ 24 \ $ \ veces \ $ 30).
En un mes pueden pasar muchas cosas, y es probable que desee una batería de respaldo en caso de que haya un corte de energía. Si usa la señal del reloj atómico, también puede decodificar el código de tiempo después de cada pulso por minuto y comparar la fecha y la hora con su hora objetivo. En ese caso, los cortes de energía ni siquiera importan.
editar
No mencionas qué PIC estás usando, y sin ninguna experiencia práctica con ellos sé que hay muchos de ellos. Elegiré el PIC10F200 porque, según tengo entendido, es uno de los PIC menos capaces. , solo tiene un temporizador / contador de 8 bits.
El temporizador / contador puede sincronizarse internamente con el reloj / 4, y tiene un prescaler seleccionable. Si usa un cristal de 32.768 kHz para el reloj, entonces reloj / 4 = 8192 Hz. Establezca el prescaler en \ $ \ div \ $ 32 y el contador / temporizador de 8 bits se desbordará una vez por segundo.
edit 2 (con respecto al comentario de Olin)
Olin señala que el PIC10F200 solo tiene un oscilador interno. Eso no tendrá una precisión de cristal, pero puede sincronizar el temporizador desde un reloj externo. Conecte la salida del oscilador de 32.768 kHz a la entrada T0CKI y configure el prescaler en \ $ \ div \ $ 128. Luego, el contador / temporizador de 8 bits se desbordará una vez por segundo. Según tengo entendido, no hay interrupción de desbordamiento, por lo que tendrá que detectarlo comparando el valor del temporizador con 0x00.
edit 3 (vuelve a tu comentario sobre la precisión)
Permitir un error de dos días en un mes es lo que llamamos precisión muy baja. Ese 6,7%. El oscilador interno está calibrado al 1% a 25 ° C, 2% en todo el rango. Entonces, si lo desea, puede usar el oscilador interno, entonces no necesita el cristal externo de 32.768 kHz. El oscilador está sintonizado a 4MHz, \ $ \ div \ $ 4 le da 1MHz en el prescaler del temporizador. Si configura el prescaler en \ $ \ div \ $ 64, entonces el temporizador de 8 bits se registra en 15625Hz. Cuente con 61 desbordamientos por cada segundo, incluso si ignora el resto, todavía obtiene un 0.06% de precisión.