การใช้งานอินเทอร์รัปต์ RB
     อินเทอร์รัปต์ RB เป็นอินเทอร์รัปต์จากภายนอกที่เกิดจากการเปลี่ยนแปลงสถานะ ของสัญญาณไฟฟ้าที่ขา RB4-RB7 โดยที่ขาใดขาหนึ่งเกิดเปลี่ยนสถานะก็จะทำให้ เกิดอินเทอร์รัปต์ขึ้น สำหรับ CCS ได้จัดเตรียมฟังก์ชั่นที่ใช้ในการจัดการกับอินเทอร์ รัปต์ไว้แล้ว มีรูปแบบการใช้งานดังนี้

ฟังก์ชั่น enable_interrupts()
     เป็นฟังก์ชั่นที่ใช้กำหนดให้มีการอินเทอร์รัปต์เกิดขึ้น โดยมีรูปแบบการใช้งานดังนี้

     enable_interrupts(level)

โดยที่
     level          คือ ลำดับค่าคงที่ของการอินเทอร์รัปต์ที่กำหนดในดีไวน์ของไฟล์เฮด                       เดอร์(devices.h file) ของไมโครคอนโทรเลอร์ PIC แต่ละเบอร์
ตัวอย่าง
     enable_interrupts(GLOBAL) // เปิดใช้งานอินเทอร์รัปต์ทั้งหมด
     enable_interrupts(INT_RB) // เปิดใช้งานอินเทอร์รัปต์จากภายนอก RB4-RB7

ฟังก์ชั่น disable_interrupts()
     เป็นฟังก์ชั่นที่ใช้ในการยกเลิกการใช้งานอินเทอร์รัปต์ โดยมีรูปแบบการใช้งานดังนี้

     disable_interrupts(level)

โดยที่
     level           คือ ลำดับค่าคงที่ของการอินเทอร์รัปต์ที่กำหนดในดีไวน์ของไฟล์เฮด                        เดอร์(devices.h file) ของไมโครคอนโทรเลอร์ PIC แต่ละเบอร์
ตัวอย่าง
     disable_interrupts(GLOBAL) // ปิดใช้งานอินเทอร์รัปต์ทั้งหมด
     disable_interrupts(INT_RB) // ปิดใช้งานอินเทอร์รัปต์จากภายนอก RB4-RB7

ตัวอย่างการใช้งาน
     เป็นโปรแกรมไฟกระพริบติดดับทุกๆ 1 วินาที เมื่อกดสวิตซ์ตัวใดตัวหนึ่งจะเกิดอิน เทอรรัปต์ขึ้น โดยจะแสดงข้อความการเกิดอินเทอร์รัปต์ผ่านทางคอมพิวเตอร์แสดง ผลที่ Hyper Terminal
CODE

#include <16F877.h>
#fuses HS
#fuses NOLVP
#fuses NOWDT
#fuses NOPROTECT
#use delay(clock = 20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)

#define LED pin_d0

#INT_RB
void Isr_ext(void)
{
     if(!input(pin_b4)) // เกิดอินเทอร์รัปต์ที่ขา RB4
          {
          printf("Press Button 1\n\r");
          }
     else if(!input(pin_b5)) // เกิดอินเทอร์รัปต์ที่ขา RB5
          {
          printf("Press Button 2\n\r");
          }
     else if(!input(pin_b6)) // เกิดอินเทอร์รัปต์ที่ขา RB6
          {
          printf("Press Button 3\n\r");
          }
     else if(!input(pin_b7)) // เกิดอินเทอร์รัปต์ที่ขา RB7
          {
          printf("Press Button 4\n\r");
          }
}

void main (void)
{
     enable_interrupts(GLOBAL);  // เปิดใช้งานอินเทอร์รัปต์ทั้งหมด
     enable_interrupts(INT_RB);    // เปิดใช้งานอินเทอร์รัปต์ RB


     while(true)
          {
          output_high(LED); // LED ติด
          delay_ms(1000);   // หน่วง 1 วินาที
          output_low(LED); // LED ดับ
          delay_ms(1000);   // หน่วง 1 วินาที
          }
}

กลับสู่หน้าหลัก