1 / 15

Chapter 7 Interrupt

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

maxime
Download Presentation

Chapter 7 Interrupt

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. ในการทำงานทั่วไป ถ้าเราต้องการตรวจสอบสถานะใดสถานะหนึ่งเช่น ต้องการตรวจสอบว่า Timer เกิด Overflow หรือต้องการตรวจสอบว่ามีการรับส่งผ่านข้อมูล Serial Port จะมีวิธีในการตรวจสอบอยู่ 2 วิธี Pulling : วิธีการนี้จะใช้การวนตรวจสอบเงื่อนไขนั้นอยู่ตลอดเวลา เช่น เราใช้การ JNBTF0,$ เพื่อตรวจสอบว่า Timer 0 เกิดการ Overflow Interrupt : วิธีการนี้เราไม่ต้องเสียเวลามาตรวจสอบ แต่เราจะใช้การขัดจังหวะ ( Interrupt) เมื่อถึงสถานะที่ต้องการ เช่น เกิดการ Overflow

  3. การขัดจังหวะ( Interrupt ) คือการที่มีสัญญาณหรือคำสั่งที่ไม่ใช่คำสั่ง CALL หรือ JMP และทำให้การทำงานของโปรแกรมหลักถูกขัดจังหวะ และกระโดดไป ยังตำแหน่ง ใดตำแหน่งหนึ่งที่กำหนดไว้และเมื่อทำงานเสร็จสิ้นก็จะกระโดดกลับมา ยังโปรแกรมหลักและ ทำงานต่อไป โปรแกรมหลัก โปรแกรมขัดจังหวะ

  4. โปรแกรมหลัก โปรแกรมหลัก โปรแกรมขัดจังหวะ โปรแกรมขัดจังหวะ เมื่อเกิดการ Interrupt หลังการ Interrupt

  5. สำหรับตำแหน่งที่โปรแกรมจะกระโดดไปทำงานเมื่อเกิดการขัดจังหวะ(Interrupt)สำหรับตำแหน่งที่โปรแกรมจะกระโดดไปทำงานเมื่อเกิดการขัดจังหวะ(Interrupt) เราจะเรียกว่า Interrupt Vectorและโปรแกรมที่จะทำงานเมื่อเกิดการ Interrupt เราจะเรียกว่าInterrupt Service Routine สำหรับใน MCS-51 จะมีแหน่งกำเนิดสัญญาณ Interrupt ได้ทั้งหมด 5 แหล่ง ( 6 แหล่งสำหรับ 8052) ดังรูป

  6. สำหรับตำแหน่งของ Interrupt Vector ของแหล่งกำเนิด Interrupt แต่ละแหล่งจะมีค่าตามตาราง

  7. Register ที่เกี่ยวข้อง IE : Interrupt Enable Register มีตำแหน่งหน่วยความจำภายในที่ A8H MSB LSB EA : เป็นบิตควบคุมการ DisableInterrupt ทั้งหมด โดยถ้าเป็น 0 จะหมายความว่าจะเป็นการกำหนดไม่ให้เกิดการ Interrupt ทั้งหมด แต่ถ้าเป็น 1 หมายความว่าการ Enable/Disable จะขึ้นอยู่กับบิตควบคุมของ Interrupt source แต่ละแหล่ง ET2: เป็นควบคุมการสั่งให้เกิดการ Enable Timer2Interrupt โดยถ้าถูกกำหนดเป็น 1 จะหมายความว่าสามารถเกิดการ Interrupt ได้เมื่อ Timer2 เกิดการ Overflow

  8. 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 ด้วย

  9. IP : Interrupt Priority มีตำแหน่งหน่วยความจำภายในคือ 0B8H MSB LSB ในการตอบสนอง Interrupt ถ้าหากเราต้องการใช้สัญญาณ Interrupt จากแหล่งกำเนิดหลายแหล่ง เราต้องมีการกำหนดระดับความสำคัญ( priority) ของสัญญาณ Interrupt สำหรับรีจิสเตอร์ที่ใช้ในการกำหนดความสัญคือ IP

  10. แต่ถ้าหากเราไม่ได้กำหนดความสำคัญของ Interrupt ในตัวของ MCS-51 จะเรียงลำดับความสำคัญตามค่าต่อไปนี้ จากความสำคัญสูงสุดไปยังความสำคัญน้อยที่สุด • IE0 • TF0 • IE1 • TF1 • RI+TI

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

  12. 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

  13. จงเขียนโปรแกรมเพื่อส่งสัญญาญ 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 $

  14. Timer0_Routine: MOV TH0,#0DCH ;Reloaded TH0 MOV TL0,#00H ;Reloaded TL0 CPL P1.7 ; Complement P1.7 RETI END

More Related