|
Tài trợ cho PIC Vietnam |
Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua |
|
Ðiều Chỉnh | Xếp Bài |
|
12-10-2008, 08:51 PM | #1 | |
Đệ tử 1 túi
Tham gia ngày: Feb 2008
Bài gửi: 13
: |
Trích:
Code:
#include <16f877a.h> #fuses nowdt,noprotect,put,xt #use delay(clock=4000000) #use fast_io(b) #byte portb=0x06 int8 count=0; #int_timer0 void ngat_tm0(void) { count++; if(count==5) { count=0; portb=0xff; } } void main() { set_tris_b(0); enable_interrupts(global); enable_interrupts(int_timer0); set_timer0(250); setup_timer_0(rtcc_internal|rtcc_div_256); while(1) { portb=0x00; } } thay đổi nội dung bởi: namqn, 12-10-2008 lúc 09:49 PM. |
|
12-10-2008, 09:53 PM | #2 |
Trưởng lão PIC bang
|
Chương trình của bạn vẫn chạy đúng theo những gì bạn viết. Nó vẫn bật các LED ở port B sau một khoảng thời gian chờ, nhưng thời gian LED được bật rất ngắn (vì khi trở về từ ngắt thì lệnh portB = 0x00 ở vòng lặp while (1) của bạn lại xóa port B).
Bạn chưa hiểu được cách thức chương trình của bạn đang chạy. Bạn thử sửa như sau nhé: - Bỏ lệnh portb = 0x00 ở vòng lặp while (1) - Trong chương trình xử lý ngắt, thay lệnh portb = 0xFF thành portb = portb ^ 0xFF; Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
12-10-2008, 11:29 PM | #3 | |
Đệ tử 1 túi
Tham gia ngày: Feb 2008
Bài gửi: 13
: |
Trích:
|
|
|
|