PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 25-08-2009, 10:43 PM   #1
hongquyen
Đệ tử 4 túi
 
hongquyen's Avatar
 
Tham gia ngày: Jun 2007
Bài gửi: 74
:
Question hỏi về ngắt INT_RB ???

em có 1 vấn đề mong mọi nguời giải đáp giúp ạ (viết trên CCS-pic 887)

1. trong chương em muốn dùng ngắt #INT_RB vậy khi vào trình phục ngắt của ngắt này, thì có cách nào để phân biệt đuợc pin nào đã thay đổi mức logic không ạ, vì mỗi lần một trong 4 pin của portb thay đổi mức logic thì đều xảy ra ngắt ???

2. giả sử trong chuơng trình của em dùng pin 4 của port B và dùng ngắt #INT_RB. giả sử ban đầu pin 4 này có mức logic 0 vậy muốn tạo ra một ngắt thì pin 4 phải chuyển lên mức logic 1 , và khi muốn vào lại ngắt này thì bắt buộc pin 4 phải chuyển xuống mức logic 0 có đúng không ạ???.

em chưa rõ hai vấn đề này, mong mọi nguời giúp em với ạ

em cảm ơn.
hongquyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-08-2009, 06:39 PM   #2
minhsondaklak
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 96
:
1. Phải dùng code kiểm tra từng chân thôi, code này đặt trong ngắt
2. Đúng là như vậy, có thay đổi là có ngắt
__________________
minhsondaklak@yahoo.com
minhsondaklak vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-08-2009, 09:10 PM   #3
hongquyen
Đệ tử 4 túi
 
hongquyen's Avatar
 
Tham gia ngày: Jun 2007
Bài gửi: 74
:
bạn có thể gợi ý cho mỉnh về code này dc kg ạ!!

mình cảm ơn.
hongquyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-08-2009, 10:25 PM   #4
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Trích:
Nguyên văn bởi hongquyen View Post
em có 1 vấn đề mong mọi nguời giải đáp giúp ạ (viết trên CCS-pic 887)

1. trong chương em muốn dùng ngắt #INT_RB vậy khi vào trình phục ngắt của ngắt này, thì có cách nào để phân biệt đuợc pin nào đã thay đổi mức logic không ạ, vì mỗi lần một trong 4 pin của portb thay đổi mức logic thì đều xảy ra ngắt ???

2. giả sử trong chuơng trình của em dùng pin 4 của port B và dùng ngắt #INT_RB. giả sử ban đầu pin 4 này có mức logic 0 vậy muốn tạo ra một ngắt thì pin 4 phải chuyển lên mức logic 1 , và khi muốn vào lại ngắt này thì bắt buộc pin 4 phải chuyển xuống mức logic 0 có đúng không ạ???.

em chưa rõ hai vấn đề này, mong mọi nguời giúp em với ạ

em cảm ơn.
1) khi đã khai báo ngắt RB thì 1 trong 4 chân RB4-Rb7 xuống mức 0(hoặc lên mức 1 , tui hay dùng tích cực mức 0 ) thì có ngắt . Vô trình ngắt , u kiểm tra từng chân
Code:
if(!RB4) {chống nảy , viết code........};
if(!RB5) {chống nảy , viết code........};
if(!RB6) {chống nảy , viết code........};
if(!RB7) {chống nảy , viết code........};
2) đúng roy , khi RB4 lên mức 1 --> có ngắt , u vô trình ngắt , dùng phần mềm để chờ cho RB4 về lại mức 0 . Cái ni dễ thui . vô trình ngắt u dùng
Code:
while(RB4) ; // chờ cho qua mức 1
         viết code.....
Nhưng có 1 điều thực tế là , khi u nhấn nút , RB4 về mức 1 ngay , nhưng sau đó là lên mức 0 , roy lại về mức 1 , cứ lặp lại dao động như thế khoảng 10ms thì mới về mức 1 hẳn . Ng ta gọi đây là nảy phím khi nhấn . Khi thả phím ra cũng thế , cũng có dao động cơ . Do đó , ng ta cần thêm delay giữa mối lần nhấn nhả , để thoát qua dao động này . Cụ thể , như sau
Code:
if(RB4) {delay_ms(10);while(RB4);delay_ms(10); // chống nảy
            ..........viết code vô chỗ này............
          };
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-08-2009, 10:47 PM   #5
hongquyen
Đệ tử 4 túi
 
hongquyen's Avatar
 
Tham gia ngày: Jun 2007
Bài gửi: 74
:
cảm ơn anh Mr.Bi nhiều nhiều nhé, nhờ anh mà em biết thêm nhiểu điều vè PIC. mong anh luôn giữ "lửa" nhiệt tình nhé.

chúc anh sức khỏe.
hongquyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2009, 10:06 PM   #6
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Trích:
Nguyên văn bởi hongquyen View Post
cảm ơn anh Mr.Bi nhiều nhiều nhé, nhờ anh mà em biết thêm nhiểu điều vè PIC. mong anh luôn giữ "lửa" nhiệt tình nhé.

chúc anh sức khỏe.
^^ , lúc trước a học PIC cũng như e , mò mẫm mãi . h thấy mấy đứa mới học , nhớ lại mình lúc xưa thui . Bởi vậy , chỉ nó thì chỉ cụ thể lun . gudlucky
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 03:28 AM   #7
mrbean007
Đệ tử 1 túi
 
Tham gia ngày: Sep 2008
Bài gửi: 19
:
nếu dùng ngắt RB thi mình cần phải khai báo trong hàm main() như vậy phải ko a
set_tris_b(0b11110000); portb=11110000 //khởi tạo chân RBx là mức 1 hay 0 đều đc fai k a
a Bi nhiệt tình wa', ko bít chừng nào nội công mới thâm hậu như vậy đây
thanks nhìu
mrbean007 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 06:55 PM   #8
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Trích:
Nguyên văn bởi mrbean007 View Post
nếu dùng ngắt RB thi mình cần phải khai báo trong hàm main() như vậy phải ko a
set_tris_b(0b11110000); portb=11110000 //khởi tạo chân RBx là mức 1 hay 0 đều đc fai k a
a Bi nhiệt tình wa', ko bít chừng nào nội công mới thâm hậu như vậy đây
thanks nhìu
oh , k phải e . Mún dùng ngắt RB , ta phải khởi tạo trước :
Code:
main()
{...set_tris_B(0xF0); PORTB = 0xF0 ;.... // khởi tạo các chân I/O
  
  // đoạn code khởi tạo ngắt RB 
   enable_interrupts(global);// cho phép các ngắt xảy ra
   enable_interrupts(int_RB);// ngắt RB
   ext_int_edge(H_to_L); // ngắt xảy ra khi 1 trong các chân RB4-Rb7 đảo từ 1-->0
 ....
}
sau đó ta viết hàm ngắt RB như sau :
Code:
#int_RB <--- cái này chính là địa chỉ vector ngắt RB nè , giống như trong ASM là ORG 00xx
void ngat_RB(void)
{.........
}
ta nên viết hàm ngắt trứoc hàm main
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2011, 02:42 PM   #9
121388th
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 12
:
cho e hoi cai em muon dun ngat tai cac chan B4,b5,b6,b7 , de dieu khien 4ecoder nhung ma truong trinh ngat chi co 1#int_rb() lam sao ma biet dc ngat dang o chan nao nhi ??
em muon viet chuong trinh dieu khien 4 dc tuan tu chay moi dong co chay 10 roi dung lai
nhung kho biet phan biet ngat tai cac chan nay kieu j??
121388th vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2011, 02:45 PM   #10
121388th
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 12
:
em lay VD:
#int_rb()// ngat tai chan RB4--RB7
{
clock=0;
clocj++
}
......
chuong trinh chinh
while(clock<=1000)
{
dc1_chay();
}
lam the nao de cho dc2_chay() tiep vongnua dung lai va den dong co 3 vi cac xung kia lai o cac chan B5,B6,B7
121388th vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2011, 03:00 PM   #11
121388th
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 12
:
hic hic to rat muon biet mong moi nguoi giup do cam on moi nguoi rat nhieu
!!
121388th vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-02-2011, 09:03 AM   #12
const_nos
Đệ tử 2 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 33
:
Thắc mắc

mấy anh cho hỏi: có con pic nào có 3 ngắt ngoài độc lập tươg tự như chân RB0 trên con 16f877a. chứ không như chân rb4-rb7 đâu nhé. cám ơn nhiều
const_nos vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-05-2011, 12:45 AM   #13
thoai_phamkhac
Nhập môn đệ tử
 
Tham gia ngày: Jun 2010
Bài gửi: 7
:
anh Mr.Bi ơi , em cũng đang làm chương trình ngắt về RB4-->7 , nhưng em đã dùng delay_ms() trong hàm main rồi , vậy bây giờ muốn chống nẩy trong ngắt thì em nên dùng gì ????
anh có thể giúp em về cái này đc ko
thoai_phamkhac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-06-2011, 01:39 PM   #14
minhpic
Đệ tử 9 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 99
:
Anh muốn khuyên mọi người khôg nên dùng hàm delay trong ngắt, có nhiều cách để chống rung cơ khí hay các nhiễu xung kim bằng phần mềm.
Một ví dụ đơn giản: while(RB4&&t++<1000);
nhu vay kiểm tra t mọi người sẽ biết đấy có phải là một action không.
Còn nếu dùng delay như trên mọi quá trình kiểm tra là không liên tục.
minhpic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-07-2011, 05:51 PM   #15
hangocminh1989
Đệ tử 6 túi
 
Tham gia ngày: Apr 2009
Bài gửi: 132
:
Talking

Trích:
Nguyên văn bởi const_nos View Post
mấy anh cho hỏi: có con pic nào có 3 ngắt ngoài độc lập tươg tự như chân RB0 trên con 16f877a. chứ không như chân rb4-rb7 đâu nhé. cám ơn nhiều
lật datasheet con 16f887 ra, chân rb0-rb7 có thể ngắt tiêng rẽ và điều khiển từng chân mà, không biết đã đáp ứng được yêu cầu của bạn chưa?
hangocminh1989 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam