#include<18F4431.h>
#define CLOCK_SP 20000000 // ความเร็วสัญญาณนาฬิกา
#fuses HS // โหมดการทำงานแบบ High Speed
#fuses NOLVP,NOWDT // No Low Voltage Program, No Watchdog timer
#fuses NOPROTECT // Code no protection
#use delay (clock=CLOCK_SP) // ใช้งานฟังก์ชัน delay_ms() & delay_us()
#use rs232(baud=9600,xmit= PIN_C6,rcv= PIN_C7 ) // ใช้งาน module RS232
int16 A; //ประกาศตัวแปร time1,time2 เป็น floating point number
BOOLEAN hook_cpp1, HookRise; //ประกาศตัวแปร hook_cpp1, HookRise เป็น Boolean
#int_ccp1
void capture_isr()
{
if(HookRise)
{
A = A+1;
HookRise = FALSE;
}
}
// ฟังก์ชัน interrupt ในการตรวจสอบสัญญาณเข้า ให้นับขึ้นที่ 1 เก็บไว้ที่ตัวแปร A
void main(void){
while(true){
HookRise=TRUE;
hook_cpp1=TRUE;
setup_ccp1(CCP_CAPTURE_RE); //กำหนดค่า CCP1(Capture)
enable_interrupts(INT_CCP1); // Enable interrupt CCP1
enable_interrupts(GLOBAL); // ตั้งค่า interrupt รวมทำงาน
printf("%lu\r\n",A); //แสดงค่าผ่าน RS232
}
}