ตัวอย่างการทำงานของ Timer1เป็นนาฬิกาจับเวลา  
   
  - การทดสอบการทำงานของ Timer1 โดยให้แสดงเวลาผ่านทาง RS232 (soft ware TX=RA0,RX=RA1)
 
  - Enable Interrupt  
  - เมื่อการนับเปลี่ยนจาก FFFFhไปเป็น 0000h (overflow ) จึงต้องกำหนด interrupt sevice ด้วย  #INT_TIMER1 ในฟังก์ชั่น จะต้องกำหนดค่าเริ่มต้นในการนับใหม่ Reload  
     
     
     
   ตัวอย่างโปรแกรม  
 
//timer1 interrupt
//Press spacebar to get time
//display Time 00:00:00
//#include <16F628.h>
#include <16F648A.h> #use delay(clock=4000000) #fuses XT,PUT,BROWNOUT,MCLR,NOWDT,NOPROTECT,NOLVP #define TxD PIN_A0 #define RxD PIN_A1 #use rs232(baud=9600, xmit=TxD,rcv=RxD) int hour,min,sec; int TmSum=0; #INT_TIMER1 void INTTM1(void) { TmSum++; set_timer1(3036); //Reload } void main(void) { enable_interrupts(GLOBAL); enable_interrupts(INT_TIMER1); setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); set_timer1(3036); hour =0; min = 0; sec = 0; printf("Interrupt Timer1 press Any key to get Time\r\n"); while(TRUE) { if(TmSum>2) { printf("."); if(++sec==60) { sec = 0; if(++min==60) { min = 0; if(++hour==24) hour = 0; } } TmSum = 0; } //Press Any key to get time if(kbhit()) printf("\r\nTime:%02d:%02d:%02d\r\n",hour,min,sec); } }
 
     
  - เมื่อใช้สัญญาณนาฬิกา 4 MHz คาบเวลาสูงสุดที่ Timer 1 นับได้จะไม่เกิน 0.5242879986763 sec  
  - ดังนั้นเมื่อกำนหดค่าเริ่มต้นในกับ Timer 1= 3036 จะมีค่าเท่ากับ 0.5 sec จึงต้องนับ 2 ครั้ง  
     
     
  เมื่อโปรแกรมเริ่มทำงาน  
 
Interrupt Timer1 press Any key to get Time
..........
Time:00:00:10
 
     
  ทุกๆ 1 วินาทีจะแสดงจุด "." หนึ่งจุดเมื่อกดคีย์ใดๆๆ จะแสดงเวลาที่นับ