Bài giảng Bộ vi xử lí - Chương 5: Hoạt động ngắt

1_INT nội dung chương trình Ngat TIMER1 BCF PIR1, TMR1IF ;xóa cờ ngắt TIMER1? GOTO END_ISR ;Thoát chương trình ngắt AD_INT nội dung chương trình Ngat ADC nội dung chương trình Ngat ADC BCF PIR1, ADIF GOTO END_ISR END_ISR CALL POP ;gọi CT phục hồi W + STATUS RETFIE ;thoát CT phục vụ Ngắt

pdf15 trang | Chia sẻ: tuanhd28 | Lượt xem: 1818 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Bài giảng Bộ vi xử lí - Chương 5: Hoạt động ngắt, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 5 NG NGẮT CHƯƠNG 5: HOẠT ĐỘNG NGẮT 1. Giới thiệu - Vi điều khiển PIC có rất nhiều nguồn Ngắt. Bao gồm các Ngắt trong và các Ngắt ngoại vi:  Ngắt tại chân INT  Ngắt tràn TIMER0  Ngắt tràn TIMER1  Ngắt tràn TIMER2  Ngắt khi có sự thay đổi trên các chân PORTB CHƯƠNG 5: HOẠT ĐỘNG NGẮT  Ngắt NHẬN dữ liệu  Ngắt TRUYỀN dữ liệu  Ngắt chuyển đổi A/D  Ngắt khi hoàn tất Ghi EEPROM  Ngắt Module CCP  Ngắt Module SSP  Ngắt so sánh điện thế  Ngắt USART, .. CHƯƠNG 5: HOẠT ĐỘNG NGẮT 2. Các thanh ghi NGẮT  Thanh ghi INTCON: Bao gồm các Bit cho phép Ngắt và cờ Ngắt của TIMER0, ngắt INT, ngắt PORTB.  Thanh ghi PIE1: chứa các Bit cho phép Ngắt ngoại vi.  Thanh ghi PIR1: chứa các Cờ Ngắt ngoại vi.  Thanh ghi PIE2  Thanh ghi PIR2 NG NGẮT TMR0IE TMR0IF INTE INTF RBIE RBIF Interrupt Hình 1: Sơ đồ các tác nhân Ngắt TMR2IE TMR2IF ADIE ADIF Other peripherals PEIE GIE CHƯƠNG 5: HOẠT ĐỘNG NGẮT a. Thanh ghi INTCON: Bao gồm các Bit cho phép Ngắt và cờ Ngắt của TIMER0, ngắt ngoài INT, ngắt PORTB Global Interrupt Enable GIE DescriptionEnable Bits Must be set to use GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF Peripheral Interrupt EnablePEIE Timer0 Interrupt EnableTMRIE External Interrupt EnableINTE PORTB change Interrupt EnableRBIE any Interrupts Must be set to use any Peripheral Interrupts NG NGẮT b. Thanh ghi PIE1 và PIR1: (Peripheral Interrupts) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE PIE1 ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF PIR1 ADIE ADIF ADC conversion complete RCIE RCIF AUSART receive buffer is full TXIE TXIF AUSART transmit buffer is full SSPIE SSPIF I2C or SPI Interrupt CCP1IE CCP1IF Timer1 register capture or compare match TMR2IE TMR2IF Timer2 value and PR2 period value match TMR1IE TMR1IF Timer1 register has overflowed Enable Flag Condition NG NGẮT b. Thanh ghi PIE1 và PIR1: (Peripheral Interrupts) C2IE C1IE EEIE BCLIE ULPWUIE CCP2IEOSCFIE PIE2 C2IF C1IF EEIF BCLIF ULPWUIF CCP2IFOSCFIF PIR2 C2IE C2IF Comparator2 output changed C1IE C1IF Comparator1 output changed EEIE EEIF Write operation completed BCLIE BCLIF Bus collision occurred in MSSP I2C mode ULPWUIE ULPWUIF Wake-up condition occurred CCP2IE CCP2IF Timer1 Capture or Compare match occurred OSCFIE OSCFIF System Oscillator Failed Enable Flag Condition CHƯƠNG 4: HOẠT ĐỘNG NGẮT 3. Thời gian trễ thực thi Ngắt Là khoảng thời gian bắt đầu xuất hiện Ngắt tới dòng Lệnh thực hiện tại địa chỉ bắt đầu chương trình Ngắt : 0004h (Khi có Ngắt thì thanh ghi PC sẽ nhảy tới địa chỉ 0004h)  Đối với các Ngắt đồng bộ (Typically Internal): 3Tcy  Đối với các Ngắt không đồng bộ (Typically External): 3 – 3.75 Tcy  Chọn thời gian giữa 2 chương trình Ngắt: 3 - 4 Tcy CHƯƠNG 5: HOẠT ĐỘNG NGẮT 4. Sao lưu dữ liệu trong quá trình Ngắt - Trong quá trình xảy ra Ngắt, chỉ có duy nhất thanh ghi PC được lưu vào STACK tự động. - Vì vậy, ta cần phải lưu data của thanh ghiW và STATUS khi bắt đầu thực hiện chương trình Ngắt, và phục hồi data sau khi thoát chương trình Ngắt. - Lu ý: 2 thanh ghiW_TEMP và STATUS_TEMP phải được lưu ở vùng RAM dùng chung của 4 Bank thanh ghi. ( 70h – 7Fh trong Bank 0 ) CHƯƠNG 5: HOẠT ĐỘNG NGẮT Chương trình Sao lưu dữ liệu của 2 thanh ghi STATUS và W vào STATUS_TEMP và W_TEMP : MOVWF W_TEMP ;lưu W SWAPF STATUS, W ;Đảo và lưu STATUS vào W, thay cho lệnh MOVF vì sẽ ảnh hưởng đến bit Z. MOVWF Status_TEMP . Nội dung của chương trình Ngắt SWAPF Status_TEMP, W MOVWF STATUS ;phục hồi STATUS MOVF W_TEMP, W ;phục hồi W CHƯƠNG 5: HOẠT ĐỘNG NGẮT 5. Cấu trúc của 1 chương trình có Ngắt ORG 0000H GOTO MAIN ORG 0004H GOTO INTERRUPT ORG 0005H MAIN Chương trình chính INTERRUPT Kiem tra cac Chương trình Ngắt . GOTO MAIN END NG NGẮT a. Chương trình Khởi tạo Ngắt PIE1_MASK1 EQU B’01101010’ CLRF STATUS ;chọn Bank0 CLRF INTCON ;cấm các ngắt và xóa cờ ngắt CLRF PIR1 ;xóa cờ các ngắt ngoại vi ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE PIE1 BSF STATUS, RP0 ;chọn Bank1 MOVWF PIE1_MASK1;khởi tạo các ngắt Ngoại vi MOVF PIE1 BCF STATUS, RP0 ;chọn Bank0 BSF INTCON, GIE;cho phép ngắt toàn cục CHƯƠNG 5: HOẠT ĐỘNG NGẮT b. Chương trình phục vụ Ngắt INTERRUPT CALL PUSH ;gọi CT lưu thanh ghi W+STATUS CLRF STATUS ;chọn Bank0 BTFSC PIR1, TMR1IF ;kiểm tra có ngắt TIMER1? GOTO T1_INT ;nếu CÓ, goi CT Ngắt T1 BTFSC PIR1, ADIF ;Kiểm tra có ngắt ADC ? GOTO AD_INT ;CÓ =gọi CT con ngắt ADC BTFSC INTCON, RBIF ; GOTO PORTB_INT ; . GOTO END_ISR ;Nếu không có Cờ nào thì thoát CHƯƠNG 5: HOẠT ĐỘNG NGẮT T1_INT nội dung chương trình Ngat TIMER1 BCF PIR1, TMR1IF ;xóa cờ ngắt TIMER1? GOTO END_ISR ;Thoát chương trình ngắt AD_INT nội dung chương trình Ngat ADC BCF PIR1, ADIF GOTO END_ISR END_ISR CALL POP ;gọi CT phục hồi W + STATUS RETFIE ;thoát CT phục vụ Ngắt

Các file đính kèm theo tài liệu này:

  • pdfchuong_5_pic_interrupt_6605.pdf
Tài liệu liên quan