![]() |
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. |
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 |
bạn có thể gợi ý cho mỉnh về code này dc kg ạ!!
mình cảm ơn. |
Trích:
Code:
if(!RB4) {chống nảy , viết code........}; Code:
while(RB4) ; // chờ cho qua mức 1 Code:
if(RB4) {delay_ms(10);while(RB4);delay_ms(10); // chống nảy |
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. |
Trích:
|
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 |
Trích:
Code:
main() 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 |
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?? |
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 |
hic hic to rat muon biet mong moi nguoi giup do cam on moi nguoi rat nhieu
!! |
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
|
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 :D |
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. |
Trích:
|
mọi người cho em hỏi
tai sao khi thiết lập adc thì ta phải sử dụng ngắt
và ngắt đó để làm j ta nên viết j trong chương trinh ngắt em mới học nên còn yếu kém lắm mong các anh chỉ dạy cho |
hi
Mục đích ở đây là kiểm soát khi nào thì quá trình chuyển đổi đã hoàn tất, thì tiến hành update giá trị. Như vậy đảm bảo được tính logic và độ chính xác hơn. nhưng mình nghĩ cũng không bắt buộc phải sử dụng ngắt khi sử dụng adc, đó cũng chỉ là một cách lựa chọn. Ta vẫn có thể update giá trị bằng cách hỏi vòng, cụ thể đó là kiểm tra trạng thái của bit GODONE. Bit này bằng 1 thì bắt đầu chuyển đổi ADC, bằng 0 khi chuyển đổi đã hoàn thành. Bạn có thể xem trong datasheet có nói rõ về điều này. Thân. |
Múi giờ GMT. Hiện tại là 04:49 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