Existen varias formas de hacerlo :
1ª.- Utilizando el timer que lleva incorporado el pic, en el caso del 16F628, uno de 16bits. Habilitas la interrupción por timer1, cuando se produzca el desbordamiento del timer (dependiendo de los valores de los registros TIMER1L y TIMER1H) decrementas una variable ( por ejemplo cuenta1) miras si es cero,si no lo es sales de la rutina de irq, si lo es vuelves a recargar cuenta1 y decrementas cuenta2, y mira lo mismo que para cuenta1, cuando sea cero se recargan cuenta1 y cuenta2, y asi vas poniendo variables y decrementandolas hasta que consigas el tiempo deseado, y cuando eso se cumple haces lo que quieras.Un ejemplo practico :
TIMER1 BTFSS PIR1,0 ;se ha producido por overflow de tmr1?
GOTO FINRSI ;no --> mira si es por cambio en portb?
DECFSZ COUNTER1,1 ;si --> decrementa counter1 y mira si es 0?
GOTO FINTMR1 ;no --> termino irq
DECFSZ COUNTER2,1 ;si --> decrementa counter2 y mira si es 0?
GOTO FINTMR1 ;no --> termino irq
BSF ALARMA,0 ;activo la alarma
BCF PIR1,0 ;borro flag por timer1
CLRF TMR1L
CLRF TMR1H ;cargo el timer1 para 65536 cuentas
MOVLW B"00110101" ;prescale 1:8, internal clock, timer1 habilitado
MOVWF T1CON
RETURN
CLRF COUNTER1 ;inicializo el counter1 para timer1
MOVLW 0X17
MOVWF COUNTER2 ;inicializo el counter2 para timer1 para 10.35min ******************************************
FINTMR1 BCF PIR1,0 ;borro flag de timer1
BSF STATUS,RP0 ;BANK 1
BSF PIE1,0 ;habilito interrupcion por timer1
BCF STATUS,RP0 ;BANK 0
FINRSI SWAPF STATUS_TEMP,0
MOVWF STATUS ;restauro STATUS
SWAPF W_TEMP,1
SWAPF W_TEMP,0 ;restauro W sin modificar STATUS
RETFIE
2ª forma : es utilizando un pulso externo con una frecuencia de por ejemplo 1Hz (1segundo) y meterlo por la entrada de contador o por INT, de forma que cuando cuentes 3600 pulsos habra pasado una hora.
No te recomiendo que utilizes un delay de 1hora porque el micro no podra hacer nada mientras este contando y por lo tanto es mejor utilizar los timer o cualquier otra forma pero siempre utilizando irq, de forma que el micro puede estar haciendo cualquier otra cosa mientras cuenta.
Bueno, pues esto es todo amigos.