PHẦN 3: LẬP TRÌNH VỚI CCS ( tiếp theo ) - ĐẶNG LÊ KHOA - TRƯỜNG ĐH KHTN - KHOA ĐIỆN TỬ VIỄN THÔNG
Số trang: 36
Loại file: pdf
Dung lượng: 277.80 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 4: ngắt và ứng dụngNguyên tắc hoạt động của ngắtCác hàm dùng cho ngắtcác loại ngắtNguyên tắc hoạt động của ngắtứng dụng trong lập trình ưu tiên
Nội dung trích xuất từ tài liệu:
PHẦN 3: LẬP TRÌNH VỚI CCS ( tiếp theo ) - ĐẶNG LÊ KHOA - TRƯỜNG ĐH KHTN - KHOA ĐIỆN TỬ VIỄN THÔNGTRƯ NG ð I H C KHOA H C T NHIÊNTR KHOA ðI N T - VI N THÔNG KHOAPH N 3: L P TRÌNH V I CCS (tt) ð ng Lê Khoa 1CHƯƠNG 4: NG T VÀ NG D NG• Nguyên t c ho t ñ ng c a ng t• Các hàm dùng cho ng t• Các lo i ng t• Ví d 2Nguyên t c ho t ñ ng c a ng t• ng d ng trong l p trình ưu tiên• Khi có 1 ng t x y ra, VðK s hoàn t t l nh ñang th c hi n và ch y chương trình ph c v ng t• C p ng t: ng t 1 c p và ng t 2 c p 3 Ng t 1 c p• Trên PIC 14 , 12 ,10 ,t t c các ng t ch có 1 c p ưu tiên .• Khi ng t nào ñang ñư c ph c v thì không th b ng t b i 1 ng t khác x y ra .• Khi ng t x y ra chương trình nh y ñ n ñ a ch ng t , thư ng là 004h , sao lưu thanh ghi W, STATUS , PCLATCH , FSR… thì nh y ñ n hàm ph c v ng t ñó .• Th c hi n xong thì ph c h i t t c thanh ghi trên thoát ng t . 4 Ng t 1 c p…• Bit cho phép ng t toàn c c ( GIE ) b khóa t ñ ng khi có ng t.• Dùng #priority ñ xác ñ nh ưu tiên ng t. Ng t ưu tiên nh t s luôn ñư c h i vòng trư c .Sau khi xác ñ nh c ng t c n ph c v , nó s th c thi hàm ng t tương ng .Xong thì xoá c ng t ñó và thoát ng t . Ph c v ng t nào xong thì ch xoá c ng t ñó. 5 Ng t 2 c p• Ch có trên PIC 18 ( và dsPIC ) . Có 2 khái ni m: ng t ưu tiên th p (low priority) và ng t ưu tiên cao ( high priority ).• 2 vector th c thi ng t tương ng thư ng là 0008h (high) và 0018h ( low ).• M t ng t th p ñang ñư c ph c v s b ngưng và ph c v ng t cao 0008h n u ng t cao x y ra. Ngư c l i, ng t cao ñang x y ra thì không bao gi b ng t b i ng t th p. 6 Ng t 2 c p…• N u vi t hàm ng t bình thư ng, không ñòi h i ưu tiên gì thì CCS sinh mã ñ t t c hàm ng t ñ u là ng t ưu tiên cao. Quy trình th c hi n ng t s như ng t 1 c p trên.• ð s d ng ng t 2 c p, khai báo #device ph i có high_ints=true . Và hàm ng t nào mu n ưu tiên cao thì thêm FAST theo sau ch th ti n x lý hàm ñó.• Ch có duy nh t 1 ng t ñư c ưu tiên cao. 7 Khai báo ng t• M i dòng VDK có s lư ng ng t khác nhau : PIC 14 có 14 ng t , PIC 18 có 35 ng t• #DEVICE HIGH_INTS= Khai báo ng t có m c ưu tiên cao.• #INT_XXX fast Đây là ch th báo cho trình biên d ch m t ng t có m c ưu tiên cao.• Cách khai báo: #INT_XXX 8 Khai báo ng t…• Sau ñây là danh sách 1 s ng t v i ch c năng tương ng :• #INT_GLOBAL : ng t chung• #INT_AD : chuy n ñ i A /D ñã hoàn t t• #INT_EXT : ng t ngoài• #INT_EXT1 : ng t ngoài 1• #INT_EXT2 : ng t ngoài 2• #INT_RB : b t kỳ thay ñ i nào trên chân B4 ñ n B7• #INT_RC : b t kỳ thay ñ i nào trên chân C4 ñ n C7• #INT_RDA : data nh n t RS 232 s n sàng• #INT_RTCC : tràn Timer 0• #INT_TBE : b ñ m chuy n RS 232 tr ng• #INT_TIMER0 : m t tên khác c a #INT_RTCC• #INT_TIMER1 : tràn Timer 1• #INT_TIMER2 : tràn Timer 2• #INT_TIMER3 : tràn Timer 3• #INT_TIMER5 : tràn Timer 5• #INT_PWMTB : ng t cu PWM time base 9 Relevant Functions:• disable_interrupts()Disables the specified interrupt.• enable_interrupts() Enables the specified interrupt.• ext_int_edge() Enables the edge on which the edge interrupt should trigger. This can be either rising or falling edge.• clear_interrupt() This function will clear the specified interrupt flag. This can be used if a global isr is used, or to prevent an interrupt from being serviced. 10• ð cho phép ng t ñó ho t ñ ng ph i dùng l nh enable_interrupts ( int_xxxx) và enable_interrupts ( global ) .• Khoá FAST theo sau #int_xxx ñ cho ng t ñó là ưu tiên cao , ch ñư c 1 ng t thôi , ch có PIC 18 và dsPIC . 11 enable_interrupts ( level )• level là tên các ng t ñã cho trên hay là GLOBAL ñ cho phép ng t c p toàn c c.• M i ng t c a VDK ñ u có 1 bit c ng t, 1 bit cho phép ng t. Khi có ng t thì bit c ng t b set =1, nhưng ng t có h at ñ ng ñư c hay không tuỳ thu c bit cho phép ng t . enable_interrupts (int_xxx ) s b t bit cho phép ng t . Nhưng t t c các ng t ñ u không th th c thi n u bit cho phép ng t toàn c c = 0VD : ñ cho phép ng t timer0 và timer1 ho t ñ ng: enable_interrupts (int_timer0); enable_interrupts (int_timer1 ) ; enable_interrupts ( global ); // ch c n dùng 1 l n tr //phi mu n có thay ñ i ñ c bi t 12 ...
Nội dung trích xuất từ tài liệu:
PHẦN 3: LẬP TRÌNH VỚI CCS ( tiếp theo ) - ĐẶNG LÊ KHOA - TRƯỜNG ĐH KHTN - KHOA ĐIỆN TỬ VIỄN THÔNGTRƯ NG ð I H C KHOA H C T NHIÊNTR KHOA ðI N T - VI N THÔNG KHOAPH N 3: L P TRÌNH V I CCS (tt) ð ng Lê Khoa 1CHƯƠNG 4: NG T VÀ NG D NG• Nguyên t c ho t ñ ng c a ng t• Các hàm dùng cho ng t• Các lo i ng t• Ví d 2Nguyên t c ho t ñ ng c a ng t• ng d ng trong l p trình ưu tiên• Khi có 1 ng t x y ra, VðK s hoàn t t l nh ñang th c hi n và ch y chương trình ph c v ng t• C p ng t: ng t 1 c p và ng t 2 c p 3 Ng t 1 c p• Trên PIC 14 , 12 ,10 ,t t c các ng t ch có 1 c p ưu tiên .• Khi ng t nào ñang ñư c ph c v thì không th b ng t b i 1 ng t khác x y ra .• Khi ng t x y ra chương trình nh y ñ n ñ a ch ng t , thư ng là 004h , sao lưu thanh ghi W, STATUS , PCLATCH , FSR… thì nh y ñ n hàm ph c v ng t ñó .• Th c hi n xong thì ph c h i t t c thanh ghi trên thoát ng t . 4 Ng t 1 c p…• Bit cho phép ng t toàn c c ( GIE ) b khóa t ñ ng khi có ng t.• Dùng #priority ñ xác ñ nh ưu tiên ng t. Ng t ưu tiên nh t s luôn ñư c h i vòng trư c .Sau khi xác ñ nh c ng t c n ph c v , nó s th c thi hàm ng t tương ng .Xong thì xoá c ng t ñó và thoát ng t . Ph c v ng t nào xong thì ch xoá c ng t ñó. 5 Ng t 2 c p• Ch có trên PIC 18 ( và dsPIC ) . Có 2 khái ni m: ng t ưu tiên th p (low priority) và ng t ưu tiên cao ( high priority ).• 2 vector th c thi ng t tương ng thư ng là 0008h (high) và 0018h ( low ).• M t ng t th p ñang ñư c ph c v s b ngưng và ph c v ng t cao 0008h n u ng t cao x y ra. Ngư c l i, ng t cao ñang x y ra thì không bao gi b ng t b i ng t th p. 6 Ng t 2 c p…• N u vi t hàm ng t bình thư ng, không ñòi h i ưu tiên gì thì CCS sinh mã ñ t t c hàm ng t ñ u là ng t ưu tiên cao. Quy trình th c hi n ng t s như ng t 1 c p trên.• ð s d ng ng t 2 c p, khai báo #device ph i có high_ints=true . Và hàm ng t nào mu n ưu tiên cao thì thêm FAST theo sau ch th ti n x lý hàm ñó.• Ch có duy nh t 1 ng t ñư c ưu tiên cao. 7 Khai báo ng t• M i dòng VDK có s lư ng ng t khác nhau : PIC 14 có 14 ng t , PIC 18 có 35 ng t• #DEVICE HIGH_INTS= Khai báo ng t có m c ưu tiên cao.• #INT_XXX fast Đây là ch th báo cho trình biên d ch m t ng t có m c ưu tiên cao.• Cách khai báo: #INT_XXX 8 Khai báo ng t…• Sau ñây là danh sách 1 s ng t v i ch c năng tương ng :• #INT_GLOBAL : ng t chung• #INT_AD : chuy n ñ i A /D ñã hoàn t t• #INT_EXT : ng t ngoài• #INT_EXT1 : ng t ngoài 1• #INT_EXT2 : ng t ngoài 2• #INT_RB : b t kỳ thay ñ i nào trên chân B4 ñ n B7• #INT_RC : b t kỳ thay ñ i nào trên chân C4 ñ n C7• #INT_RDA : data nh n t RS 232 s n sàng• #INT_RTCC : tràn Timer 0• #INT_TBE : b ñ m chuy n RS 232 tr ng• #INT_TIMER0 : m t tên khác c a #INT_RTCC• #INT_TIMER1 : tràn Timer 1• #INT_TIMER2 : tràn Timer 2• #INT_TIMER3 : tràn Timer 3• #INT_TIMER5 : tràn Timer 5• #INT_PWMTB : ng t cu PWM time base 9 Relevant Functions:• disable_interrupts()Disables the specified interrupt.• enable_interrupts() Enables the specified interrupt.• ext_int_edge() Enables the edge on which the edge interrupt should trigger. This can be either rising or falling edge.• clear_interrupt() This function will clear the specified interrupt flag. This can be used if a global isr is used, or to prevent an interrupt from being serviced. 10• ð cho phép ng t ñó ho t ñ ng ph i dùng l nh enable_interrupts ( int_xxxx) và enable_interrupts ( global ) .• Khoá FAST theo sau #int_xxx ñ cho ng t ñó là ưu tiên cao , ch ñư c 1 ng t thôi , ch có PIC 18 và dsPIC . 11 enable_interrupts ( level )• level là tên các ng t ñã cho trên hay là GLOBAL ñ cho phép ng t c p toàn c c.• M i ng t c a VDK ñ u có 1 bit c ng t, 1 bit cho phép ng t. Khi có ng t thì bit c ng t b set =1, nhưng ng t có h at ñ ng ñư c hay không tuỳ thu c bit cho phép ng t . enable_interrupts (int_xxx ) s b t bit cho phép ng t . Nhưng t t c các ng t ñ u không th th c thi n u bit cho phép ng t toàn c c = 0VD : ñ cho phép ng t timer0 và timer1 ho t ñ ng: enable_interrupts (int_timer0); enable_interrupts (int_timer1 ) ; enable_interrupts ( global ); // ch c n dùng 1 l n tr //phi mu n có thay ñ i ñ c bi t 12 ...
Tìm kiếm theo từ khóa liên quan:
điện tử ứng dụng mạch điện tử mạch điều khiển ngôn ngữ C lập trình với CCS Tổng quan về CCS lập trình với các vòng lặp lập trình lệnh logic số họcGợi ý tài liệu liên quan:
-
Giáo trình Mạch điện tử - Trường Cao đẳng nghề Số 20
97 trang 169 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 132 0 0 -
27 trang 131 0 0
-
Giáo trình Tin học đại cương: Phần 2 - Trần Đình Khang
118 trang 117 0 0 -
Giáo trình PLC S7-300 lý thuyết và ứng dụng
84 trang 110 0 0 -
Sơ đồ điều khiển và tín hiệu máy cắt SF6– GL.107
4 trang 106 2 0 -
Luận văn: Xây dựng mô hình điều khiển động cơ DC servo bằng vi điều khiển
85 trang 96 0 0 -
Giáo trình Lý thuyết mạch tín hiệu - Tập 1: Phần 1 - PGS.TS. Đỗ Huy Giác, TS. Nguyễn Văn Tách
122 trang 91 0 0 -
Đồ án Thiết kế mạch điện tử - Chuyên đề: Thiết kế mạch nguồn 12V - 3A
25 trang 91 1 0 -
101 thuật toán chương trình C: Phần 2
130 trang 90 0 0