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
15 trang |
Chia sẻ: tuanhd28 | Lượt xem: 1900 | Lượt tải: 2
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:
- chuong_5_pic_interrupt_6605.pdf