การใช้งานอินเทอร์รัปต์ภายนอก INT0
     อินเทอร์รัปต์ภายนอก INT0 เป็นอินเทอร์รัปต์ที่ี่เกิดจากการเปลี่ยนแปลงสถานะลอจิกที่ขา INT0 ของไมโครคอนโทรลเลอร์ เมื่อเกิดอินเทอร์รัปต์โปรแกรมจะทำการขัดจังหวะการทำงานหลักมาให้ บริการยังฟังก์ชั่นของอินเทอร์รัปต์ และเมื่อทำงานในส่วนของฟังก์ชั่นอินเทอร์รัปต์เสร็จสิ้นก็จะกระโดด กลับยังโปรแกรมหลักเพื่อทำงานตามเดิม


การใช้งานอินเทอร์รัปต์ INT0 มีรีจิสเตอร์ที่ใช้ควบคุมการเกิดอินเทอร์รัปต์ดังนี้

     IT0 เป็นรีจิสเตอร์สำหรับกำหนดรูปแบบการเกิดอินเทอร์รัปต์ โดยมีรูปแบบดังนี้
     IT0 = 1 กำหนดให้เกิดอินเทอร์รัปต์ เมื่อมีการเปลี่ยนแปลงสถานะจากลอจิกสูง "1" เป็นลอจิกต่ำ "0"
     IT1 = 0 กำหนดให้เกิดอินเทอร์รัปต์ เมื่อขา INT0 ของไมโครคอนโทรเลอร์ เป็นลอจิกต่ำ "0"
     
     EX0 เป็นรีจิสเตอร์สำหรับควบคุมการเกิดอินเทอร์รัปต์ INT0
     EX0 = 1 เปิดการใช้งานอินเทอร์รัปต์ INT0
     EX0 = 0 ปิดการใช้งานอินเทอร์รัปต์ INT0

     EA เป็นรีจิสเตอร์สำหรับควบคุมอินเทอร์รัปต์ทั้งหมด
     EA = 1 เปิดการใช้งานอินเทอร์รัปต์ทั้งหมด
     EA = 0 ปิดการใช้งานอินเทอร์รัปต์ทั้งหมด

* หมายเหตุ เมื่อมีการเปิดใช้งานอินเทอร์รัปต์ INT0 ต้องกำหนดรีจิสเตอร์ EA เป็นลอจิกสูง "1" ทุก
ครั้ง เนื่องจาก EA เป็นรีจิสเตอร์ที่ควบคุมการใช้งานอินเทอร์รัปต์ทั้งงหมด

#include <reg51.h>

sbit LED = P0^0;

/************* External Interrupt 0 ****************/
void INT0_isr(void)interrupt 0
{
     LED =~ LED;
}


/************** MAIN PROGRAM **************/
void main (void){

     IT0 = 1; // Falling Edge
     EX0= 1; // Enable Interrupt
     EA = 1; // Global Interrupt Enable

     LED = 1;

     while(1);

}

ตัวอย่างโปรแกรม
การทำงานของโปรแกรม
     เมื่อมีกดปุ่มหลอดไฟ LED จะสว่าง และเมื่อกดปุ่มอีกครั้ง หลอดไฟ LED จะดับ และจะสลับการทำงาน แบบนี้ไปเรื่อย
     
[กลับสู่้หน้าหลัก]