Chapter 7 Interrupt
Download
1 / 15

Chapter 7 Interrupt - PowerPoint PPT Presentation


  • 111 Views
  • Uploaded on

Chapter 7 Interrupt. จุดประสงค์ : เพื่อศึกษากลไกการทำงานของการขัดจังหวะ ( Interrupt ) ในระบบ Microprocessor และสามารถใช้งานการขัดจังหวะในระบบ MCS-51 ได้.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Chapter 7 Interrupt' - maxime


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Chapter 7 Interrupt

จุดประสงค์ : เพื่อศึกษากลไกการทำงานของการขัดจังหวะ( Interrupt ) ในระบบ Microprocessor และสามารถใช้งานการขัดจังหวะในระบบ MCS-51 ได้


ในการทำงานทั่วไป ถ้าเราต้องการตรวจสอบสถานะใดสถานะหนึ่งเช่น ต้องการตรวจสอบว่า Timer เกิด Overflow หรือต้องการตรวจสอบว่ามีการรับส่งผ่านข้อมูล Serial Port จะมีวิธีในการตรวจสอบอยู่ 2 วิธี

Pulling : วิธีการนี้จะใช้การวนตรวจสอบเงื่อนไขนั้นอยู่ตลอดเวลา เช่น เราใช้การ JNBTF0,$ เพื่อตรวจสอบว่า Timer 0 เกิดการ Overflow

Interrupt : วิธีการนี้เราไม่ต้องเสียเวลามาตรวจสอบ แต่เราจะใช้การขัดจังหวะ ( Interrupt) เมื่อถึงสถานะที่ต้องการ เช่น เกิดการ Overflow


การขัดจังหวะ( ถ้าเราต้องการตรวจสอบสถานะใดสถานะหนึ่งเช่น ต้องการตรวจสอบว่า Interrupt ) คือการที่มีสัญญาณหรือคำสั่งที่ไม่ใช่คำสั่ง CALL

หรือ JMP และทำให้การทำงานของโปรแกรมหลักถูกขัดจังหวะ และกระโดดไป

ยังตำแหน่ง ใดตำแหน่งหนึ่งที่กำหนดไว้และเมื่อทำงานเสร็จสิ้นก็จะกระโดดกลับมา

ยังโปรแกรมหลักและ ทำงานต่อไป

โปรแกรมหลัก

โปรแกรมขัดจังหวะ


โปรแกรมหลัก ถ้าเราต้องการตรวจสอบสถานะใดสถานะหนึ่งเช่น ต้องการตรวจสอบว่า

โปรแกรมหลัก

โปรแกรมขัดจังหวะ

โปรแกรมขัดจังหวะ

เมื่อเกิดการ Interrupt

หลังการ Interrupt


