Bài giảng Vi sử lý - Chương 7: Ngắt quãng giới thiệu tới người học khái niệm về ngắt quãng, các loại ngắt quãng và cánh thức hoạt động, thiết kế chương trình sử dụng ngắt quãng, khởi tạo ngắt quãng, cấu trúc chương trình sử dụng ngắt quãng. Mời các bạn cùng tham khảo nội dung chi tiết.
dce 2009 Ngắt quãng BK TP.HCM ©2009, CE Department dce 2009 Giới thiệu • Ngắt qng gì? – An interrupt is the occurrence of a condition-an event that cause a temporary suspension of a program while the event is serviced by another program (Interrupt Service Routine ISR or Interrupt Handler) ©2009, CE Department dce 2009 Giới thiệu (tt) • 18F2220 có nhiều nguồn ngắt có độ ưu tiên (priority) khác – Ngắt có độ ưu tiên cao : 0008h – Ngắt có độ ưu tiên thấp : 0018h Khi nguồn ngắt có độ ưu tiên cao xảy ngắt nguồn ngắt có độ ưu tiên thấp, nguồn ngắt thực ©2009, CE Department dce 2009 Giới thiệu (tt) ©2009, CE Department dce 2009 Các loại ngắt quãng • • • • • • • Ngắt (3 kênh) Timer 0, 1, PortB interrupt change Capture/Compare/PWM interrupt USART ADC Comparator ©2009, CE Department dce 2009 Cách thức hoạt động ©2009, CE Department dce 2009 Thiết kế chương trình sử dụng ngắt qng • Polling: chương trình kiểm tra cờ, đợi cho có kiện xảy (khơng hiệu số trường hợp) • Interrupt driven: CPU thực công việc khác, không cần chờ kiện xảy ( hiệu ứng dụng điều khiển) • I/O processor: processor chuyên dụng xử lý kiện I/O, không can thiệp vào hoạt động CPU (tốt chi phí cao) ©2009, CE Department dce 2009 Xử lý ngắt • Khi nguồn ngắt xảy chấp nhận CPU chương trình bị ngắt Sau CPU thực thao tác sau: – – – – – Thực thi xong lệnh PC lưu lại stack Các trạng thái lưu lại bên PC nhận giá trị địa vector tương ứng với nguồn ngắt Thực thi ISR • ISR hồn thành gặp lệnh RETFIE, sau phục hồi trạng thái CPU lấy lại giá trị PC từ stack ©2009, CE Department dce 2009 Khởi tạo ngắt quãng • IPEN (RCON) : cho/không cho phép xảy ngắt với độ ưu tiên khác • IPEN: enable – GIEH (INTCON) : cho/khơng cho phép ngắt có độ ưu tiên cao – GIEL (INTCON) : cho/khơng cho phép ngắt có độ ưu tiên thấp • IPEN: disable – GIEH (INTCON) : cho/không cho phép tất nguồn ngắt xảy – PEIE (INTCON) : cho/không phép tất nguồn ngắt ngoại vi ©2009, CE Department dce 2009 Khởi tạo ngắt qng (tt) • Có bit điều khiển hoạt động nguồn ngắt – Flag bit – Enable interrupt bit – Priority bit Khi flag bit, enable bit global enable bit set chương trình nhảy tới địa 08h nguồn ngắt có độ ưu tiên cao, tới địa 18h nguồn ngắt có độ ưu tiên thấp ©2009, CE Department 10 dce 2009 Ví dụ khởi tạo ngắt timer ; cho phép ngắt xảy với độ ưu tiên cao BSF INTCON2,TMR0IP ; xoá cờ ngắt BCF INTCON,TMR0IF ; cho phép ngắt timer0 xảy BSF INTCON,TMR0IE ©2009, CE Department 11 dce 2009 Khởi tạo ngắt timer INIT_TIMER0 BSF BCF BSF BSF RCON,IPEN ;enable priority interrupts INTCON2,TMR0IP INTCON,TMR0IF INTCON,TMR0IE BSF BSF CLRF MOVLW MOVWF MOVLW MOVWF BSF RETURN INTCON,GIEH ;set the global interrupt enable bits INTCON,GIEL T0CON 0x3c TMR0H 0xAF TMR0L T0CON,TMR0ON ©2009, CE Department 12 dce 2009 Các ghi điều khiển interrupt • • • • • • • RCON INTCON INTCON2 INTCON3 PIR1, PIR2 PIE1, PIE2 IPR1, IPR2 ©2009, CE Department 13 dce 2009 Cấu trúc chương trình sử dụng ngắt quãng ORG GOTO ORG GOTO ORG GOTO MAIN CALL GOTO INIT_INTERRUPT RETURN 00h MAIN 08H ISR_HIGH 18H ISR_LOW INIT_INTERRUPT $ EXTERNAL_INTERUPT_ROUTINE BCF INTCON,INT0IF RETURN TIMER0_INTERRUPT_ROUTINE BCF INTCON,TMR0IF RETURN ISR_HIGH CALL EXTERNAL_INTERUPT_ROUTINE RETFIE ISR_LOW CALL TIMER0_INTERRUPT_ROUTINE RETFIE Flag bit phải xoá software trước cho phép ngắt xảy tiếp tục, tránh trường hợp gọi đệ quị ISR ©2009, CE Department 14 ... processor chuyên dụng xử lý kiện I/O, không can thiệp vào hoạt động CPU (tốt chi phí cao) ©2009, CE Department dce 2009 Xử lý ngắt • Khi nguồn ngắt xảy chấp nhận CPU chương trình bị ngắt Sau CPU thực... nguồn ngắt có độ ưu tiên (priority) khác – Ngắt có độ ưu tiên cao : 0008h – Ngắt có độ ưu tiên thấp : 0018h Khi nguồn ngắt có độ ưu tiên cao xảy ngắt nguồn ngắt có độ ưu tiên thấp, nguồn ngắt. .. cho phép tất nguồn ngắt xảy – PEIE (INTCON) : cho/không phép tất nguồn ngắt ngoại vi ©2009, CE Department dce 2009 Khởi tạo ngắt qng (tt) • Có bit điều khiển hoạt động nguồn ngắt – Flag bit –