การใช้งาน Timer0
 
     
  การใช้งานฟังก์ชัน  
  setup_timer_0 (mode)  
 
mode ประกอบด้วย 2 ส่วนคือ  
ส่วนควบคุม    
RTCC_INTERNAL ใช้สัญญาณนาฬิกาภายในมีความถี่เท่ากับ fosc/4  
RTCC_EXT_L_TO_H ใช้สัญญาณนาฬิกาภายนอกที่ขอบขาขึ้น  
RTCC_EXT_H_TO_L ใช้สัญญาณนาฬิกาภายนอกที่ขอบขาลง  
     
ส่วนกำหนดอัตราส่วนปรีสเกลเลอร์    
RTCC_DIV_1    
RTCC_DIV_2    
RTCC_DIV_4    
RTCC_DIV_8    
RTCC_DIV_16    
RTCC_DIV_32    
RTCC_DIV_64    
RTCC_DIV_128    
RTCC_DIV_256    
 
     
  โดยนำค่าทั้งสองมา OR กัน ด้วยเครื่องหมาย | เช่น  
 
  setup_timer_0(RTCC_INTERNAL | RTCC_DIV_4); .ใช้แหล่งสัญญาณนาฬิกาจากภายในและ เลือกเลือกตัวหาร 1:4
 
     
  Interruptจาก Timer0  
เมื่อการนับเปลี่ยนจาก FFhไปเป็น 00h (overflow ) หากต้องการให้เกิด Interrupt จะต้อง Enable Interrupt ด้วยฟังก์ชั่น  
 
  enable_interrupts(GLOBAL); Enable Interrupt ทั้งหมด
  enable_interrupts(INT_TIMER0); Enable Interrupt Timer0
     
 
     
  - และกำหนด interrupt sevice ด้วยคำสัง preprocessor #INT_TIMER0 (#INT_RTCC) ไว้หน้าฟังชั่น ที่ต้องการให้ทำงานเมื่อเกิด interrupt  
  ในฟังก์ชั่น จะต้องกำหนดค่าเริ่มต้นในการนับใหม่ (Reload )  
     
  โดยปกติแล้ว CCS จะ Clear interrupt เมื่อเข้าสู่ interrupt sevice หากไม่ต้องการให้ complier สร้างคำสั่ง clear ให้ใช้คำสั่ง NOCLEAR ไว้หลัง preprocessor นั้นเช่น  
     
  #INT_TIMER0 NOCLEAR  
     
การเขียนและอ่านค่าจาก Timer0  
  set_timer0(0); กำหนดค่าให้ Timer0 เมื่อใช้คำสั่งนี้ จะทำให้ Timer0 หยุดไป 2 cycle
    และไม่สามารถอ่านได้ในช่วงนี้
  get_timer0(); อ่านค่าจาก Timer0
 
     
     
  clear the interrupt flag. To prevent the flag from being cleared add NOCLEAR after the #INT_xxxx  
     
  การใช้งานเป็น Counter (ตัวนับ)
- สัญญาณนาฬิกาที่ได้ จะได้จากสัญญาณนาฬิกาภายนอกที่ขา RA4
โดยสามารถเลือกได้ว่าจะนับที่ขอบขาขึ้นหรือขาลง RTCC_EXT_L_TO_H ,RTCC_EXT_H_TO_L
 
     
  ตัวอย่างการใช้งาน Timer0 ในการหาคาบเวลา