สำหรับตำแหน่งที่โปรแกรมจะกระโดดไปทำงานเมื่อเกิดการขัดจังหวะ(สำหรับตำแหน่งที่โปรแกรมจะกระโดดไปทำงานเมื่อเกิดการขัดจังหวะ(Interrupt)

เราจะเรียกว่า Interrupt Vectorและโปรแกรมที่จะทำงานเมื่อเกิดการ Interrupt เราจะเรียกว่าInterrupt Service Routine

สำหรับใน MCS-51 จะมีแหน่งกำเนิดสัญญาณ Interrupt ได้ทั้งหมด 5 แหล่ง

( 6 แหล่งสำหรับ 8052) ดังรูป


สำหรับตำแหน่งของสำหรับตำแหน่งที่โปรแกรมจะกระโดดไปทำงานเมื่อเกิดการขัดจังหวะ( Interrupt Vector ของแหล่งกำเนิด Interrupt แต่ละแหล่งจะมีค่าตามตาราง


Registerสำหรับตำแหน่งที่โปรแกรมจะกระโดดไปทำงานเมื่อเกิดการขัดจังหวะ( ที่เกี่ยวข้อง

IE : Interrupt Enable Register

มีตำแหน่งหน่วยความจำภายในที่ A8H

MSB

LSB

EA : เป็นบิตควบคุมการ DisableInterrupt ทั้งหมด โดยถ้าเป็น 0 จะหมายความว่าจะเป็นการกำหนดไม่ให้เกิดการ Interrupt ทั้งหมด แต่ถ้าเป็น 1 หมายความว่าการ Enable/Disable จะขึ้นอยู่กับบิตควบคุมของ Interrupt source แต่ละแหล่ง

ET2: เป็นควบคุมการสั่งให้เกิดการ Enable Timer2Interrupt โดยถ้าถูกกำหนดเป็น 1 จะหมายความว่าสามารถเกิดการ Interrupt ได้เมื่อ Timer2 เกิดการ Overflow


ES : สำหรับตำแหน่งที่โปรแกรมจะกระโดดไปทำงานเมื่อเกิดการขัดจังหวะ(เป็นควบคุมการสั่งให้เกิดการ Enable Serial Port โดยถ้าถูกกำหนดเป็น 1 จะหมายความว่าสามารถเกิดการ Interrupt ได้เมื่อมีข้อถูกรับส่งผ่าน Serial Port

ET1 : เป็นควบคุมการสั่งให้เกิดการ Enable Timer1Interrupt โดยถ้าถูกกำหนดเป็น 1 จะหมายความว่าสามารถเกิดการ Interrupt ได้เมื่อ Timer2 เกิดการ Overflow

EX1 : เป็นควบคุมการสั่งให้เกิดการ Enable ExternalInterrupt โดยถ้าถูกกำหนดเป็น 1 จะหมายความว่าสามารถเกิดการ Interrupt ได้เมื่อระดับสัญญาณที่ขา INT1 มีระดับเป็น 0 หรือเกิดการเปลี่ยนแปลงจาก 1 เป็น 0 ขึ้นการกับการกำหนดค่าที่บิต IT1 ในรีจิสเตอร์ TCON ด้วย

ET0 : เป็นควบคุมการสั่งให้เกิดการ Enable Timer0Interrupt โดยถ้าถูกกำหนดเป็น 1 จะหมายความว่าสามารถเกิดการ Interrupt ได้เมื่อ Timer0 เกิดการ Overflow

EX0 : เป็นควบคุมการสั่งให้เกิดการ Enable ExternalInterrupt โดยถ้าถูกกำหนดเป็น 1 จะหมายความว่าสามารถเกิดการ Interrupt ได้เมื่อระดับสัญญาณที่ขา INT0 มีระดับเป็น 0 หรือเกิดการเปลี่ยนแปลงจาก 1 เป็น 0 ขึ้นการกับการกำหนดค่าที่บิต IT0 ในรีจิสเตอร์ TCON ด้วย


IP : Interrupt Priorityสำหรับตำแหน่งที่โปรแกรมจะกระโดดไปทำงานเมื่อเกิดการขัดจังหวะ(

มีตำแหน่งหน่วยความจำภายในคือ 0B8H

MSB

LSB

ในการตอบสนอง Interrupt ถ้าหากเราต้องการใช้สัญญาณ Interrupt

จากแหล่งกำเนิดหลายแหล่ง เราต้องมีการกำหนดระดับความสำคัญ( priority)

ของสัญญาณ Interrupt

สำหรับรีจิสเตอร์ที่ใช้ในการกำหนดความสัญคือ IP



High Priority

Interrupt

รูปแสดงการทำงานของระบบการขัดจังหวะใน MCS-51


Example

จงเขียนโปรแกรมที่เมื่อเกิดการ Interrupt ที่ External Interrupt 0 และทำให้ LED ที่ต่ออยู่ที่ P1.0 เกิดการ Toggle

$MOD51

ORG 8000H

JMP START

ORG 8003H

JMP EX0_ROUTINE

ORG 8100H

START: SETB IT0

MOV IE,#81H

JMP $

EX0_ROUTINE: CPL P1.0

RETI

END


จงเขียนโปรแกรมเพื่อส่งสัญญาญจงเขียนโปรแกรมเพื่อส่งสัญญาญ Clock โดยใช้ Timer Interrupt เป็นฐานเวลา

$MOD51 ; Use 8051 Directive

ORG 0000H ; Code Start at Address 0000H

JMP START ; Go to Start Label

ORG 000BH

JMP Timer0_Routine

ORG 0100H ; Code Start at Address 0000H

START: MOV TMOD,#01H ; Timer0 Mode 1 :16Bit Timer

MOV TH0,#0DCH ; Initial for Timer0 High Byte

MOV TL0,#00H ; Initial for Timer0 Low Byte

MOV IE,#82H ; Timer0 Interrupt Enable

SETB TR0 ; Start Timer0 Run

LOOP: JMP $


Timer0_Routineจงเขียนโปรแกรมเพื่อส่งสัญญาญ: MOV TH0,#0DCH ;Reloaded TH0

MOV TL0,#00H ;Reloaded TL0

CPL P1.7 ; Complement P1.7

RETI

END


ad