PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   Lập trình ngắt INT bằng MPLAB C18 (http://www.picvietnam.com/forum/showthread.php?t=11399)

rocket42 06-10-2011 10:20 PM

Lập trình ngắt INT bằng MPLAB C18
 
1 Attachment(s)
Bài viết cơ sở về lập trình ngắt INT trong PIC18
Cách viết chương trình điều khiển ngắt bằng C18
Có completed file đi kèm chương trình viết bằng C18 và mô phỏng trên Proteus
chúc vui!
my email: hung.rocket42@gmail.com

pucapuca123 06-10-2011 11:27 PM

Trích:

Nguyên văn bởi rocket42 (Post 50456)
Bài viết cơ sở về lập trình ngắt INT trong PIC18
Cách viết chương trình điều khiển ngắt bằng C18
Có completed file đi kèm chương trình viết bằng C18 và mô phỏng trên Proteus
chúc vui!
my email: hung.rocket42@gmail.com

mình vẫn chưa thực sự hiểu lém về cách ngắt trong PIC18.nó có ngắt ưu tiên mức cao và thấp là sao?
khi nào thì ưu tiên mức cao và khi nào thì ưu tiên mức thấp(với ngắt timer thì là mức cao hay thấp)
vì mình mới dùng PIC 16 nên ko có phân cấp ngắt,tất cả ngắt bình đẳng và đều về địa chỉ 0x04.nên khi chuyển sang PIC18 có đôi chút bỡ ngỡ,mong bạn chỉ giáo dùm.
cám ơn!

rocket42 07-10-2011 05:21 PM

1 Attachment(s)
Ngắt ưu tiên thấp trong Pic18 là chương trình ngắt được lưu bắt đầu ở địa chỉ 0x18.
Ngắt ưu tiên cao trong thì chương trình ngắt được lưu bắt đầu ở địa chỉ 0x08. Tức là khi xảy ra ngắt thì con trỏ chương trình sẽ nhảy tới địa chỉ này và thực hiện lệnh.
ngắt ưu tiên cao khác so với ngắt ưu tiên thấp là khi đang thực hiện chương trình ngắt ưu tiên thấp mà xảy ra ngắt ưu tiên cao thì nó sẽ nhảy tới thực hiện chương trình ngắt ưu tiên cao. Sau khi thực hiện xong ngắt ưu tiên thấp nó sẽ trở lại hoàn thành chương trình ngắt ưu tiên thấp đang thực hiện dở.
Nhưng điều ngược lại ko được thực hiện khi đang có chương trình ngắt ưu tiên cao đang thực hiện thì nó sẽ ko bị ngắt bởi bất cứ loại ngắt nào khác. Trừ RESET (nhưng đây ko phải là ngắt)
Trong Pic18 thì mức ưu tiên ngắt có thể cài đặt cho từng loại ngắt cụ thể bằng set các bit trong thanh ghi điều khiển ngắt tương ứng. bạn có thể xem chi tiết các thanh ghi trong datasheet của loại Pic mà bạn dùng
Bạn có thể xem hình minh họa tôi gửi kèm để hiểu rõ về nó
Để xem cách lập trình ngắt trong Pic18 bằng C18 như thế nào bạn có thể xem tài liệu tiếng việt tôi đã viết xong và gửi lên diễn đàn:
http://www.picvietnam.com/forum/showthread.php?t=11338
chúc vui!!!

tannhatrang 13-10-2011 12:36 PM

Anh Rocket41 nhớ chế tạo tên lửa để bắn mấy thằng Kựa nhé

rocket42 13-10-2011 04:34 PM

Thanks!
R cũng ko khoái mấy thằng tàu lắm. R sẽ gắng hết khả năng

delta21 13-10-2011 05:02 PM

anh rocket42 có chương trình mẫu ADC nào ko??.Em mới chuyển qua viết PIC 18 bằng mplab C18 nên hơi hụt (tại lúc trước em viết bằng HT pic)

rocket42 14-10-2011 09:08 AM

Đợi vài hôm nữa bạn nhé
R đang có cái đồ án sắp phải báo cáo nên chưa ngồi viết module này. bạn gửi email cho mình khi nào có mình sẽ mail trực tiếp cho
OK! chúc vui

thuytv03 06-10-2012 12:36 AM

Trích:

Nguyên văn bởi rocket42 (Post 50456)
Bài viết cơ sở về lập trình ngắt INT trong PIC18
Cách viết chương trình điều khiển ngắt bằng C18
Có completed file đi kèm chương trình viết bằng C18 và mô phỏng trên Proteus
chúc vui!
my email: hung.rocket42@gmail.com

các anh chị. trong 1 chương trình em muốn dùng cả 3 ngắt ngoài, chưa xét tới mức ưu tiên ngắt. e sẽ khai báo chương trình ngắt như thế nào ạ? Trước em code bằng ngôn ngữ ASM cho 8051 thì vs mỗi 1 ngắt có 1 vector ngắt tương ứng vs ngắt đó, chỉ cần viết ctrinh ngắt ở vị trí đó là được.
Em cảm ơn.

hieufbivn 09-11-2013 05:16 PM

Chào bạn ! Hiện tôi đang tìm hiểu PIC8F2550 thì thấy rằng chân INT0 ưu tiên mức cao, còn tiếp theo là INT1, INT2, tuy nhiên bạn có thể làm khác tùy vào ứng dụng mà bạn chọn bit cho phép nào ưu tiên ! Thông tin chi tiết thì bạn nên xem hướng dẫn của Datasheet vì tùy vào loại PIC nữa !


Múi giờ GMT. Hiện tại là 01:59 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam